:root{--ink:var(--encre);--ink2:#123f60;--muted:var(--encre-douce);--bg:var(--fond);--surface:#fff;--line:var(--trait);--action:#08aabc;--action2:var(--marque-sombre);--gold:#d6ac58;--danger:var(--alerte);--shadow:0 18px 55px rgba(6,39,67,.09);--shadow2:0 8px 26px rgba(6,39,67,.06);--r1:28px;--r2:20px;--r3:14px}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink)}body{overflow-x:hidden}.cc-app{min-height:100vh;display:grid;grid-template-columns:248px minmax(0,1fr)}.cc-sidebar{position:sticky;top:0;height:100vh;padding:23px 16px;background:linear-gradient(180deg,var(--encre),var(--encre));color:#fff;display:flex;flex-direction:column}.cc-brand{display:flex;align-items:center;gap:11px;padding:0 7px 23px}.cc-brand img{width:42px;height:42px;border-radius:var(--r-carte);background:#fff;padding:4px}.cc-brand div{display:grid}.cc-brand b{font-size:var(--t-carte)}.cc-brand small{font-size:var(--t-micro);letter-spacing:.12em;color:#8ce4e2;font-weight:900}.cc-user-mini{display:flex;align-items:center;gap:10px;padding:13px;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.07);border-radius:var(--r-carte)}.cc-avatar{width:42px;height:42px;display:grid;place-items:center;border-radius:var(--r-carte);background:linear-gradient(135deg,var(--action),var(--action2));font-size:var(--t-second);font-weight:900}.cc-user-mini div:last-child{display:grid;min-width:0}.cc-user-mini b{font-size:var(--t-second);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cc-user-mini small{font-size:var(--t-micro);color:#b9cbd8}.cc-nav{display:grid;gap:6px;margin-top:18px}.cc-nav a,.cc-sidebar-foot a{min-height:48px;padding:0 14px;border-radius:var(--r-carte);color:var(--trait);text-decoration:none;display:flex;align-items:center;gap:12px;font-size:var(--t-second);font-weight:800}.cc-nav a i,.cc-sidebar-foot a i{width:18px;text-align:center}.cc-nav a.active{background:rgba(255,255,255,.12);color:#fff;box-shadow:inset 3px 0 0 var(--gold)}.cc-sidebar-foot{margin-top:auto}.cc-main{min-width:0}.cc-topbar{position:sticky;top:0;z-index:100;min-height:72px;padding:0 clamp(14px,3vw,34px);display:flex;align-items:center;justify-content:flex-end;background:rgba(255,255,255,.9);border-bottom:1px solid rgba(220,231,237,.9);backdrop-filter:blur(18px)}.cc-mobile-brand{display:none}.cc-top-actions{display:flex;align-items:center;gap:8px}.cc-search-client,.cc-icon-btn,.cc-avatar-btn{min-height:42px;border:1px solid var(--line);border-radius:var(--r-carte);background:#fff;color:var(--ink);display:inline-flex;align-items:center;justify-content:center;text-decoration:none;box-shadow:var(--ombre)}.cc-search-client{padding:0 14px;gap:8px;font-size:var(--t-micro);font-weight:900}.cc-search-client i{color:var(--action)}.cc-icon-btn,.cc-avatar-btn{width:42px;padding:0;cursor:pointer}.cc-icon-btn{background:var(--ink);color:#fff;border-color:transparent}.cc-avatar-btn span{width:28px;height:28px;border-radius:var(--r-petit);display:grid;place-items:center;background:var(--marque-fond);color:var(--action2);font-size:var(--t-micro);font-weight:900}.cc-workspace{padding:28px clamp(16px,3vw,42px) 90px;outline:none}.cc-view{display:grid;gap:18px;max-width:1320px;margin:0 auto;animation:viewIn .18s ease}.cc-view[hidden]{display:none!important}@keyframes viewIn{from{transform:translateY(5px)}to{transform:none}}
/* V101.588 — l'animation ne fait plus disparaitre le contenu.

   Elle partait d'une opacite de 0,35 et rejouait a CHAQUE rendu : les
   cartes sont dessinees une premiere fois depuis le cache, puis une
   seconde fois avec les donnees fraiches. Le professionnel voyait donc
   la page palir deux fois avant de se stabiliser — le « flou » qu'il a
   signale le 30/08/2026.

   Le glissement suffit a marquer l'arrivee ; l'effacement ne servait
   qu'a masquer une lenteur qui n'existe plus. */.cc-page-head small,.cc-module-head small,.cc-section-title small{font-size:var(--t-micro);letter-spacing:.14em;color:var(--action2);font-weight:950}.cc-page-head h1,.cc-module-head h1{margin:6px 0 4px;font-size:clamp(28px,3.6vw,44px);line-height:1.05}.cc-page-head p,.cc-module-head p{margin:0;color:var(--muted);font-size:var(--t-micro)}.cc-priority{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:24px;align-items:center;padding:clamp(23px,3vw,35px);border-radius:var(--r1);background:linear-gradient(135deg,var(--encre),var(--encre) 58%,var(--marque-sombre));color:#fff;box-shadow:var(--ombre-haute)}.cc-priority small{font-size:var(--t-micro);letter-spacing:.15em;color:#86e5df;font-weight:950}.cc-priority h2{margin:8px 0 7px;font-size:clamp(22px,2.8vw,36px)}.cc-priority p{margin:0;color:var(--trait);font-size:var(--t-micro);line-height:1.65;max-width:700px}.cc-priority button,.cc-module-head button,.cc-form button,.cc-publish-form button{min-height:46px;padding:0 16px;border:0;border-radius:var(--r-carte);background:#fff;color:var(--ink);font-size:var(--t-micro);font-weight:950;cursor:pointer}.cc-module-head{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;padding:clamp(22px,3vw,34px);border:1px solid var(--line);border-radius:var(--r1);background:linear-gradient(145deg,#fff,var(--fond));box-shadow:var(--shadow)}.cc-module-head button{background:var(--ink);color:#fff}.cc-module-head button.secondary{background:var(--marque-fond);color:var(--ink)}.cc-kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.cc-kpis article,.cc-kpis button{min-height:80px;display:flex;align-items:center;gap:12px;padding:15px 17px;border:1px solid var(--line);border-radius:var(--r-carte);background:#fff;color:var(--ink);box-shadow:var(--shadow2);text-align:left}.cc-kpis button{cursor:pointer}.cc-kpis i{width:39px;height:39px;border-radius:var(--r-carte);display:grid;place-items:center;background:var(--marque-fond);color:var(--action2)}.cc-kpis span{display:grid}.cc-kpis b{font-size:var(--t-carte)}.cc-kpis small{font-size:var(--t-micro);color:var(--muted);font-weight:800}.cc-subtabs,.cc-segmented{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;padding:6px;border:1px solid var(--line);border-radius:var(--r-carte);background:var(--marque-fond)}.cc-segmented{grid-template-columns:repeat(3,minmax(0,1fr))}.cc-subtabs button,.cc-segmented button{min-height:43px;border:0;border-radius:var(--r-carte);background:transparent;color:var(--encre-douce);font-size:var(--t-micro);font-weight:900;cursor:pointer}.cc-subtabs button.active,.cc-segmented button.active{background:#fff;color:var(--ink);box-shadow:var(--ombre)}.cc-section-title{padding:3px 2px}.cc-section-title h2{margin:5px 0 0;font-size:var(--t-carte)}.cc-action-list,.cc-card-list{display:grid;gap:10px}.cc-action-item,.cc-card,.cc-empty{padding:16px;border:1px solid var(--line);border-radius:var(--r-carte);background:#fff;box-shadow:var(--shadow2)}.cc-action-item{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:12px;align-items:center;cursor:pointer}.cc-action-item>i:first-child{width:38px;height:38px;border-radius:var(--r-carte);display:grid;place-items:center;background:var(--marque-fond);color:var(--action2)}.cc-action-item b{font-size:var(--t-micro)}.cc-action-item small{display:block;margin-top:3px;color:var(--muted);font-size:var(--t-micro)}.cc-card-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.cc-card h3{margin:0 0 5px;font-size:var(--t-second)}.cc-card p{margin:0;color:var(--muted);font-size:var(--t-micro);line-height:1.6}.cc-toolbar{display:grid;grid-template-columns:minmax(0,1fr) 190px;gap:10px}.cc-toolbar input,.cc-toolbar select,.cc-form input,.cc-publish-form input,.cc-publish-form select,.cc-publish-form textarea{width:100%;min-height:44px;border:1px solid var(--line);border-radius:var(--r-carte);background:#fff;padding:0 13px;color:var(--ink);font:inherit;font-size:var(--t-micro)}.cc-publish-form textarea{padding:13px;resize:vertical}.cc-property-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.cc-property-card{overflow:hidden;border:1px solid var(--line);border-radius:var(--r-carte);background:#fff;box-shadow:var(--shadow2)}.cc-property-card .media{height:150px;background:linear-gradient(135deg,var(--trait),var(--marque-fond));display:grid;place-items:center;color:var(--action2);font-size:var(--t-page)}.cc-property-card .body{padding:14px}.cc-property-card h3{margin:0 0 5px;font-size:var(--t-micro)}.cc-property-card p{margin:0;color:var(--muted);font-size:var(--t-micro)}.cc-property-card strong{display:block;margin-top:10px;font-size:var(--t-second)}.cc-account-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:14px}.cc-panel{padding:20px;border:1px solid var(--line);border-radius:var(--r2);background:#fff;box-shadow:var(--shadow)}.cc-panel-title h2{margin:0 0 4px;font-size:var(--t-carte)}.cc-panel-title p{margin:0;color:var(--muted);font-size:var(--t-micro)}.cc-form{display:grid;gap:12px}.cc-form label,.cc-publish-form label{display:grid;gap:6px;font-size:var(--t-micro);font-weight:900;color:var(--ink2)}.cc-form button,.cc-publish-form button{background:var(--ink);color:#fff}.cc-settings{display:grid;gap:10px;align-content:start}.cc-settings button,.cc-settings a{min-height:72px;padding:12px;border:1px solid var(--line);border-radius:var(--r-carte);background:#fff;color:var(--ink);display:grid;grid-template-columns:auto 1fr;gap:11px;align-items:center;text-align:left;text-decoration:none;cursor:pointer}.cc-settings>*>i{width:38px;height:38px;border-radius:var(--r-carte);display:grid;place-items:center;background:var(--marque-fond);color:var(--action2)}.cc-settings b,.cc-settings small{display:block}.cc-settings b{font-size:var(--t-micro)}.cc-settings small{margin-top:3px;font-size:var(--t-micro);color:var(--muted)}.cc-settings .danger i{background:var(--alerte-fond);color:var(--danger)}.cc-settings .danger b{color:var(--danger)}.cc-publish-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.cc-publish-form .wide{grid-column:1/-1}.cc-form-actions{display:flex;justify-content:flex-end;gap:9px}.cc-form-actions .secondary{background:var(--marque-fond);color:var(--ink)}.cc-empty{text-align:center;padding:30px}.cc-empty i{font-size:var(--t-section);color:var(--action)}.cc-empty h3{margin:10px 0 5px;font-size:var(--t-corps)}.cc-empty p{margin:0;color:var(--muted);font-size:var(--t-micro)}.cc-bottom-nav{display:none}.cc-toast-region{position:fixed;right:16px;bottom:16px;z-index:4000;display:grid;gap:8px}.cc-toast{min-width:260px;max-width:360px;padding:13px 15px;border-radius:var(--r-carte);background:var(--encre);color:#fff;box-shadow:var(--ombre-haute);font-size:var(--t-micro);font-weight:800}.cc-toast.success{background:var(--sur)}.cc-toast.error{background:var(--alerte)}@media(max-width:980px){.cc-app{display:block}.cc-sidebar{display:none}.cc-topbar{justify-content:space-between}.cc-mobile-brand{display:flex;align-items:center;gap:8px}.cc-mobile-brand img{width:34px;height:34px;border-radius:var(--r-carte);background:#fff}.cc-mobile-brand b{font-size:var(--t-corps)}.cc-workspace{padding:22px 16px 92px}.cc-bottom-nav{position:fixed;left:0;right:0;bottom:0;z-index:1200;display:grid;grid-template-columns:repeat(4,1fr);min-height:69px;padding:6px 4px calc(6px + env(safe-area-inset-bottom));background:rgba(255,255,255,.97);border-top:1px solid var(--line);box-shadow:var(--ombre-haute);backdrop-filter:blur(16px)}.cc-bottom-nav a{display:grid;place-items:center;align-content:center;gap:4px;color:#758898;text-decoration:none;font:850 7px/1.1 Manrope,Arial,sans-serif}/* V101.151: aligné sur la barre client (7px). Le pro était à 11px : les libellés y pesaient plus lourd que les icônes, et le passage d'un espace à l'autre donnait une rupture de graisse visible. */.cc-bottom-nav a i{font-size:var(--t-carte)}.cc-bottom-nav a.active{color:var(--action2)}.cc-bottom-nav a.active:after{content:"";width:5px;height:5px;border-radius:50%;background:var(--action)}}@media(max-width:700px){.cc-search-client{width:42px;padding:0}.cc-search-client span{display:none}.cc-priority{grid-template-columns:1fr;padding:22px;border-radius:var(--r-carte)}.cc-priority button{width:100%}.cc-module-head{display:grid;align-items:start;padding:22px;border-radius:var(--r-carte)}.cc-module-head button{width:100%}.cc-kpis{gap:7px}.cc-kpis article,.cc-kpis button{display:grid;text-align:center;padding:11px 7px;gap:6px}.cc-kpis i{margin:auto;width:32px;height:32px}.cc-kpis b{font-size:var(--t-carte)}.cc-kpis small{font-size:var(--t-nano)}.cc-subtabs{overflow-x:auto;grid-template-columns:repeat(4,minmax(82px,1fr))}.cc-card-grid,.cc-property-grid,.cc-account-grid,.cc-publish-form{grid-template-columns:1fr}.cc-toolbar{grid-template-columns:1fr}.cc-publish-form .wide{grid-column:auto}.cc-form-actions{display:grid}.cc-toast-region{left:12px;right:12px;bottom:84px}.cc-toast{min-width:0;max-width:none}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}}/* V25.2.1 — resilient non-blocking boot */
.cc-module-error{
  display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;
  padding:14px 16px;border:1px solid #f1c9c5;border-radius:var(--r-carte);background:var(--fond);color:#8f3f39
}
.cc-module-error[hidden]{display:none!important}
.cc-module-error>i{width:36px;height:36px;border-radius:var(--r-carte);display:grid;place-items:center;background:var(--alerte-fond)}
.cc-module-error h3{margin:0 0 3px;font-size:var(--t-micro)}
.cc-module-error p{margin:0;font-size:var(--t-micro);line-height:1.5}
.cc-module-error button{min-height:36px;padding:0 12px;border:0;border-radius:var(--r-carte);background:#8f3f39;color:#fff;font-size:var(--t-micro);font-weight:900;cursor:pointer}
/* =====================================================================
   V101.747 — LE VOILE PENDANT LE CHARGEMENT DISPARAIT
   =====================================================================

   Le fondateur : « la page Mes biens devient floue quelques temps avant
   d'etre normale, je veux le supprimer. »

   Ce n'etait pas un flou mais un `opacity:.55` — a l'oeil, la difference
   n'existe pas : le contenu devient illisible, et l'ecran a l'air casse
   pendant une seconde. Le pire est qu'il s'applique a du contenu DEJA
   AFFICHE : on rend pale ce qui est deja juste, pour annoncer qu'on
   recharge par-dessus.

   Un chargement s'annonce sans abimer ce qu'on lit. Une barre fine en
   haut de la liste dit « ca travaille » et laisse le contenu net —
   c'est ce que fait tout ce qui se veut premium, et c'est ce que le
   navigateur lui-meme fait depuis toujours.

   `pointer-events:none` disparait avec : empecher un clic sur une liste
   parfaitement lisible n'aide personne, et un bouton qui ne repond pas
   est ce que ce journal traque depuis dix versions. */
body[class*="cc-loading-"] .cc-workspace{cursor:progress}
.cc-loading-properties #ccPropertyList,
.cc-loading-missions #ccMissionList,
.cc-loading-reservations #ccReservationList,
.cc-loading-opportunities #ccOpportunityFeed{
  position:relative
}
.cc-loading-properties #ccPropertyList::before,
.cc-loading-missions #ccMissionList::before,
.cc-loading-reservations #ccReservationList::before,
.cc-loading-opportunities #ccOpportunityFeed::before{
  content:"";position:absolute;left:0;right:0;top:-9px;height:3px;border-radius:var(--r-carte);
  background:linear-gradient(90deg,transparent,var(--action),transparent);
  background-size:44% 100%;background-repeat:no-repeat;
  animation:ccChargement 1.15s infinite ease-in-out;z-index:2;pointer-events:none
}
/* V101.753 — LES SQUELETTES.

   Trois cartes grises disent en un instant ce qu'un vide ne dit pas :
   quelque chose arrive, et voici la forme que ca aura. Le balayage est
   LENT et tres pale — un scintillement rapide attire l'oeil sur
   l'attente au lieu de la faire oublier. */
.cc-squelette{display:grid;grid-template-columns:auto minmax(0,1fr);gap:13px;align-items:center;
  padding:16px;border:1px solid var(--line);border-radius:var(--r-carte);background:#fff}
.cc-squelette-media{width:56px;height:56px;border-radius:var(--r-carte)}
.cc-squelette-lignes{display:grid;gap:8px}
.cc-squelette-lignes i{display:block;height:10px;border-radius:var(--r-carte)}
.cc-squelette-media,.cc-squelette-lignes i{
  background:linear-gradient(90deg,var(--marque-fond) 25%,var(--trait) 37%,var(--marque-fond) 63%);
  background-size:400% 100%;animation:ccSquelette 1.6s ease-in-out infinite}
@keyframes ccSquelette{0%{background-position:100% 50%}100%{background-position:0 50%}}
/* Une attente annoncee n'a pas besoin d'etre animee pour qui a demande
   moins de mouvement. */
@media(prefers-reduced-motion:reduce){
  .cc-squelette-media,.cc-squelette-lignes i{animation:none;background:var(--marque-fond)}
}
@keyframes ccChargement{
  0%{background-position:-45% 0}
  100%{background-position:145% 0}
}
@media(max-width:700px){
  .cc-module-error{grid-template-columns:auto 1fr}
  .cc-module-error button{grid-column:1/-1;width:100%}
}
/* V25.2.2 — hard HTML boot failsafe */
.cc-boot-fallback-banner{
  position:fixed;left:50%;bottom:82px;z-index:3900;transform:translateX(-50%);
  width:min(560px,calc(100% - 28px));padding:12px 14px;border:1px solid var(--trait);
  border-radius:var(--r-carte);background:rgba(255,255,255,.97);box-shadow:var(--ombre-haute);
  display:grid;grid-template-columns:auto 1fr;gap:10px;align-items:center;color:var(--ink)
}
.cc-boot-fallback-banner[hidden]{display:none!important}
.cc-boot-fallback-banner>i{
  width:34px;height:34px;border-radius:var(--r-carte);display:grid;place-items:center;
  background:var(--marque-fond);color:var(--action2)
}
.cc-boot-fallback-banner b,.cc-boot-fallback-banner span{display:block}
.cc-boot-fallback-banner b{font-size:var(--t-micro)}
.cc-boot-fallback-banner span{margin-top:2px;font-size:var(--t-micro);color:var(--muted)}
.cc-version-badge{
  position:fixed;
  right:8px;
  top:8px;
  z-index:9999;
  padding:4px 7px;
  border-radius:var(--r-carte);
  background:var(--marque-sombre);
  color:#fff;
  font-size:var(--t-micro);
  font-weight:900;
  letter-spacing:.08em;
  box-shadow:var(--ombre);
}
@media(max-width:700px){
  .cc-version-badge{top:58px;right:8px}
}
/* V25.3.0 — Engine connection and premium publication wizard */
.cc-publish-head{background:linear-gradient(145deg,#fff,var(--fond))}
.cc-publish-promise{
  display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:22px;
  padding:clamp(22px,3vw,34px);border-radius:var(--r-carte);color:#fff;
  background:radial-gradient(circle at 90% 10%,rgba(215,172,88,.24),transparent 28%),linear-gradient(135deg,var(--encre),#0a4265);
  box-shadow:var(--ombre-haute)}
.cc-publish-promise>div:first-child{display:flex;align-items:center;gap:16px}
.cc-publish-promise>div:first-child>i{width:52px;height:52px;border-radius:var(--r-carte);display:grid;place-items:center;background:rgba(255,255,255,.11);color:#f5cc72;font-size:var(--t-section)}
.cc-publish-promise small{font-size:var(--t-micro);letter-spacing:.14em;color:#83e4df;font-weight:950}
.cc-publish-promise h2{margin:6px 0;font-size:clamp(21px,2.6vw,34px)}
.cc-publish-promise p{margin:0;color:var(--trait);font-size:var(--t-micro);line-height:1.65;max-width:720px}
.cc-live-score{
  --score:15;position:relative;width:102px;height:102px;border-radius:50%;
  background:conic-gradient(#22c7c8 calc(var(--score)*1%),rgba(255,255,255,.13) 0);
  display:grid;place-content:center;text-align:center
}
.cc-live-score:before{content:"";position:absolute;inset:8px;border-radius:50%;background:var(--encre)}
.cc-live-score>*{position:relative}.cc-live-score span,.cc-live-score small{font-size:var(--t-micro);color:var(--trait)}.cc-live-score b{font-size:var(--t-carte)}
.cc-wizard{padding:clamp(18px,2.5vw,28px);border:1px solid var(--line);border-radius:var(--r-carte);background:#fff;box-shadow:var(--shadow)}
.cc-wizard-progress{display:flex;align-items:center;justify-content:center;max-width:880px;margin:0 auto 28px}
.cc-wizard-progress button{border:0;background:transparent;color:#8b9aa7;display:grid;justify-items:center;gap:5px;font-size:var(--t-micro);font-weight:900;cursor:pointer}
.cc-wizard-progress button b{width:31px;height:31px;border-radius:50%;display:grid;place-items:center;background:var(--marque-fond)}
.cc-wizard-progress button.active{color:var(--ink)}.cc-wizard-progress button.active b{background:linear-gradient(135deg,var(--action),var(--action2));color:#fff}
.cc-wizard-progress button.done b{background:var(--sur-fond);color:#12805f}
.cc-wizard-progress>i{height:2px;flex:1;background:var(--sur-fond);margin:0 8px}
.cc-wizard-layout{display:grid;grid-template-columns:minmax(0,1fr) 290px;gap:20px;align-items:start}
.cc-wizard-main{min-width:0}
.cc-step-intro{text-align:center;margin-bottom:22px}.cc-step-intro small{font-size:var(--t-micro);letter-spacing:.14em;color:var(--action2);font-weight:950}
.cc-step-intro h2{margin:6px 0 4px;font-size:clamp(20px,2.5vw,30px)}.cc-step-intro p{margin:0;color:var(--muted);font-size:var(--t-micro)}
.cc-choice-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}
.cc-choice-grid button{position:relative;min-height:90px;padding:15px;border:1px solid var(--line);border-radius:var(--r-carte);background:#fff;color:var(--ink);display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:12px;text-align:left;cursor:pointer}
.cc-choice-grid button>i{grid-row:1/3;width:44px;height:44px;border-radius:var(--r-carte);display:grid;place-items:center;background:var(--marque-fond);color:var(--action2);font-size:var(--t-carte)}
.cc-choice-grid button b{font-size:var(--t-micro);align-self:end}.cc-choice-grid button small{font-size:var(--t-micro);color:var(--muted)}
.cc-choice-grid button.active{border-color:var(--action);box-shadow:var(--ombre);transform:translateY(-1px)}
.cc-choice-grid button.active:after{content:"✓";position:absolute;right:10px;top:10px;width:21px;height:21px;border-radius:50%;display:grid;place-items:center;background:var(--action);color:#fff;font-size:var(--t-micro);font-weight:900}
.cc-wizard-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}
.cc-wizard-fields label{display:grid;gap:6px}.cc-wizard-fields label>span,.cc-field-caption{font-size:var(--t-micro);font-weight:900;color:var(--ink2)}
.cc-wizard-fields input,.cc-wizard-fields select,.cc-wizard-fields textarea{
  width:100%;min-height:48px;border:1px solid var(--line);border-radius:var(--r-carte);background:#fff;padding:0 13px;color:var(--ink);font:inherit;font-size:var(--t-micro);outline:0
}
.cc-wizard-fields textarea{padding:13px;resize:vertical}.cc-wizard-fields input:focus,.cc-wizard-fields select:focus,.cc-wizard-fields textarea:focus{border-color:var(--action);box-shadow:0 0 0 4px rgba(8,170,188,.1)}
.cc-wizard-fields .wide{grid-column:1/-1}.cc-wizard-fields label>small{font-size:var(--t-micro);color:var(--muted);text-align:right}
.cc-amenities{display:flex;flex-wrap:wrap;gap:7px;margin-top:7px}.cc-amenities button{min-height:34px;padding:0 11px;border:1px solid var(--line);border-radius:var(--r-carte);background:#fff;color:var(--ink);font-size:var(--t-micro);font-weight:850;cursor:pointer}.cc-amenities button.active{background:var(--marque-fond);border-color:#a9e3e7;color:var(--action2)}
.cc-money-field{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;border:1px solid var(--line);border-radius:var(--r-carte);overflow:hidden}.cc-money-field input{border:0!important;box-shadow:none!important}.cc-money-field b{padding:0 13px;font-size:var(--t-micro);color:var(--muted)}
.cc-media-drop{min-height:130px;border:1.5px dashed var(--trait)!important;border-radius:var(--r-carte)!important;background:var(--fond)!important;display:grid!important;place-items:center!important;align-content:center!important;text-align:center!important;padding:20px!important;cursor:pointer}.cc-media-drop>i{font-size:var(--t-section);color:var(--action)}.cc-media-drop>b{font-size:var(--t-micro)}.cc-media-drop>small{font-size:var(--t-micro);color:var(--muted)}
.cc-media-preview{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.cc-media-preview article{position:relative;height:100px;border-radius:var(--r-carte);overflow:hidden;background:var(--marque-fond)}.cc-media-preview img{width:100%;height:100%;object-fit:cover}.cc-media-preview button{position:absolute;right:6px;top:6px;width:26px;height:26px;border:0;border-radius:var(--r-petit);background:rgba(5,34,58,.8);color:#fff;cursor:pointer}.cc-media-preview span{position:absolute;left:6px;bottom:6px;padding:4px 7px;border-radius:var(--r-carte);background:var(--action);color:#fff;font-size:var(--t-nano);font-weight:900}
.cc-publish-review{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.cc-publish-review article{padding:13px;border:1px solid var(--line);border-radius:var(--r-carte);background:var(--fond)}.cc-publish-review span,.cc-publish-review b{display:block}.cc-publish-review span{font-size:var(--t-micro);color:var(--muted)}.cc-publish-review b{margin-top:4px;font-size:var(--t-micro)}
.cc-confirm-line{display:flex;gap:10px;align-items:flex-start;margin-top:16px;font-size:var(--t-micro);line-height:1.5}.cc-confirm-line input{margin-top:2px}
.cc-publish-status{min-height:20px;margin-top:10px;font-size:var(--t-micro);font-weight:800;color:var(--action2)}
.cc-wizard-actions{display:grid;grid-template-columns:auto 1fr auto auto;gap:9px;align-items:center;margin-top:24px;padding-top:16px;border-top:1px solid var(--line)}
.cc-wizard-actions button{min-height:44px;padding:0 15px;border:0;border-radius:var(--r-carte);background:var(--ink);color:#fff;font-size:var(--t-micro);font-weight:900;cursor:pointer}.cc-wizard-actions button.secondary{background:var(--marque-fond);color:var(--ink)}
.cc-live-preview{position:sticky;top:90px;padding:16px;border-radius:var(--r-carte);background:linear-gradient(180deg,var(--encre),var(--encre));color:#fff;box-shadow:var(--ombre-haute)}
.cc-live-preview>small{font-size:var(--t-micro);letter-spacing:.13em;color:#83e4df;font-weight:950}.cc-preview-card{overflow:hidden;margin-top:11px;border-radius:var(--r-carte);background:#fff;color:var(--ink)}
.cc-preview-media{height:155px;background:linear-gradient(135deg,var(--trait),var(--fond));display:grid;place-items:center;align-content:center;color:var(--action2);gap:6px}.cc-preview-media img{width:100%;height:100%;object-fit:cover}.cc-preview-media span{font-size:var(--t-micro)}
.cc-preview-body{padding:13px}.cc-preview-body>span{display:inline-block;padding:4px 7px;border-radius:var(--r-carte);background:var(--marque-fond);color:var(--action2);font-size:var(--t-nano);font-weight:900}.cc-preview-body h3{margin:8px 0 4px;font-size:var(--t-second)}.cc-preview-body p{margin:0;color:var(--muted);font-size:var(--t-micro)}.cc-preview-body b{display:block;margin:9px 0;font-size:var(--t-micro)}.cc-preview-body small{display:block;color:var(--muted);font-size:var(--t-micro);line-height:1.5}
.cc-quality-advice{display:flex;gap:8px;margin-top:12px;padding:11px;border-radius:var(--r-carte);background:rgba(255,255,255,.08)}.cc-quality-advice i{color:#f5cc72}.cc-quality-advice p{margin:0;color:var(--trait);font-size:var(--t-micro);line-height:1.55}
.cc-mission-card{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;align-items:center}.cc-mission-priority{display:inline-block;margin-bottom:7px;padding:4px 7px;border-radius:var(--r-carte);background:var(--marque-fond);color:var(--action2);font-size:var(--t-nano);font-weight:900}.cc-mission-actions{display:flex;gap:7px}.cc-mission-actions button{min-height:36px;padding:0 11px;border:0;border-radius:var(--r-carte);background:var(--ink);color:#fff;font-size:var(--t-micro);font-weight:900;cursor:pointer}.cc-mission-actions button.secondary{background:var(--marque-fond);color:var(--ink)}.cc-mission-done{font-size:var(--t-micro);color:#16805e;font-weight:900}
@media(max-width:900px){.cc-wizard-layout{grid-template-columns:1fr}.cc-live-preview{position:static}}
@media(max-width:700px){
  .cc-publish-promise{grid-template-columns:1fr}.cc-live-score{width:86px;height:86px}
  .cc-wizard-progress{overflow-x:auto;justify-content:flex-start;padding-bottom:6px}.cc-wizard-progress button{min-width:58px}.cc-wizard-progress>i{min-width:22px}
  .cc-choice-grid,.cc-wizard-fields,.cc-publish-review{grid-template-columns:1fr}.cc-wizard-fields .wide{grid-column:auto}
  .cc-media-preview{grid-template-columns:repeat(2,minmax(0,1fr))}
  .cc-wizard-actions{grid-template-columns:1fr}.cc-wizard-actions>span{display:none}.cc-wizard-actions button{width:100%}
  .cc-mission-card{grid-template-columns:1fr}.cc-mission-actions{display:grid;grid-template-columns:1fr 1fr}
}
/* V25.3.1 — Aura native integration */
.cc-aura-native{
  padding:20px;border:1px solid var(--line);border-radius:var(--r-carte);background:linear-gradient(145deg,#fff,var(--fond));
  box-shadow:var(--shadow2)
}
.cc-aura-native-head{display:flex;align-items:flex-end;justify-content:space-between;gap:18px}
.cc-aura-native-head small{font-size:var(--t-micro);letter-spacing:.14em;color:var(--action2);font-weight:950}
.cc-aura-native-head h2{margin:5px 0 4px;font-size:var(--t-section)}
.cc-aura-native-head p{margin:0;color:var(--muted);font-size:var(--t-micro)}
.cc-aura-native-head>div:last-child{display:flex;gap:8px}
.cc-aura-native-head button{min-height:40px;padding:0 13px;border:0;border-radius:var(--r-carte);background:var(--ink);color:#fff;font-size:var(--t-micro);font-weight:900;cursor:pointer}
.cc-aura-native-head button.secondary{background:var(--marque-fond);color:var(--ink)}
.cc-aura-native-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:15px}
.cc-aura-native-grid button{display:grid;grid-template-columns:auto 1fr;gap:10px;align-items:center;padding:13px;border:1px solid var(--line);border-radius:var(--r-carte);background:#fff;color:var(--ink);text-align:left;cursor:pointer}
.cc-aura-native-grid button>i{width:38px;height:38px;border-radius:var(--r-carte);display:grid;place-items:center;background:var(--marque-fond);color:var(--action2)}
.cc-aura-native-grid b,.cc-aura-native-grid small{display:block}.cc-aura-native-grid b{font-size:var(--t-micro)}.cc-aura-native-grid small{margin-top:2px;color:var(--muted);font-size:var(--t-micro)}
#yiAuraConversationTrigger,#yiAuraStudioTrigger{display:none!important}
.yi-aura-conversation-panel,.yi-aura-studio-panel{z-index:2600!important}
.yi-aura-conversation-backdrop,.yi-aura-studio-backdrop{z-index:2500!important}
@media(max-width:700px){
  .cc-aura-native-head{display:grid;align-items:start}
  .cc-aura-native-head>div:last-child{display:grid;grid-template-columns:1fr 1fr}
  .cc-aura-native-grid{grid-template-columns:1fr}
}
/* V25.3.2 — Native protected reservations + client intelligence */
.cc-reservation-intelligence{
  display:flex;align-items:center;justify-content:space-between;gap:18px;padding:18px 20px;
  border:1px solid var(--trait);border-radius:var(--r-carte);background:linear-gradient(135deg,var(--fond),#fff)
}
.cc-reservation-intelligence small{font-size:var(--t-micro);letter-spacing:.13em;color:var(--action2);font-weight:950}
.cc-reservation-intelligence h2{margin:5px 0 3px;font-size:var(--t-carte)}.cc-reservation-intelligence p{margin:0;color:var(--muted);font-size:var(--t-micro)}
.cc-reservation-intelligence button{min-height:40px;padding:0 13px;border:0;border-radius:var(--r-carte);background:var(--ink);color:#fff;font-size:var(--t-micro);font-weight:900;cursor:pointer;white-space:nowrap}
.cc-reservation-intelligence[data-tone="urgent"]{border-color:#f0d5b1;background:linear-gradient(135deg,var(--attention-fond),#fff)}
.cc-reservation-intelligence[data-tone="success"]{border-color:var(--trait);background:linear-gradient(135deg,var(--fond),#fff)}
.cc-reservation-native-host{min-height:120px}
.cc-reservation-native-host .yi-res-grid{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:13px!important}
.cc-reservation-native-host .yi-res-card{margin:0!important;border-radius:var(--r-carte)!important;box-shadow:var(--ombre-haute)!important}
.cc-reservation-history-card{display:grid;grid-template-columns:minmax(0,1fr) minmax(180px,.45fr);gap:16px;align-items:center}
.cc-history-status{display:inline-block;margin-bottom:6px;padding:4px 7px;border-radius:var(--r-carte);background:var(--marque-fond);color:var(--ink2);font-size:var(--t-nano);font-weight:900}
.cc-reservation-history-card>small{color:var(--muted);font-size:var(--t-micro);line-height:1.55}
@media(max-width:900px){.cc-reservation-native-host .yi-res-grid{grid-template-columns:1fr!important}}
@media(max-width:700px){
  .cc-reservation-intelligence{display:grid}.cc-reservation-intelligence button{width:100%}
  .cc-reservation-history-card{grid-template-columns:1fr}
}
/* V25.3.3 — Intelligent property cockpit */
.cc-property-intelligence{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:18px 20px;border:1px solid var(--trait);border-radius:var(--r-carte);background:linear-gradient(135deg,var(--fond),#fff)}
.cc-property-intelligence small{font-size:var(--t-micro);letter-spacing:.13em;color:var(--action2);font-weight:950}.cc-property-intelligence h2{margin:5px 0 3px;font-size:var(--t-carte)}.cc-property-intelligence p{margin:0;color:var(--muted);font-size:var(--t-micro)}
.cc-property-intelligence button{min-height:40px;padding:0 13px;border:0;border-radius:var(--r-carte);background:var(--ink);color:#fff;font-size:var(--t-micro);font-weight:900;cursor:pointer;white-space:nowrap}
.cc-property-cockpit{overflow:hidden}.cc-property-cockpit .media{position:relative;min-height:165px}.cc-property-cockpit .media img{width:100%;height:100%;object-fit:cover;position:absolute;inset:0}
.cc-property-state{position:absolute;top:10px;left:10px;padding:5px 8px;border-radius:var(--r-carte);font-size:var(--t-nano);font-weight:950;backdrop-filter:blur(8px)}.cc-property-state.available{background:rgba(231,252,243,.92);color:var(--sur)}.cc-property-state.attention{background:rgba(255,245,224,.94);color:var(--attention)}.cc-property-state.pending{background:rgba(255,236,224,.94);color:var(--alerte)}
.cc-property-card-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.cc-property-card-head>span{font-size:var(--t-micro);color:var(--muted)}.cc-quality-pill{padding:5px 7px;border-radius:var(--r-carte);background:var(--marque-fond);color:var(--action2);font-size:var(--t-nano)}
.cc-property-signals{display:flex;flex-wrap:wrap;gap:7px;margin-top:11px}.cc-property-signals span{padding:6px 8px;border-radius:var(--r-petit);background:var(--fond);color:var(--ink2);font-size:var(--t-micro)}.cc-property-signals i{margin-right:5px;color:var(--action2)}
.cc-property-recommendation{display:flex;gap:8px;align-items:center;margin-top:10px;padding:10px;border-radius:var(--r-carte);background:linear-gradient(135deg,var(--encre),#0a4265);color:#fff}.cc-property-recommendation>i{color:#f5cc72}.cc-property-recommendation small,.cc-property-recommendation b{display:block}.cc-property-recommendation small{font-size:var(--t-nano);letter-spacing:.12em;color:#83e4df}.cc-property-recommendation b{margin-top:2px;font-size:var(--t-micro)}
/* V101.544 — la rangee d'actions respire.

   Deux colonnes egales coupaient « Annuler la reservation » en plein
   milieu : le bouton le plus lourd de consequence etait le seul
   illisible. Les boutons se placent maintenant librement, celui de la
   disponibilite reste compact, et le libelle peut tenir sur deux
   lignes plutot que d'etre tronque. */
.cc-property-actions{display:flex;flex-wrap:wrap;gap:7px;margin-top:10px;min-width:0}
.cc-property-actions button{flex:1 1 auto;min-width:120px;min-height:36px;padding:6px 10px;border:0;border-radius:var(--r-petit);background:var(--ink);color:#fff;font-size:var(--t-micro);font-weight:900;line-height:1.25;cursor:pointer;white-space:normal}
/* V101.582 — « Annuler la réservation » tient dans sa carte.

   Il prenait toute la largeur avec un `min-width` hérité de la règle
   générale : sur une carte étroite, le bouton dépassait du cadre. Il
   garde sa ligne entière, mais peut désormais rétrécir avec elle. */
.cc-property-actions button.cc-liberer{
  min-width:0;max-width:100%;box-sizing:border-box;overflow-wrap:anywhere;
}
.cc-property-actions button.secondary{background:var(--marque-fond);color:var(--ink)}
@media(max-width:700px){.cc-property-intelligence{display:grid}.cc-property-intelligence button{width:100%}}
/* V25.3.4 — Unified Action Center */
.cc-action-intelligence{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:18px;align-items:center;padding:20px;border-radius:var(--r-carte);background:radial-gradient(circle at 92% 0,rgba(40,205,198,.17),transparent 35%),linear-gradient(135deg,var(--encre),#0a3d60);color:#fff;box-shadow:var(--ombre-haute)}
.cc-action-intelligence small{font-size:var(--t-micro);letter-spacing:.14em;color:#83e4df;font-weight:950}.cc-action-intelligence h2{margin:5px 0 4px;font-size:var(--t-carte)}.cc-action-intelligence p{margin:0;color:var(--trait);font-size:var(--t-micro);line-height:1.55}
.cc-action-intelligence>div:last-child{display:flex;align-items:center;gap:9px}.cc-action-intelligence>div:last-child>span{font-size:var(--t-carte);font-weight:950}.cc-action-intelligence button{min-height:38px;padding:0 12px;border:1px solid rgba(255,255,255,.15);border-radius:var(--r-carte);background:rgba(255,255,255,.1);color:#fff;font-size:var(--t-micro);font-weight:900;cursor:pointer}
.cc-action-lanes{display:flex;gap:7px;overflow-x:auto}.cc-action-lanes button{min-height:35px;padding:0 11px;border:1px solid var(--line);border-radius:var(--r-carte);background:#fff;color:var(--ink2);font-size:var(--t-micro);font-weight:900;white-space:nowrap;cursor:pointer}.cc-action-lanes button.active{background:var(--ink);border-color:var(--ink);color:#fff}
.cc-action-card{grid-template-columns:auto minmax(0,1fr) auto!important}.cc-action-rank{width:34px;height:34px;border-radius:var(--r-carte);display:grid;place-items:center;background:var(--marque-fond);color:var(--action2);font-size:var(--t-micro);font-weight:950}.cc-action-main{min-width:0}
.cc-action-meta{display:flex;align-items:center;gap:7px;margin-bottom:5px}.cc-action-meta span{padding:4px 7px;border-radius:var(--r-carte);background:var(--marque-fond);color:var(--ink2);font-size:var(--t-nano);font-weight:900}.cc-action-meta b{font-size:var(--t-micro);color:var(--action2)}
.cc-action-why{display:flex;gap:6px;align-items:flex-start;margin-top:8px;padding:8px 9px;border-radius:var(--r-petit);background:var(--fond);color:var(--muted);font-size:var(--t-nano);line-height:1.5}.cc-action-why i{color:var(--action2);margin-top:1px}
.cc-action-card[data-lane="reservation"] .cc-action-rank{background:var(--attention-fond);color:var(--attention)}.cc-action-card[data-lane="opportunity"] .cc-action-rank{background:var(--sur-fond);color:#13775e}
@media(max-width:700px){.cc-action-intelligence{grid-template-columns:1fr}.cc-action-intelligence>div:last-child{justify-content:space-between}.cc-action-card{grid-template-columns:auto 1fr!important}.cc-action-card .cc-mission-actions{grid-column:1/-1}}
/* V25.3.5 — Premium adaptive experience */
:root{--font-premium:"Manrope","Inter",ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
html,body,button,input,select,textarea{font-family:var(--font-premium)!important}
body{font-weight:500;letter-spacing:-.005em}
h1,h2,h3,h4,b,strong{letter-spacing:-.025em}
button,a,input,select,textarea{font-synthesis:none}
select{
  appearance:none!important;-webkit-appearance:none!important;
  background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="10" height="7" viewBox="0 0 10 7"><path d="M1 1l4 4 4-4" stroke="%23082f52" stroke-width="1.6" fill="none" stroke-linecap="round" stroke-linejoin="round"/></svg>')!important;
  background-repeat:no-repeat!important;background-position:right 15px center!important;background-size:10px 7px!important;
  padding-right:38px!important;cursor:pointer
}
.cc-category-select-wrap select{background-image:none!important}
select:hover{border-color:var(--trait)!important}
select:focus{border-color:var(--action)!important;box-shadow:0 0 0 4px rgba(8,170,188,.1)!important}
option{font-family:var(--font-premium);background:#fff;color:var(--ink)}

.cc-adaptive-block{padding:17px;border:1px solid var(--trait);border-radius:var(--r-carte);background:linear-gradient(145deg,var(--fond),#fff)}
.cc-adaptive-head{display:flex;align-items:center;gap:10px;margin-bottom:14px}
.cc-adaptive-head>i{width:38px;height:38px;border-radius:var(--r-carte);display:grid;place-items:center;background:linear-gradient(135deg,var(--encre),#0a496a);color:#f5cc72}
.cc-adaptive-head b,.cc-adaptive-head small{display:block}.cc-adaptive-head b{font-size:var(--t-micro)}.cc-adaptive-head small{margin-top:2px;color:var(--muted);font-size:var(--t-micro)}
.cc-adaptive-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.cc-adaptive-grid>[hidden],[data-price-field][hidden]{display:none!important}
.cc-adaptive-grid label{animation:ccAdaptiveIn .2s ease}
@keyframes ccAdaptiveIn{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}

.cc-account-head{background:radial-gradient(circle at 92% 0,rgba(8,170,188,.10),transparent 32%),linear-gradient(145deg,#fff,var(--fond))}
.cc-account-trust{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:20px;padding:22px;border-radius:var(--r-carte);background:linear-gradient(135deg,var(--encre),#0a4265);color:#fff;box-shadow:var(--ombre-haute)}
.cc-trust-score{--score:20;position:relative;width:96px;height:96px;border-radius:50%;display:grid;place-content:center;text-align:center;background:conic-gradient(#28cec6 calc(var(--score)*1%),rgba(255,255,255,.12) 0)}
.cc-trust-score:before{content:"";position:absolute;inset:8px;border-radius:50%;background:var(--encre)}.cc-trust-score>*{position:relative}
.cc-trust-score span,.cc-trust-score small{font-size:var(--t-nano);color:var(--trait)}.cc-trust-score b{font-size:var(--t-carte)}
.cc-account-trust>div:nth-child(2)>small{font-size:var(--t-micro);letter-spacing:.14em;color:#82e5df;font-weight:900}.cc-account-trust h2{margin:5px 0 4px;font-size:var(--t-section)}.cc-account-trust p{margin:0;color:var(--trait);font-size:var(--t-micro);line-height:1.55}
.cc-account-trust>button{min-height:42px;padding:0 14px;border:0;border-radius:var(--r-carte);background:#fff;color:var(--ink);font-size:var(--t-micro);font-weight:900;cursor:pointer;white-space:nowrap}

.cc-account-tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;padding:6px;border:1px solid var(--line);border-radius:var(--r-carte);background:var(--marque-fond)}
.cc-account-tabs button{min-height:44px;border:0;border-radius:var(--r-carte);background:transparent;color:var(--encre-douce);font-size:var(--t-micro);font-weight:900;cursor:pointer}
.cc-account-tabs button i{margin-right:6px}.cc-account-tabs button.active{background:#fff;color:var(--ink);box-shadow:var(--ombre)}
.cc-account-panel[hidden]{display:none!important}.cc-account-panel{animation:viewIn .18s ease}
.cc-account-form{display:grid;gap:18px}.cc-panel-title>small{font-size:var(--t-micro);letter-spacing:.13em;color:var(--action2);font-weight:900}
.cc-profile-avatar-editor{display:flex;align-items:center;gap:13px;padding:13px;border-radius:var(--r-carte);background:var(--fond)}
.cc-profile-avatar-large{width:58px;height:58px;border-radius:var(--r-carte);display:grid;place-items:center;background:linear-gradient(135deg,var(--action),var(--action2));color:#fff;font-size:var(--t-second);font-weight:900}
.cc-profile-avatar-editor b,.cc-profile-avatar-editor small{display:block}.cc-profile-avatar-editor b{font-size:var(--t-second)}.cc-profile-avatar-editor small{margin-top:3px;color:var(--muted);font-size:var(--t-micro)}
.cc-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.cc-form-grid label{display:grid;gap:6px}.cc-form-grid label>span{font-size:var(--t-micro);font-weight:900;color:var(--ink2)}
.cc-form-grid input,.cc-form-grid select,.cc-form-grid textarea{width:100%;min-height:47px;border:1px solid var(--line);border-radius:var(--r-carte);background:#fff;padding:0 13px;color:var(--ink);font-size:var(--t-micro);outline:0}
.cc-form-grid textarea{padding:13px;resize:vertical}.cc-form-grid input:focus,.cc-form-grid textarea:focus{border-color:var(--action);box-shadow:0 0 0 4px rgba(8,170,188,.1)}
.cc-form-grid .wide{grid-column:1/-1}.cc-form-grid label>small{text-align:right;color:var(--muted);font-size:var(--t-micro)}
.cc-account-two-columns{display:grid;grid-template-columns:1.1fr .9fr;gap:14px}
.cc-verification-list{display:grid;gap:9px;margin-top:16px}.cc-verification-list article,.cc-security-list article{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;padding:12px;border:1px solid var(--line);border-radius:var(--r-carte);background:var(--surface)}
.cc-verification-list article>i,.cc-security-list article>i{width:37px;height:37px;border-radius:var(--r-carte);display:grid;place-items:center;background:var(--marque-fond);color:var(--action2)}
.cc-verification-list b,.cc-verification-list small,.cc-security-list b,.cc-security-list small{display:block}.cc-verification-list b,.cc-security-list b{font-size:var(--t-micro)}.cc-verification-list small,.cc-security-list small{margin-top:2px;color:var(--muted);font-size:var(--t-micro)}
.cc-verification-list em{font-style:normal;padding:5px 7px;border-radius:var(--r-carte);background:var(--marque-fond);color:var(--encre-douce);font-size:var(--t-nano);font-weight:900}.cc-verification-list em.verified{background:var(--sur-fond);color:var(--sur)}
.cc-trust-guidelines ul{display:grid;gap:10px;margin:16px 0 0;padding:0;list-style:none}.cc-trust-guidelines li{position:relative;padding-left:25px;color:var(--ink2);font-size:var(--t-micro);line-height:1.55}.cc-trust-guidelines li:before{content:"✓";position:absolute;left:0;top:0;width:17px;height:17px;border-radius:50%;display:grid;place-items:center;background:var(--sur-fond);color:var(--sur);font-size:var(--t-micro);font-weight:900}
.cc-preference-list{display:grid;gap:10px;align-content:start}.cc-preference-list>label{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px;border:1px solid var(--line);border-radius:var(--r-carte);background:var(--surface)}.cc-preference-list b,.cc-preference-list small{display:block}.cc-preference-list b{font-size:var(--t-micro)}.cc-preference-list small{margin-top:2px;color:var(--muted);font-size:var(--t-micro)}
.cc-preference-list input[type="checkbox"]{appearance:none;width:40px;height:23px;border-radius:var(--r-carte);background:var(--trait);position:relative;cursor:pointer;transition:.2s}.cc-preference-list input[type="checkbox"]:after{content:"";position:absolute;width:17px;height:17px;left:3px;top:3px;border-radius:50%;background:#fff;box-shadow:var(--ombre);transition:.2s}.cc-preference-list input[type="checkbox"]:checked{background:var(--action)}.cc-preference-list input[type="checkbox"]:checked:after{transform:translateX(17px)}
.cc-security-list{display:grid;gap:9px;align-content:start}.cc-security-list .cc-panel-title{margin-bottom:7px}

@media(max-width:900px){.cc-account-two-columns{grid-template-columns:1fr}}
@media(max-width:700px){
  .cc-adaptive-grid,.cc-form-grid{grid-template-columns:1fr}.cc-form-grid .wide{grid-column:auto}
  .cc-account-trust{grid-template-columns:auto 1fr}.cc-account-trust>button{grid-column:1/-1;width:100%}
  .cc-trust-score{width:82px;height:82px}
  .cc-account-tabs{grid-template-columns:repeat(4,minmax(75px,1fr));overflow-x:auto}.cc-account-tabs button{display:grid;place-content:center;gap:3px}.cc-account-tabs button i{margin:0}
}

/* V100 restructuring — simplicity / utility / efficiency / beauty */
.cc-home-site{display:grid!important;place-items:center;text-decoration:none}.yf-pro-home-actions{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:10px}.yf-pro-home-actions button{min-height:72px;padding:13px 15px;border:1px solid var(--line);border-radius:var(--r-carte);background:#fff;color:var(--ink);display:grid;grid-template-columns:auto 1fr;align-items:center;gap:11px;text-align:left;cursor:pointer}.yf-pro-home-actions button.primary{background:linear-gradient(135deg,var(--encre),#0a4265);color:#fff;border-color:transparent}.yf-pro-home-actions button>i{width:38px;height:38px;border-radius:var(--r-carte);display:grid;place-items:center;background:var(--marque-fond);color:var(--action2)}.yf-pro-home-actions button.primary>i{background:rgba(255,255,255,.12);color:#83e4df}.yf-pro-home-actions b,.yf-pro-home-actions small{display:block}.yf-pro-home-actions b{font-size:var(--t-micro)}.yf-pro-home-actions small{margin-top:3px;font-size:var(--t-micro);color:var(--muted)}.yf-pro-home-actions .primary small{color:var(--trait)}.yf-pro-task{width:100%;min-height:58px;padding:10px 12px;border:0;border-bottom:1px solid var(--line);background:transparent;color:var(--ink);display:grid;grid-template-columns:auto 1fr auto;gap:11px;align-items:center;text-align:left;cursor:pointer}.yf-pro-task:last-child{border-bottom:0}.yf-pro-task>i:first-child{width:36px;height:36px;border-radius:var(--r-carte);display:grid;place-items:center;background:var(--marque-fond);color:var(--action2)}.yf-pro-task b,.yf-pro-task small{display:block}.yf-pro-task b{font-size:var(--t-micro)}.yf-pro-task small{margin-top:3px;font-size:var(--t-micro);color:var(--muted)}.yf-pro-pulse-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.yf-pro-pulse-grid article{padding:13px;border-radius:var(--r-carte);background:var(--fond);text-align:center}.yf-pro-pulse-grid b,.yf-pro-pulse-grid span{display:block}.yf-pro-pulse-grid b{font-size:var(--t-carte);color:var(--ink)}.yf-pro-pulse-grid span{font-size:var(--t-micro);color:var(--muted);margin-top:3px}.yf-pro-empty button{margin-top:10px;min-height:38px;border:0;border-radius:var(--r-carte);padding:0 12px;background:var(--ink);color:#fff;font-size:var(--t-micro);font-weight:900;cursor:pointer}.cc-category-compact{max-width:620px;margin:0 auto}.cc-category-compact label{display:grid;gap:7px}.cc-category-compact label>span{font-size:var(--t-micro);font-weight:900;color:var(--ink2)}.cc-category-select-wrap{position:relative}.cc-category-select-wrap>i:first-child{position:absolute;left:15px;top:50%;transform:translateY(-50%);z-index:2;color:var(--action2);pointer-events:none}.cc-category-select-wrap select{width:100%;min-height:54px;padding:0 45px;border:1px solid var(--line);border-radius:var(--r-carte);background:#fff;color:var(--ink);font:850 12px Manrope,Poppins,sans-serif;appearance:none;outline:0}.cc-category-select-wrap select:focus{border-color:var(--action);box-shadow:0 0 0 4px rgba(8,170,188,.1)}.cc-category-chevron{position:absolute;right:15px;top:50%;transform:translateY(-50%);color:var(--muted);pointer-events:none}.cc-category-compact p{margin:8px 2px 0;color:var(--muted);font-size:var(--t-micro);line-height:1.5}.cc-property-category-tabs button{white-space:nowrap}
@media(max-width:700px){.yf-pro-home-actions{grid-template-columns:1fr 1fr}.yf-pro-home-actions button.primary{grid-column:1/-1}.yf-pro-pulse-grid{grid-template-columns:1fr 1fr}.cc-publish-head{padding:17px!important}.cc-publish-promise{padding:18px;border-radius:var(--r-carte)}.cc-publish-promise>div:first-child>i{display:none}.cc-publish-promise h2{font-size:var(--t-carte)}.cc-publish-promise p{font-size:var(--t-micro)}.cc-wizard{padding:15px;border-radius:var(--r-carte)}.cc-wizard-progress{margin-bottom:18px}.cc-wizard-progress button span{display:none}.cc-wizard-progress button{min-width:36px!important}.cc-wizard-progress>i{min-width:12px!important;margin:0 3px}.cc-step-intro{text-align:left;margin-bottom:16px}.cc-step-intro h2{font-size:var(--t-section)}.cc-live-preview{display:none}.cc-category-compact{max-width:none}.cc-category-select-wrap select{min-height:50px;font-size:var(--t-second)}.cc-top-actions{gap:6px}.cc-home-site{width:40px;height:40px}}

/* V101.11 — assistant intelligent de publication */
.cc-publish-assistant{display:grid;gap:16px}
.cc-assistant-message{display:flex;gap:12px;align-items:flex-start;padding:16px;border-radius:var(--r-carte);background:var(--fond);border:1px solid var(--trait)}
.cc-assistant-message i{margin-top:2px;color:var(--action)}
.cc-assistant-message p{margin:0;font-weight:750;line-height:1.5;color:var(--ink)}
.cc-publish-assistant textarea{width:100%;resize:vertical}
.cc-assistant-analyze{justify-self:start}
.cc-assistant-result{min-height:0;padding:0 2px;color:var(--ink)}
.cc-assistant-result:empty{display:none}
.cc-assistant-result b{display:block;margin-bottom:6px}
.cc-assistant-result p{margin:0 0 5px;line-height:1.55}
.cc-assistant-result small{color:var(--muted);line-height:1.45}
.cc-whatsapp-gate{display:flex;align-items:center;gap:12px;padding:14px 16px;margin-bottom:16px;border:1px solid var(--trait);border-radius:var(--r-carte);background:var(--fond)}
.cc-whatsapp-gate i{font-size:var(--t-section);color:var(--encre-douce)}
.cc-whatsapp-gate p{display:grid;gap:2px;margin:0}.cc-whatsapp-gate span{font-size:var(--t-micro);color:var(--muted)}
.cc-whatsapp-gate.is-valid{border-color:var(--trait);background:var(--fond)}.cc-whatsapp-gate.is-valid i{color:#15966a}
@media(max-width:760px){.cc-wizard-progress button span{display:none}.cc-wizard-progress>i{margin:0 3px}.cc-assistant-analyze{width:100%}}

/* V101.12 — Conversational Publishing Assistant */
.cc-publish-chat{display:grid;gap:10px;max-height:360px;overflow:auto;padding:4px 2px 8px;scrollbar-width:thin}
.cc-chat-bubble{display:flex;gap:10px;align-items:flex-start;width:min(88%,680px);padding:14px 16px;border-radius:var(--r-carte);line-height:1.5}
.cc-chat-bubble p{margin:0;font-weight:700;color:var(--ink)}
.cc-chat-bubble.is-yafoye{justify-self:start;background:var(--fond);border:1px solid var(--trait);border-bottom-left-radius:7px}
.cc-chat-bubble.is-yafoye i{margin-top:3px;color:var(--action)}
.cc-chat-bubble.is-pro{justify-self:end;background:var(--encre);border:1px solid var(--encre);border-bottom-right-radius:7px}
.cc-chat-bubble.is-pro p{color:#fff;font-weight:650}
.cc-publish-composer{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:end;padding:8px;border:1px solid var(--trait);border-radius:var(--r-carte);background:#fff;box-shadow:var(--ombre)}
.cc-publish-composer textarea{border:0!important;outline:0!important;box-shadow:none!important;background:transparent!important;min-height:68px;padding:9px 10px!important}
.cc-publish-composer .cc-assistant-analyze{align-self:end;justify-self:end;margin:0;width:auto;min-height:44px;border-radius:var(--r-carte)}
@media(max-width:600px){.cc-chat-bubble{width:94%}.cc-publish-composer{grid-template-columns:1fr auto}.cc-publish-composer .cc-assistant-analyze{width:44px;padding:0}.cc-publish-composer .cc-assistant-analyze span{display:none}}

/* V101.14 — one clear action during the publishing conversation */
.cc-assistant-analyze{min-width:190px;justify-content:center;gap:9px}
.cc-assistant-analyze span{white-space:nowrap}
.cc-wizard-step[data-wizard-step="2"]:not([hidden])~.cc-wizard-actions #ccWizardNext[hidden]{display:none!important}
@media(max-width:640px){.cc-assistant-analyze{min-width:0;width:auto;padding-inline:15px}.cc-assistant-analyze span{font-size:var(--t-micro)}}


/* V101.15 — Publication Essential: la mécanique interne reste cachée. */
.yf-essential-publish-progress{
  display:none!important;
}

/* Donne plus d'air au contenu quand le stepper technique disparaît. */
.cc-publish-wizard .cc-wizard-body,
.cc-publish-workspace{
  padding-top:clamp(8px,1.2vw,18px);
}

/* CTA premium Yafoye : une seule action claire, intégrée à l'expérience. */
#ccPublishAssistantAnalyze.yf-premium-assistant-cta{
  appearance:none!important;
  -webkit-appearance:none!important;
  border:0!important;
  outline:0!important;
  min-width:285px!important;
  min-height:64px!important;
  padding:9px 12px 9px 10px!important;
  border-radius:var(--r-carte)!important;
  display:inline-grid!important;
  grid-template-columns:42px minmax(0,1fr) 34px!important;
  align-items:center!important;
  gap:10px!important;
  background:
    linear-gradient(135deg,rgba(255,255,255,.10),rgba(255,255,255,0) 46%),
    linear-gradient(135deg,var(--encre) 0%,var(--encre) 58%,#065c70 100%)!important;
  color:#fff!important;
  box-shadow:var(--ombre)!important;
  cursor:pointer!important;
  transition:transform .18s ease,box-shadow .18s ease,filter .18s ease!important;
  font:inherit!important;
  text-align:left!important;
}
#ccPublishAssistantAnalyze.yf-premium-assistant-cta:hover{
  transform:translateY(-2px)!important;
  box-shadow:var(--ombre-haute)!important;
  filter:saturate(1.04)!important;
}
#ccPublishAssistantAnalyze.yf-premium-assistant-cta:active{
  transform:translateY(0)!important;
}
#ccPublishAssistantAnalyze.yf-premium-assistant-cta:focus-visible{
  box-shadow:
    0 0 0 4px rgba(31,211,236,.18),
    0 14px 30px rgba(4,34,63,.24)!important;
}
#ccPublishAssistantAnalyze .yf-cta-icon{
  width:42px!important;
  height:42px!important;
  border-radius:var(--r-carte)!important;
  display:grid!important;
  place-items:center!important;
  color:var(--encre)!important;
  background:linear-gradient(145deg,#83f0ff,#2cd5ee)!important;
  box-shadow:var(--ombre)!important;
  font-size:var(--t-corps)!important;
}
#ccPublishAssistantAnalyze .yf-cta-copy{
  min-width:0!important;
  display:flex!important;
  flex-direction:column!important;
  gap:2px!important;
}
#ccPublishAssistantAnalyze .yf-cta-copy b{
  font-size:var(--t-second)!important;
  line-height:1.2!important;
  font-weight:900!important;
  color:#fff!important;
  letter-spacing:-.01em!important;
}
#ccPublishAssistantAnalyze .yf-cta-copy small{
  display:block!important;
  font-size:var(--t-nano)!important;
  line-height:1.2!important;
  font-weight:700!important;
  color:rgba(255,255,255,.66)!important;
  white-space:nowrap!important;
}
#ccPublishAssistantAnalyze .yf-cta-arrow{
  width:34px!important;
  height:34px!important;
  border-radius:var(--r-carte)!important;
  display:grid!important;
  place-items:center!important;
  background:rgba(255,255,255,.10)!important;
  color:#fff!important;
}
#ccPublishAssistantAnalyze[hidden]{
  display:none!important;
}

/* Le composer devient une seule unité visuelle, pas textarea + bouton HTML. */
.cc-publish-composer{
  align-items:flex-end!important;
  gap:12px!important;
}
.cc-publish-composer textarea{
  min-height:76px!important;
  border-radius:var(--r-carte)!important;
  border:1px solid rgba(8,67,101,.14)!important;
  box-shadow:var(--ombre)!important;
}
.cc-publish-composer textarea:focus{
  border-color:rgba(0,169,197,.45)!important;
  box-shadow:0 0 0 4px rgba(21,195,218,.08)!important;
  outline:none!important;
}

@media(max-width:760px){
  .cc-publish-composer{
    display:grid!important;
    grid-template-columns:1fr!important;
  }
  #ccPublishAssistantAnalyze.yf-premium-assistant-cta{
    width:100%!important;
    min-width:0!important;
  }
}

/* V101.16 — localisation nationale + langage local */
#ccAdCommuneWrap[hidden]{display:none!important}.cc-wizard-fields label>small{display:block;margin-top:6px;color:var(--encre-douce);font-size:var(--t-micro);line-height:1.4}

/* V101.17 — rich smart amenities */
.cc-amenities-help{display:block;margin:5px 0 12px;color:var(--encre-douce);font-size:var(--t-nano);line-height:1.45}
#ccAmenities.cc-amenities{display:flex;flex-wrap:wrap;gap:8px;max-height:240px;overflow:auto;padding:3px 3px 8px}
#ccAmenities [data-amenity]{appearance:none;border:1px solid rgba(8,67,101,.13);background:#fff;color:#183b56;border-radius:var(--r-carte);padding:9px 12px;font-size:var(--t-second);font-weight:750;cursor:pointer;transition:.16s ease}
#ccAmenities [data-amenity]:hover{transform:translateY(-1px);border-color:rgba(0,169,197,.38);box-shadow:var(--ombre)}
#ccAmenities [data-amenity].active{background:linear-gradient(135deg,var(--encre),#086a78);border-color:transparent;color:#fff;box-shadow:var(--ombre)}

/* V101.23 — emplacement exact protégé */
.cc-private-location-card{border:1px solid rgba(7,72,104,.13);border-radius:var(--r-carte);padding:15px;background:linear-gradient(180deg,var(--surface),var(--fond));box-shadow:var(--ombre)}
.cc-private-location-head{display:grid;grid-template-columns:42px minmax(0,1fr) auto;align-items:center;gap:11px}
.cc-private-location-icon{width:42px;height:42px;border-radius:var(--r-carte);display:grid;place-items:center;background:linear-gradient(135deg,var(--encre),#086a78);color:#fff}
.cc-private-location-head b{display:block;color:var(--encre);font-size:var(--t-micro);font-weight:900}.cc-private-location-head small{display:block;color:var(--encre-douce);font-size:var(--t-micro);line-height:1.45;margin-top:3px}
.cc-private-badge{display:inline-flex;align-items:center;gap:5px;padding:7px 9px;border-radius:var(--r-carte);background:var(--marque-fond);color:#136272;font-size:var(--t-micro);font-weight:850}
.cc-private-location-fields{display:grid;grid-template-columns:1fr;gap:10px;margin-top:14px}
.cc-private-location-action{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:12px}
#ccCapturePrivateLocation{border:0;border-radius:var(--r-carte);padding:11px 14px;display:inline-flex;align-items:center;gap:8px;background:var(--encre);color:#fff;font:850 12px Poppins,Arial,sans-serif;cursor:pointer;box-shadow:var(--ombre)}
#ccCapturePrivateLocation:hover{transform:translateY(-1px)}#ccCapturePrivateLocation:disabled{opacity:.58;cursor:wait}
#ccPrivateLocationStatus{display:inline-flex;align-items:center;gap:6px;color:#7a8793;font-size:var(--t-nano);font-weight:750}
#ccPrivateLocationStatus.is-ready{color:var(--sur)}
@media(max-width:640px){.cc-private-location-head{grid-template-columns:38px minmax(0,1fr)}.cc-private-badge{grid-column:2;justify-self:start}.cc-private-location-action{display:grid}.cc-private-location-action>*{width:100%}}

/* V101.24 — Conversation et publication premium */
.cc-chat-bubble.is-thinking p{display:flex;align-items:center;gap:8px;color:var(--encre-douce);font-weight:750}.cc-thinking-dots{display:inline-flex;gap:3px}.cc-thinking-dots i{width:5px;height:5px;border-radius:50%;background:currentColor;animation:ccThink 1s infinite ease-in-out}.cc-thinking-dots i:nth-child(2){animation-delay:.14s}.cc-thinking-dots i:nth-child(3){animation-delay:.28s}@keyframes ccThink{0%,70%,100%{transform:translateY(0);opacity:.35}35%{transform:translateY(-4px);opacity:1}}
.cc-publish-progress-overlay{position:fixed;inset:0;z-index:99999;display:grid;place-items:center;padding:18px;background:rgba(2,18,39,.72);backdrop-filter:blur(14px);opacity:0;visibility:hidden;transition:.25s}.cc-publish-progress-overlay.show{opacity:1;visibility:visible}.cc-publish-progress-card{width:min(540px,100%);padding:30px;border-radius:var(--r-carte);background:#fff;box-shadow:var(--ombre-haute);text-align:center}.cc-publish-progress-card>small{display:block;margin:12px 0 6px;color:var(--encre-douce);font-size:var(--t-micro);font-weight:900;letter-spacing:.12em}.cc-publish-progress-card h2{margin:0;color:var(--encre);font:900 23px/1.18 Sora,Manrope,sans-serif}.cc-publish-progress-card>p{margin:8px auto 18px;max-width:410px;color:var(--encre-douce);font-size:var(--t-second);line-height:1.55}.cc-publish-orbit{width:68px;height:68px;margin:auto;border-radius:var(--r-carte);display:grid;place-items:center;background:var(--encre);color:#fff;font-size:var(--t-section);box-shadow:var(--ombre-haute);animation:ccOrbit 1.8s infinite ease-in-out}@keyframes ccOrbit{50%{transform:translateY(-5px) rotate(2deg)}}.cc-publish-progress-track{height:8px;border-radius:var(--r-carte);background:var(--marque-fond);overflow:hidden}.cc-publish-progress-track i{display:block;width:10%;height:100%;border-radius:inherit;background:linear-gradient(90deg,#0a6075,#13a080);transition:width .5s cubic-bezier(.2,.8,.2,1)}#ccPublishProgressPercent{display:block;margin-top:7px;color:var(--encre-douce);font-size:var(--t-micro)}.cc-publish-match-success,.cc-publish-match-watch{margin-top:18px;padding:16px;border-radius:var(--r-carte);background:var(--fond);text-align:left;display:grid;grid-template-columns:30px 1fr;gap:3px 9px;border:1px solid var(--trait)}.cc-publish-match-watch{background:var(--fond);border-color:var(--trait)}.cc-publish-match-success>i,.cc-publish-match-watch>i{grid-row:1/3;width:30px;height:30px;border-radius:var(--r-petit);display:grid;place-items:center;background:var(--sur-fond);color:var(--sur)}.cc-publish-match-watch>i{background:var(--marque-fond);color:var(--encre-douce)}.cc-publish-match-success b,.cc-publish-match-watch b{font-size:var(--t-second);color:var(--encre)}.cc-publish-match-success span,.cc-publish-match-watch span{font-size:var(--t-micro);color:var(--encre-douce);line-height:1.5}.cc-publish-progress-close{margin-top:14px;width:100%;min-height:46px;border:0;border-radius:var(--r-carte);background:var(--encre);color:#fff;font-weight:850;cursor:pointer}
#ccPrivateLocationStatus.is-ready{align-items:flex-start;line-height:1.45}#ccPrivateLocationStatus.is-ready>i{margin-top:3px}#ccPrivateLocationStatus.is-ready b{font-size:var(--t-nano)}#ccPrivateLocationStatus.is-ready small{font-weight:650;color:var(--encre-douce)}

/* V101.27 — Yafoye Premium Conversation UI */
.cc-premium-chat-shell{gap:0!important;border:1px solid rgba(8,53,82,.10);border-radius:var(--r-carte);background:#fff;box-shadow:var(--ombre-haute);overflow:hidden}
.cc-chat-identity{display:flex;align-items:center;gap:11px;padding:15px 17px;border-bottom:1px solid var(--trait);background:linear-gradient(180deg,var(--surface),var(--fond))}
.cc-chat-avatar{width:42px;height:42px;border-radius:var(--r-carte);display:grid;place-items:center;background:linear-gradient(145deg,var(--encre),var(--marque-sombre));color:#fff;font:900 16px Sora,Manrope,sans-serif;box-shadow:var(--ombre)}
.cc-chat-identity>div:nth-child(2){display:grid;gap:1px}.cc-chat-identity b{font-size:var(--t-second);color:var(--encre)}.cc-chat-identity span{font-size:var(--t-nano);color:#7d8e9c;font-weight:700}.cc-chat-identity em{margin-left:auto;font-style:normal;font-size:var(--t-micro);color:var(--encre-douce);font-weight:800;display:flex;align-items:center;gap:6px}.cc-chat-identity em i{width:7px;height:7px;border-radius:50%;background:#25a477;box-shadow:0 0 0 4px rgba(37,164,119,.10)}
.cc-publish-chat{display:flex!important;flex-direction:column!important;gap:17px!important;min-height:220px;max-height:430px!important;overflow:auto!important;padding:20px 18px 22px!important;background:#fff!important;scroll-behavior:smooth}
.cc-chat-bubble{display:block!important;width:min(78%,720px)!important;padding:0!important;background:transparent!important;border:0!important;box-shadow:none!important}
.cc-chat-bubble.is-yafoye{align-self:flex-start!important}.cc-chat-bubble.is-pro{align-self:flex-end!important}
.cc-chat-message>small{display:block;margin:0 0 6px 4px;font-size:var(--t-nano);font-weight:900;letter-spacing:.07em;text-transform:uppercase;color:#8594a1}.cc-chat-bubble.is-pro .cc-chat-message>small{text-align:right;margin-right:4px}
.cc-chat-message>p{margin:0!important;padding:14px 16px!important;border-radius:var(--r-carte)!important;font-size:var(--t-second)!important;line-height:1.62!important;letter-spacing:-.01em!important;font-weight:620!important;white-space:pre-wrap}
.cc-chat-bubble.is-yafoye .cc-chat-message>p{background:var(--fond)!important;border:1px solid var(--trait)!important;color:var(--encre)!important;border-bottom-left-radius:7px!important}
.cc-chat-bubble.is-pro .cc-chat-message>p{background:var(--encre)!important;color:#fff!important;border:1px solid var(--encre)!important;border-bottom-right-radius:7px!important;font-weight:570!important;box-shadow:var(--ombre)!important}
.cc-chat-bubble.is-thinking .cc-chat-message>p{display:flex!important;align-items:center!important;gap:7px!important;width:max-content;max-width:100%;color:var(--encre-douce)!important;padding:12px 15px!important}
.cc-publish-composer{margin:0!important;border:0!important;border-top:1px solid var(--trait)!important;border-radius:0!important;padding:13px 14px!important;background:var(--surface)!important;box-shadow:none!important;grid-template-columns:minmax(0,1fr) auto!important;align-items:end!important}
.cc-publish-composer textarea{min-height:58px!important;max-height:150px!important;padding:12px 13px!important;border:1px solid var(--trait)!important;border-radius:var(--r-carte)!important;background:#fff!important;font-size:var(--t-second)!important;line-height:1.52!important;color:var(--encre)!important;box-shadow:var(--ombre)!important}
.cc-publish-composer textarea::placeholder{color:#9aa8b3!important}
#ccPublishAssistantAnalyze.yf-premium-assistant-cta{min-width:190px!important;min-height:58px!important;border-radius:var(--r-carte)!important;padding:8px 10px!important}
#ccPublishAssistantAnalyze .yf-cta-icon{width:38px!important;height:38px!important;border-radius:var(--r-carte)!important}
#ccPublishAssistantAnalyze .yf-cta-arrow{width:30px!important;height:30px!important}
#ccPublishAssistantResult{margin:0!important;padding:0 16px 14px!important;background:var(--surface)}
@media(max-width:680px){
 .cc-premium-chat-shell{border-radius:var(--r-carte)}
 .cc-chat-identity{padding:12px}.cc-chat-avatar{width:38px;height:38px;border-radius:var(--r-carte)}
 .cc-publish-chat{min-height:240px;max-height:48vh!important;padding:16px 11px 18px!important;gap:15px!important}
 .cc-chat-bubble{width:91%!important}.cc-chat-message>p{font-size:var(--t-second)!important;line-height:1.58!important;padding:13px 14px!important}
 .cc-publish-composer{grid-template-columns:minmax(0,1fr) 50px!important;padding:10px!important}
 .cc-publish-composer textarea{font-size:var(--t-carte)!important;min-height:50px!important;padding:11px!important}
 #ccPublishAssistantAnalyze.yf-premium-assistant-cta{min-width:50px!important;width:50px!important;height:50px!important;min-height:50px!important;padding:0!important;display:grid!important;grid-template-columns:1fr!important;place-items:center!important}
 #ccPublishAssistantAnalyze .yf-cta-copy,#ccPublishAssistantAnalyze .yf-cta-arrow{display:none!important}
 #ccPublishAssistantAnalyze .yf-cta-icon{width:36px!important;height:36px!important}
}
/* V101.31: bandeau d'alerte quand une annonce est en pending_review
   (voir property-publication-builder.js) — style local, pas de dépendance
   à .cc-property-compat qui n'a pas de règle CSS existante. */
.cc-property-needs-completion{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border-radius:var(--r-carte);background:rgba(255,236,224,.6);border:1px solid rgba(163,74,30,.25);margin:8px 0}
.cc-property-needs-completion>div{display:flex;align-items:flex-start;gap:8px}
.cc-property-needs-completion i{color:var(--alerte);margin-top:2px}
.cc-property-needs-completion b{display:block;font-size:var(--t-micro);color:#7a3814}
.cc-property-needs-completion small{display:block;font-size:var(--t-second);color:#8a5a3a;margin-top:2px}
.cc-property-needs-completion button{flex-shrink:0;border:none;background:var(--alerte);color:#fff;font-size:var(--t-second);font-weight:700;padding:7px 12px;border-radius:var(--r-carte);cursor:pointer}
/* V101.32: bouton "+ voir plus" pour la liste d'équipements repliée par défaut */
.cc-amenities-more{min-height:34px;padding:0 12px;border:1px dashed var(--line);border-radius:var(--r-carte);background:transparent;color:var(--action2);font-size:var(--t-micro);font-weight:850;cursor:pointer}
.cc-optional-hint{display:inline;font-weight:700;color:var(--muted);text-transform:none;letter-spacing:normal;font-size:var(--t-micro);margin-left:4px}
/* V101.32: variante du bandeau de fin de publication quand l'annonce
   a besoin d'être complétée avant d'entrer dans le matching */
.cc-publish-needs-completion{border-color:rgba(163,74,30,.3)!important;background:rgba(255,236,224,.35)!important}
.cc-publish-needs-completion i{color:var(--alerte)}
/* V101.33: fusion des 6 étapes en 3 — sous-titres intermédiaires dans une
   même étape, et repli de l'assistant IA en <details> optionnel */
.cc-step-intro-secondary{margin:20px 0 12px;padding-top:16px;border-top:1px solid var(--trait)}
.cc-step-intro-secondary h3{margin:4px 0 3px;font-size:var(--t-corps);color:var(--ink)}
.cc-step-intro-secondary p{margin:0;color:var(--muted);font-size:var(--t-micro)}
.cc-publish-assistant-optional{margin:16px 0 6px;border:1px solid var(--line);border-radius:var(--r-carte);background:var(--fond);overflow:hidden}
.cc-publish-assistant-optional summary{cursor:pointer;list-style:none;padding:13px 15px;font-size:var(--t-micro);font-weight:850;color:var(--action2);display:flex;align-items:center;gap:8px}
.cc-publish-assistant-optional summary::-webkit-details-marker{display:none}
.cc-publish-assistant-optional summary small{font-weight:700;color:var(--muted);text-transform:none;letter-spacing:normal;margin-left:2px}
.cc-publish-assistant-optional[open] summary{border-bottom:1px solid var(--line)}
.cc-publish-assistant-optional .cc-publish-assistant{padding:14px}
/* V101.103: Mes biens — deux onglets (Publiés / À améliorer) au lieu de
   trois, ajustement de la grille segmentée en conséquence. */
#ccPropertyPublishTabs{grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:14px}

/* V101.104: panneaux premium "Voir le besoin" / "Proposer un bien" —
   même langage visuel que les autres panneaux du site (fond flouté,
   carte blanche arrondie, ombre profonde). */
.cc-sheet-backdrop{position:fixed;inset:0;z-index:20500;display:flex;align-items:flex-end;justify-content:center;padding:0;background:rgba(6,29,55,0);backdrop-filter:blur(0px);pointer-events:none;transition:background .26s ease,backdrop-filter .26s ease}
.cc-sheet-backdrop.open{background:rgba(6,29,55,.5);backdrop-filter:blur(6px);pointer-events:auto}
/* V101.933 — LE PANNEAU FERME NE DOIT PLUS EXISTER A L'ECRAN.
   `display:flex` ci-dessus a la meme specificite que la regle
   navigateur pour [hidden], mais vient apres : elle l'emporte. Le
   panneau restait donc dans la page, simplement transparent et
   intransable. Au defilement, sa feuille blanche — translatee hors
   champ mais bien presente — reapparaissait une fraction de seconde
   en bas de l'ecran. C'est le « flash » signale par le fondateur.
   `!important` est ici justifie : il s'agit de rendre a [hidden] le
   sens que le navigateur lui donne, non de gagner une surenchere. */
.cc-sheet-backdrop[hidden]{display:none!important}
.cc-sheet{width:min(560px,100%);max-height:88vh;overflow:auto;background:#fff;border-radius:var(--r-carte) 28px 0 0;padding:26px;box-shadow:var(--ombre-haute);transform:translateY(100%);transition:transform .3s cubic-bezier(.2,.8,.2,1)}
.cc-sheet-backdrop.open .cc-sheet{transform:translateY(0)}
@media(min-width:701px){
  .cc-sheet-backdrop{align-items:center}
  .cc-sheet{border-radius:var(--r-carte);transform:translateY(24px) scale(.98);opacity:0}
  .cc-sheet-backdrop.open .cc-sheet{transform:translateY(0) scale(1);opacity:1;transition:transform .3s cubic-bezier(.2,.8,.2,1),opacity .3s ease}
}
.cc-sheet-close{position:absolute;right:18px;top:18px;width:40px;height:40px;border:0;border-radius:var(--r-carte);background:var(--bg,var(--fond));color:var(--ink);font-size:var(--t-section);cursor:pointer;display:grid;place-items:center}
.cc-sheet-head{padding-right:48px}
.cc-sheet-head span{font-size:var(--t-micro);font-weight:900;letter-spacing:.13em;color:var(--action2)}
.cc-sheet-head h2{margin:7px 0 0;font-size:var(--t-section);color:var(--ink)}
.cc-sheet-loader{display:flex;align-items:center;justify-content:center;gap:8px;padding:60px 0}
.cc-sheet-loader i{width:9px;height:9px;border-radius:50%;background:var(--ink);opacity:.25;animation:ccSheetFade 1.1s ease-in-out infinite}
.cc-sheet-loader i:nth-child(2){animation-delay:.15s}
.cc-sheet-loader i:nth-child(3){animation-delay:.3s}
@keyframes ccSheetFade{0%,80%,100%{opacity:.2;transform:scale(.85)}40%{opacity:1;transform:scale(1)}}
.cc-need-row{display:flex;justify-content:space-between;gap:16px;padding:12px 0;border-bottom:1px solid var(--line)}
.cc-need-row span{color:var(--muted);font-size:var(--t-second);font-weight:800}
.cc-need-row b{text-align:right;font-size:var(--t-second)}
.cc-need-details{margin-top:16px;padding:15px;border-radius:var(--r-carte);background:var(--bg,var(--fond));color:var(--ink);font-size:var(--t-micro);line-height:1.7;white-space:pre-wrap}
.cc-need-client{margin-top:18px;display:flex;align-items:center;gap:12px;padding:13px 15px;border:1px solid var(--line);border-radius:var(--r-carte)}
.cc-need-client i{width:38px;height:38px;border-radius:var(--r-carte);background:var(--marque-fond);color:var(--action2);display:grid;place-items:center}
.cc-need-client b{display:block;font-size:var(--t-micro)}
.cc-need-client small{display:block;color:var(--muted);font-size:var(--t-micro);margin-top:2px}
.cc-need-actions{display:flex;gap:10px;margin-top:18px}
/* V101.549 — « Proposer un bien » passe au bleu sombre de la marque.
   C'est le geste principal de la page : il doit peser autant que
   « Publier mon besoin » cote client. */
.cc-need-actions button{flex:1;min-height:48px;border:0;border-radius:var(--r-carte);font-weight:900;font-size:var(--t-micro);cursor:pointer;background:linear-gradient(135deg,var(--encre),var(--encre));color:#fff}
.cc-need-actions .primary{background:linear-gradient(135deg,var(--encre),var(--marque-sombre));color:#fff}
.cc-need-actions .secondary{background:var(--bg,var(--fond));color:var(--ink)}
.cc-propose-list{display:grid;gap:10px;margin-top:16px}
.cc-propose-option{display:flex;align-items:center;gap:12px;padding:12px;border:1px solid var(--line);border-radius:var(--r-carte);cursor:pointer;background:#fff;text-align:left;width:100%}
.cc-propose-option.active{border-color:var(--marque-sombre);background:var(--marque-fond);box-shadow:0 0 0 2px rgba(8,124,148,.14)}
.cc-propose-option img{width:52px;height:52px;border-radius:var(--r-carte);object-fit:cover;flex:0 0 auto;background:var(--bg,var(--fond))}
.cc-propose-option-body{flex:1;min-width:0}
.cc-propose-option-body b{display:block;font-size:var(--t-micro);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cc-propose-option-body small{display:block;color:var(--muted);font-size:var(--t-micro);margin-top:2px}
.cc-propose-best{display:inline-flex;align-items:center;gap:5px;margin-top:4px;padding:3px 8px;border-radius:var(--r-carte);background:var(--sur-fond);color:var(--sur);font-size:var(--t-micro);font-weight:900}
.cc-propose-message{margin-top:18px}
.cc-propose-message label{display:block;font-size:var(--t-micro);font-weight:900;color:var(--ink2);margin-bottom:6px}
.cc-propose-message textarea{width:100%;min-height:100px;border:1px solid var(--line);border-radius:var(--r-carte);padding:12px 13px;font:inherit;font-size:var(--t-micro);resize:vertical;color:var(--ink)}
.cc-propose-send{width:100%;margin-top:16px;min-height:50px;border:0;border-radius:var(--r-carte);background:linear-gradient(135deg,var(--encre),var(--marque-sombre));color:#fff;font-weight:900;font-size:var(--t-second);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:9px;box-shadow:var(--ombre)}
.cc-propose-send:disabled{opacity:.5;cursor:not-allowed}

/* V101.105: refonte premium des cartes Clients — le texte (6-9px selon
   les éléments) était bien trop petit pour paraître soigné. Même
   langage visuel que les cartes Explorer/Matchs côté client : badge de
   score marqué, titre lisible, actions pleine largeur avec dégradé
   premium sur l'action principale. */
.yf-client-match-card{display:grid!important;grid-template-columns:1fr!important;gap:0!important;padding:0!important;overflow:hidden;border-radius:var(--r-carte)!important}
.yf-client-match-card .cc-action-rank{display:none}
.yf-client-match-card .cc-action-main{padding:20px 20px 4px}
.yf-client-match-card .cc-action-meta{display:inline-flex!important;align-items:center;gap:9px;margin:0 0 14px;padding:8px 14px 8px 8px;border-radius:var(--r-carte);background:linear-gradient(135deg,var(--encre),var(--marque-sombre));width:auto}
.yf-client-match-card .cc-action-meta span{display:none}
.yf-client-match-card .cc-action-meta:before{content:"Compatibilité";font-size:var(--t-nano)!important;font-weight:900;letter-spacing:.06em;color:rgba(255,255,255,.65);text-transform:uppercase;padding-left:6px}
.yf-client-match-card .cc-action-meta b{font-size:var(--t-section)!important;line-height:1;color:#fff;font-weight:900}
.yf-client-match-card h3{margin:0 0 5px!important;font-size:var(--t-carte)!important;color:var(--ink);font-weight:800}
.yf-client-match-card > .cc-action-main > p{font-size:var(--t-second)!important;color:var(--muted);line-height:1.5;margin:0}
.yf-client-match-card .yf-match-property{display:inline-block;margin-top:10px;padding:6px 11px;border-radius:var(--r-carte);background:var(--bg);color:var(--ink2);font-size:var(--t-second);font-weight:800}
.yf-client-match-card .cc-action-why{margin-top:12px!important;padding:11px 13px!important;border-radius:var(--r-carte)!important;background:var(--sur-fond)!important;color:var(--sur)!important;font-size:var(--t-micro)!important;line-height:1.55!important;align-items:flex-start}
.yf-client-match-card .cc-action-why i{color:#0d9c73;margin-top:1px}
.yf-client-match-card .yf-match-compromise{display:flex;gap:7px;align-items:flex-start;margin-top:8px;padding:11px 13px;border-radius:var(--r-carte);background:var(--attention-fond);color:var(--attention);font-size:var(--t-micro);line-height:1.55}
.yf-client-match-card .yf-match-confidence{display:block;margin-top:10px;font-size:var(--t-micro)!important;color:var(--muted)}
.yf-client-match-card .cc-mission-actions{padding:16px 20px 20px;display:grid;grid-template-columns:1fr 1fr;gap:10px}
.yf-client-match-card .cc-mission-actions button{min-height:46px!important;padding:0 14px!important;border-radius:var(--r-carte)!important;font-size:var(--t-micro)!important;font-weight:900;display:flex;align-items:center;justify-content:center}
.yf-client-match-card .cc-mission-actions button:not(.secondary){background:linear-gradient(135deg,var(--encre),var(--marque-sombre))!important;box-shadow:var(--ombre)}
.yf-client-match-card .cc-mission-actions button.secondary{background:var(--bg)!important;color:var(--ink)!important;border:1px solid var(--line)!important}
@media(max-width:520px){.yf-client-match-card .cc-mission-actions{grid-template-columns:1fr}}
/* V101.107: badge de notification sur l'icône "Clients" du menu — reflète
   la somme des onglets Matchs forts + Compatibles. */
.cc-nav-badge{position:absolute;top:2px;left:22px;min-width:16px;height:16px;padding:0 4px;border-radius:var(--r-carte);background:var(--alerte);color:#fff;font:800 9px/16px Manrope,sans-serif;text-align:center}
.cc-nav-badge[hidden]{display:none!important}
.cc-nav a{position:relative}
.cc-bottom-nav a{position:relative}
/* V101.107: badges de compatibilité adaptés au pourcentage, note quand
   le pro choisit un autre bien que celui recommandé par Yafoye Match. */
.cc-propose-tier-excellent{background:var(--sur-fond)!important;color:var(--sur)!important}
.cc-propose-tier-good{background:var(--marque-fond)!important;color:var(--marque-sombre)!important}
.cc-propose-tier-fair{background:var(--attention-fond)!important;color:var(--attention)!important}
.cc-propose-tier-low{background:var(--marque-fond)!important;color:var(--encre-douce)!important}
.cc-propose-note{display:flex;gap:9px;align-items:flex-start;margin-top:12px;padding:11px 13px;border-radius:var(--r-carte);background:var(--attention-fond);color:var(--attention);font-size:var(--t-micro);line-height:1.55}
.cc-propose-note i{margin-top:1px}
/* V101.111: repère "nouveau" sur chaque carte non encore vue — même
   principe que les notifications Facebook (point bleu tant que
   l'élément précis n'a pas été consulté, indépendamment du compteur
   global qui se remet déjà à jour à l'ouverture de l'onglet). */
.yf-client-match-card{position:relative}
.yf-client-match-card.is-new{border:1px solid rgba(8,124,148,.35)!important;box-shadow:var(--ombre)!important}
.cc-new-dot{position:absolute;top:16px;right:16px;width:10px;height:10px;border-radius:50%;background:var(--alerte);box-shadow:0 0 0 3px rgba(224,49,49,.16)}


/* V101.168 — ce que le professionnel percevra, annoncé avant publication. */
.cc-revenu-net{margin-top:12px;padding:13px 15px;border-radius:var(--r-carte);background:var(--sur-fond);border:1px solid var(--trait)}
.cc-revenu-net b{display:block;font:800 13.5px Sora,Manrope,system-ui,sans-serif;color:var(--sur);margin-bottom:4px}
.cc-revenu-net span{display:block;font-size:var(--t-micro);line-height:1.55;color:var(--encre-douce)}

/* V101.173 — gestion des dates indisponibles.
   Sobre à dessein : deux champs et une liste. Un professionnel qui
   bloque ses dates depuis un téléphone veut aller vite, pas naviguer
   entre les mois d'un calendrier graphique. */
.cc-sheet-lead{margin:0 0 16px;font-size:var(--t-second);line-height:1.6;color:var(--encre-douce)}
.cc-dates-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px}
.cc-dates-grid label,.cc-dates-motif{display:block}
.cc-dates-grid span,.cc-dates-motif span{display:block;font-size:var(--t-micro);font-weight:800;margin-bottom:6px;color:var(--encre)}
.cc-dates-grid input,.cc-dates-motif input{width:100%;box-sizing:border-box;min-height:48px;
  border:1px solid var(--trait);border-radius:var(--r-carte);padding:12px 13px;font:600 13px Manrope,system-ui,sans-serif;background:#fff}
.cc-dates-grid input:focus,.cc-dates-motif input:focus{outline:0;border-color:#64cad9;box-shadow:0 0 0 4px rgba(0,212,255,.13)}
.cc-dates-motif{margin-bottom:14px}
.cc-dates-add{width:100%;min-height:50px;border:0;border-radius:var(--r-carte);background:var(--encre);color:#fff;
  font:800 13px Manrope,system-ui,sans-serif;cursor:pointer;transition:.16s}
.cc-dates-add:hover{background:var(--encre)}
.cc-dates-add:disabled{opacity:.55;cursor:not-allowed}
.cc-dates-state{min-height:20px;margin-top:10px;font-size:var(--t-micro);font-weight:700;color:var(--encre-douce)}
.cc-dates-state.bad{color:var(--alerte)}
.cc-dates-title{margin:22px 0 10px;font:800 13px Sora,Manrope,system-ui,sans-serif;color:var(--encre)}
.cc-dates-liste{display:grid;gap:9px}
.cc-dates-item{display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:12px 14px;border:1px solid var(--trait);border-radius:var(--r-carte);background:#fff}
.cc-dates-item.est-reservation{background:var(--marque-fond);border-color:var(--trait)}
.cc-dates-item b{display:block;font:800 12.5px Manrope,system-ui,sans-serif;color:var(--encre)}
.cc-dates-item small{display:block;margin-top:3px;font-size:var(--t-micro);color:var(--encre-douce)}
.cc-dates-item button{width:34px;height:34px;flex:none;border:1px solid var(--trait);background:#fff;
  border-radius:var(--r-carte);color:var(--encre-douce);cursor:pointer}
.cc-dates-item button:hover{color:var(--alerte);border-color:#f0c7c1}
.cc-dates-item i.fa-lock{color:#245d89;font-size:var(--t-second)}
.cc-dates-vide{margin:0;padding:18px;text-align:center;font-size:var(--t-second);color:var(--encre-douce);
  border:1px dashed var(--trait);border-radius:var(--r-carte)}

/* V101.204 — coordonnées de contact du professionnel.
   Le WhatsApp devient obligatoire : sans lui, un client qui a payé sa
   réservation n'a personne à joindre. La mention « obligatoire » est
   explicite plutôt que signalée par un astérisque que personne ne lit. */
.cc-contact-field{display:block;margin-top:14px}
.cc-contact-field > span{display:flex;align-items:center;gap:8px;
  font-size:var(--t-micro);font-weight:800;margin-bottom:7px;color:var(--encre)}
.cc-requis{display:inline-block;padding:2px 8px;border-radius:var(--r-petit);
  background:var(--alerte-fond);color:var(--alerte);font-size:var(--t-nano);font-weight:900;letter-spacing:.3px;text-transform:uppercase}
.cc-contact-field input{width:100%;box-sizing:border-box;min-height:48px;
  border:1px solid var(--trait);border-radius:var(--r-carte);padding:12px 14px;
  font:600 14px Manrope,system-ui,sans-serif;background:#fff}
.cc-contact-field input:focus{outline:0;border-color:#64cad9;box-shadow:0 0 0 4px rgba(0,212,255,.13)}
.cc-contact-field small{display:block;margin-top:6px;font-size:var(--t-micro);line-height:1.55;color:var(--encre-douce)}
.cc-contact-choix{display:flex;align-items:center;gap:10px;margin-top:12px;cursor:pointer}
.cc-contact-choix input{width:19px;height:19px;flex:none;accent-color:var(--encre);cursor:pointer}
.cc-contact-choix span{font-size:var(--t-second);font-weight:700;color:var(--encre)}

/* =====================================================================
   V101.235 — dévoilement progressif du formulaire de publication.

   Les champs en attente ne sont pas simplement cachés : ils
   disparaissent de la mise en page. Un espace vide laissé derrière eux
   ferait croire à un défaut d'affichage.

   L'apparition est brève et sans mouvement latéral — on doit
   comprendre qu'un champ arrive, pas regarder une animation.
   ===================================================================== */
[data-cc-attente="1"]{display:none!important}

[data-cc-attente="0"]{animation:cc-apparait .22s ease both}
@keyframes cc-apparait{
  from{opacity:0;transform:translateY(-4px)}
  to{opacity:1;transform:none}
}
@media (prefers-reduced-motion: reduce){
  [data-cc-attente="0"]{animation:none}
}

/* =====================================================================
   V101.236 — le questionnaire de publication.

   Les champs du formulaire restent dans la page pendant que le
   questionnaire pose ses questions : ils portent la validation, l'envoi
   des photos et le contrôle des coordonnées. On les masque seulement à
   l'affichage — les retirer casserait tout ce qui les alimente.
   ===================================================================== */
[data-cc-questionnaire="1"]{display:none!important}
.cc-publication-questionnaire{margin:4px 0 8px}
.cc-publication-questionnaire[hidden]{display:none!important}

/* Le dévoilement progressif de la V101.235 n'a plus d'objet : le
   questionnaire ne montre qu'une question à la fois. */
[data-cc-attente="1"]{display:block!important}

/* =====================================================================
   V101.240 — le marqueur « PRO » sur la page professionnelle.

   Cette page n'utilise pas le chrome unifié : elle a son propre
   en-tête, et le style de la pastille posé en V101.222 ne l'atteignait
   pas. On le redéclare ici plutôt que de charger toute la feuille du
   chrome — dont le reste entrerait en conflit avec la mise en page de
   cet écran.
   ===================================================================== */
.yf-space-tag{
  display:inline-flex;align-items:center;
  margin-left:7px;padding:3px 7px;border-radius:var(--r-petit);
  background:var(--marque);color:var(--encre);
  font:900 10px/1 Manrope,system-ui,sans-serif;letter-spacing:1.2px;
  vertical-align:middle;
}
.cc-brand .yf-space-tag{font-size:var(--t-nano);padding:2px 6px;margin-left:6px}
@media(max-width:420px){
  .cc-mobile-brand .yf-space-tag{margin-left:5px;padding:3px 6px;font-size:var(--t-nano)}
}

/* =====================================================================
   V101.242 — la confirmation de suppression passe au-dessus.

   Elle s'affichait en z-index 4000, sous la barre de navigation du bas
   (12000) et sous l'en-tête (10000). Sur mobile, elle était donc
   invisible : le professionnel cliquait sur la corbeille, ne voyait
   rien, et neuf secondes plus tard la demande s'annulait d'elle-même.
   D'où « impossible de supprimer une annonce » — alors que le code de
   suppression, lui, fonctionnait.
   ===================================================================== */
.cc-toast-region{z-index:14000!important}
.cc-confirm-toast{
  border:1px solid #f0c9c4;background:#fff;
  box-shadow:var(--ombre-haute);
}
@media(max-width:980px){
  /* Au-dessus de la barre du bas, jamais derrière. */
  .cc-toast-region{bottom:calc(84px + env(safe-area-inset-bottom))!important}
}

/* =====================================================================
   V101.247 — les trois indicateurs de l'accueil.

   Chaque ligne est un bouton, et se voit comme tel : le chevron à
   droite annonce qu'il se passera quelque chose. Un chiffre qui mène
   quelque part sans le montrer se lit comme un chiffre mort.
   ===================================================================== */
.yf-kpi-grid{display:grid;gap:12px;margin:16px 0}
@media(min-width:820px){ .yf-kpi-grid{grid-template-columns:repeat(3,minmax(0,1fr))} }

.yf-kpi{border:1px solid var(--line,var(--trait));border-radius:var(--r-carte);background:#fff;
  padding:15px 16px;box-shadow:var(--ombre)}
.yf-kpi header{display:flex;align-items:center;gap:9px;margin-bottom:11px}
/* V101.255: la même teinte que les autres compteurs. J'avais codé
   var(--marque-fond) et var(--marque-sombre) en dur, alors que le reste du centre de
   commandement lit `--action2` : deux bleus voisins mais distincts sur
   le même écran, ce qui se remarque immédiatement. */
.yf-kpi header i{width:30px;height:30px;flex:none;display:grid;place-items:center;
  border-radius:var(--r-petit);background:var(--marque-fond);color:var(--action2);font-size:var(--t-micro)}
.yf-kpi header h3{margin:0;font:800 13px Sora,Manrope,system-ui,sans-serif;color:var(--encre)}

.yf-kpi-lignes{display:grid;gap:5px}
.yf-kpi-ligne{display:flex;align-items:baseline;gap:9px;width:100%;text-align:left;
  padding:9px 10px;border:0;border-radius:var(--r-carte);background:var(--fond);cursor:pointer;
  transition:.14s;font-family:Manrope,system-ui,sans-serif}
.yf-kpi-ligne:hover{background:var(--marque-fond)}
.yf-kpi-ligne b{flex:none;font-size:var(--t-carte);font-weight:900;color:var(--encre);
  max-width:60%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.yf-kpi-ligne span{flex:1;font-size:var(--t-micro);font-weight:700;color:var(--encre-douce);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.yf-kpi-ligne i{flex:none;font-size:var(--t-nano);color:#b6c6d4;align-self:center}
.yf-kpi-ligne:hover i{color:var(--marque-sombre)}

@media (prefers-reduced-motion: reduce){ .yf-kpi-ligne{transition:none} }

/* =====================================================================
   V101.252 — les indicateurs de Mes biens filtrent la liste.

   Ils remplacent les onglets. Un compteur qui ne montre pas ce qu'il
   compte oblige à chercher soi-même ce qu'il recouvre ; ici, le chiffre
   et son contenu sont le même objet.

   L'état actif doit se voir franchement : sur quatre cartes
   semblables, une nuance de fond ne suffit pas à dire laquelle est
   sélectionnée.
   ===================================================================== */
.cc-kpis-filtres article{cursor:pointer;transition:.16s;border:1px solid transparent}
.cc-kpis-filtres article:hover{border-color:var(--trait);background:var(--fond)}
.cc-kpis-filtres article:focus-visible{outline:2px solid var(--marque);outline-offset:2px}
/* V101.258: la carte active se distingue par son CADRE, pas par sa
   forme. Inverser l'icône en marine plein changeait sa nature — elle
   ne ressemblait plus aux autres, et le groupe perdait son unité.
   Un liseré et un fond légèrement teinté suffisent à dire « celle-ci »
   sans faire d'elle un objet différent. */
.cc-kpis-filtres article.est-actif{
  border-color:var(--encre);
  background:var(--fond);
  box-shadow:var(--ombre);
}
.cc-kpis-filtres article.est-actif b{color:var(--encre)}
.cc-kpis-filtres article.est-actif small{color:var(--encre);font-weight:800}

@media (prefers-reduced-motion: reduce){ .cc-kpis-filtres article{transition:none} }

/* =====================================================================
   V101.258 — les compteurs-filtres sur une seule ligne.

   Une grille de trois colonnes rejetait le quatrième compteur à la
   ligne, isolé sous les autres : il n'avait plus l'air d'appartenir au
   même groupe, et « Biens publiés » — le premier, actif — paraissait
   d'une autre nature.

   Une rangée qui défile horizontalement règle les deux : tous les
   compteurs sont sur le même plan, et le nombre de filtres peut varier
   sans que la mise en page change de forme. Défiler pour voir le
   quatrième est un geste connu ; découvrir un élément orphelin sous
   une grille ne l'est pas.
   ===================================================================== */
.cc-kpis-filtres{
  display:flex!important;
  gap:9px;
  overflow-x:auto;
  padding-bottom:4px;
  scroll-snap-type:x proximity;
  -webkit-overflow-scrolling:touch;
  scrollbar-width:none;
}
.cc-kpis-filtres::-webkit-scrollbar{display:none}

.cc-kpis-filtres article{
  flex:0 0 auto;
  min-width:128px;
  scroll-snap-align:start;
  /* Même boîte pour toutes : c'est la seule façon d'obtenir des
     cartes identiques dont une seule se distingue. */
  box-sizing:border-box;
  margin:0;
}

@media(min-width:900px){
  /* Sur grand écran, tout tient : on répartit au lieu de défiler. */
  .cc-kpis-filtres{overflow-x:visible}
  .cc-kpis-filtres article{flex:1 1 0;min-width:0}
}

/* =====================================================================
   V101.261 — ce qu'il faut améliorer, dit explicitement.

   Un état « à améliorer » sans indication laisse deviner. Le
   professionnel ne corrige rien, et l'annonce reste en l'état — le
   filtre ne sert alors qu'à constater.

   Le bloc reste discret : ce sont des conseils, pas des reproches. On
   annonce aussi le gain, parce qu'un effort dont on connaît le
   résultat se fait plus volontiers.
   ===================================================================== */
.cc-property-conseils{margin:10px 0 2px;padding:12px 14px;
  border:1px solid var(--trait);border-radius:var(--r-carte);background:var(--fond)}
.cc-property-conseils > b{display:flex;align-items:center;gap:7px;margin-bottom:9px;
  font:800 11.5px Manrope,system-ui,sans-serif;color:var(--encre)}
.cc-property-conseils > b i{font-size:var(--t-nano);color:var(--action2)}
.cc-property-conseils ul{margin:0;padding:0;list-style:none;display:grid;gap:8px}
.cc-property-conseils li{display:grid;gap:2px}
.cc-property-conseils li span{font-size:var(--t-micro);font-weight:800;color:var(--encre)}
.cc-property-conseils li small{font-size:var(--t-micro);line-height:1.5;color:#7d8fa0}
.cc-property-conseils em{display:block;margin-top:10px;font-style:normal;
  font-size:var(--t-micro);font-weight:800;color:#087f5b}

/* =====================================================================
   V101.263 — l'état « Réservé » et sa libération.

   La pastille se lisait mal : un texte coloré sur fond translucide,
   posé au-dessus d'une photo, dépend de la photo. On passe donc à un
   fond plein et à du blanc — lisible sur n'importe quelle image, ce
   que la transparence ne permet jamais de garantir.
   ===================================================================== */
.cc-property-state.reserved{
  background:var(--alerte);
  color:#fff;
  backdrop-filter:none;
  box-shadow:var(--ombre);
  letter-spacing:.4px;
}

.cc-liberer{display:inline-flex;align-items:center;gap:7px;min-height:38px;padding:0 13px;
  border:1px solid var(--trait);border-radius:var(--r-carte);background:var(--fond);color:#06627a;
  font:800 11.5px Manrope,system-ui,sans-serif;cursor:pointer;transition:.14s}
.cc-liberer:hover{border-color:var(--marque);background:var(--marque-fond)}
.cc-liberer:disabled{opacity:.5;cursor:not-allowed}
.cc-liberer i{font-size:var(--t-nano)}
@media(max-width:520px){ .cc-liberer span{display:none} }

/* =====================================================================
   V101.270 — le panneau de détail d'une annonce.

   Les cartes montrent une vignette et trois lignes. Pour juger ce
   qu'un client verra, il faut ouvrir — et voir les médias en grand,
   parce que c'est la photo qui décide d'un clic, pas le titre.

   Le panneau glisse depuis le bas sur mobile, comme les autres
   feuilles du produit : un mouvement connu se comprend sans
   l'apprendre.
   ===================================================================== */
.cc-detail-fond{align-items:flex-end!important}
@media(min-width:760px){ .cc-detail-fond{align-items:center!important} }

.cc-detail{position:relative;width:100%;max-width:560px;max-height:92vh;overflow-y:auto;
  background:#fff;border-radius:var(--r-carte) 22px 0 0;
  box-shadow:var(--ombre-haute);
  animation:cc-detail-monte .26s cubic-bezier(.2,.8,.3,1) both}
@media(min-width:760px){
  .cc-detail{border-radius:var(--r-carte);animation:cc-detail-apparait .2s ease both}
}
@keyframes cc-detail-monte{from{transform:translateY(28px);opacity:.6}to{transform:none;opacity:1}}
@keyframes cc-detail-apparait{from{transform:scale(.97);opacity:0}to{transform:none;opacity:1}}
@media (prefers-reduced-motion: reduce){ .cc-detail{animation:none} }

/* V101.271: l'apparence seulement — la position est définie plus bas,
   en `sticky`. Deux règles de position sur le même élément se
   contredisaient : celle-ci le posait en absolu, donc il glissait avec
   le contenu au lieu de rester visible. */
.cc-detail-fermer{
  width:36px;height:36px;border:0;border-radius:50%;cursor:pointer;
  background:rgba(3,27,58,.62);color:#fff;font-size:var(--t-section);line-height:1;
  backdrop-filter:blur(6px)}
.cc-detail-fermer:hover{background:var(--encre)}

/* =====================================================================
   V101.271 — le défilement du panneau de détail.

   Deux défilements se disputaient le même geste : la galerie glisse
   horizontalement, le panneau verticalement. Sur un écran tactile, un
   mouvement en diagonale partait tantôt d'un côté, tantôt de l'autre —
   d'où l'impression de flottement.

   `touch-action` tranche : la galerie ne prend QUE l'horizontal, le
   panneau ne prend QUE le vertical. Chaque geste va à un seul endroit.

   Les médias sont aussi bornés en hauteur : une photo en portrait
   occupait tout l'écran, et il fallait faire défiler pour découvrir
   qu'il y avait du contenu en dessous.
   ===================================================================== */
.cc-detail{
  overscroll-behavior:contain;      /* le geste ne remonte pas à la page */
  -webkit-overflow-scrolling:touch;
  scroll-behavior:smooth;
  touch-action:pan-y;
}

.cc-detail-media{position:relative;background:var(--encre);overflow:hidden}
.cc-detail-media img,
.cc-detail-media video{
  width:100%;height:100%;object-fit:cover;display:block;
}

/* La galerie occupe une hauteur FIXE : sans elle, chaque photo
   imposait la sienne et le panneau sautait à chaque glissement. */
.cc-detail-media .cc-property-media-track,
.cc-detail-media .yi-card-gallery{
  display:flex;
  height:clamp(220px, 42vh, 340px);
  overflow-x:auto;
  overflow-y:hidden;
  scroll-snap-type:x mandatory;
  scrollbar-width:none;
  touch-action:pan-x;               /* l'horizontal, et rien d'autre */
  overscroll-behavior-x:contain;
}
.cc-detail-media .cc-property-media-track::-webkit-scrollbar,
.cc-detail-media .yi-card-gallery::-webkit-scrollbar{display:none}
.cc-detail-media .yi-card-slide{height:100%}

/* Les points de navigation reviennent SUR la photo. Posés en dessous,
   ils flottaient dans une bande vide entre l'image et le texte. */
.cc-detail-media .yi-card-dots,
.cc-detail-media .cc-property-media-dots{
  position:absolute;left:0;right:0;bottom:12px;z-index:2;
  display:flex;justify-content:center;gap:6px;margin:0;padding:0;
}
.cc-detail-media .yi-card-dot{
  width:7px;height:7px;padding:0;border:0;border-radius:50%;
  background:rgba(255,255,255,.5);box-shadow:var(--ombre);
}
.cc-detail-media .yi-card-dot.active{background:#fff;width:18px;border-radius:var(--r-carte)}

.cc-detail-corps{padding:18px 20px 22px}
.cc-detail-etat{display:inline-block;padding:5px 10px;border-radius:var(--r-carte);
  font-size:var(--t-nano);font-weight:950;letter-spacing:.4px}
.cc-detail-etat.available{background:var(--sur-fond);color:var(--sur)}
.cc-detail-etat.reserved{background:var(--alerte);color:#fff}
.cc-detail-etat.attention{background:var(--attention-fond);color:var(--attention)}

.cc-detail h2{margin:10px 0 6px;font:800 20px/1.3 Sora,Manrope,system-ui,sans-serif;
  color:var(--encre);letter-spacing:-.3px}
.cc-detail-lieu{display:flex;align-items:center;gap:7px;margin:0 0 4px;
  font-size:var(--t-second);color:var(--encre-douce)}
.cc-detail-lieu i{font-size:var(--t-micro);color:var(--action2,var(--marque-sombre))}
.cc-detail-prix{margin:0 0 16px;font:900 22px Sora,Manrope,system-ui,sans-serif;color:var(--encre)}

.cc-detail-champs{display:grid;gap:2px;margin:0 0 16px}
.cc-detail-champs > div{display:flex;align-items:baseline;justify-content:space-between;
  gap:14px;padding:10px 0;border-bottom:1px solid var(--trait)}
.cc-detail-champs > div:last-child{border-bottom:0}
.cc-detail-champs dt{flex:none;font-size:var(--t-micro);font-weight:700;color:#8095aa}
.cc-detail-champs dd{margin:0;text-align:right;font-size:var(--t-second);font-weight:800;color:var(--encre)}

.cc-detail-description{margin:0 0 16px}
.cc-detail-description b{display:block;margin-bottom:6px;
  font:800 12px Manrope,system-ui,sans-serif;color:var(--encre)}
.cc-detail-description p{margin:0;font-size:var(--t-second);line-height:1.65;color:var(--encre-douce);
  white-space:pre-line}

.cc-detail-modifier{display:flex;align-items:center;justify-content:center;gap:9px;
  width:100%;min-height:50px;margin-top:16px;border:0;border-radius:var(--r-carte);
  background:var(--encre);color:#fff;font:800 13.5px Manrope,system-ui,sans-serif;cursor:pointer}
.cc-detail-modifier:hover{background:var(--encre)}

/* La carte se comporte comme un bouton, et le dit. */
.cc-property-card[data-property-ouvrir]{cursor:pointer}
.cc-property-card[data-property-ouvrir]:focus-visible{outline:2px solid var(--marque);outline-offset:3px}

/* =====================================================================
   V101.271 — la finition du panneau.

   Trois détails qui séparent un panneau correct d'un panneau soigné :
   la barre de défilement discrète plutôt qu'absente, la poignée qui
   annonce qu'on peut glisser, et le bord haut qui reste net quand le
   contenu passe dessous.
   ===================================================================== */

/* Une barre fine plutôt qu'aucune : masquer complètement le défilement
   prive d'un repère utile — on ne sait plus s'il reste du contenu. */
.cc-detail{scrollbar-width:thin;scrollbar-color:var(--trait) transparent}
.cc-detail::-webkit-scrollbar{width:5px}
.cc-detail::-webkit-scrollbar-track{background:transparent}
.cc-detail::-webkit-scrollbar-thumb{background:var(--trait);border-radius:var(--r-carte)}
.cc-detail::-webkit-scrollbar-thumb:hover{background:#9fb4c7}

/* La poignée, sur mobile : elle dit que le panneau se tire, avant
   même qu'on essaie. */
@media(max-width:759px){
  .cc-detail::before{
    content:'';position:sticky;top:0;z-index:4;
    display:block;width:38px;height:4px;margin:8px auto -12px;
    border-radius:var(--r-carte);background:rgba(255,255,255,.65);
  }
}

/* Le contenu ne doit pas toucher le bas de l'écran sur les téléphones
   à barre gestuelle. */
.cc-detail-corps{padding-bottom:calc(22px + env(safe-area-inset-bottom))}

/* Le bouton de fermeture suit le défilement, pour ne pas obliger à
   remonter.

   `sticky` et non `absolute` : le panneau EST le conteneur de
   défilement, donc un élément absolu y glisserait avec le contenu.
   Et pas de `float` — un flottant ne peut pas être collant, les deux
   se contredisent.

   Le bouton est le premier enfant, donc `margin-left:auto` le pousse à
   droite et la marge basse négative l'empêche de réserver une ligne. */
.cc-detail-fermer{
  position:sticky;
  top:12px;
  display:block;
  margin:12px 12px -36px auto;
  z-index:5;
}

/* =====================================================================
   V101.272 — les points suivent le défilement.

   Le changement doit se VOIR : sans transition, le point actif saute
   d'une position à l'autre et l'œil ne suit pas. Avec, on comprend
   qu'on avance dans une série.

   Les flèches sont retirées du gabarit. Ces règles neutralisent aussi
   celles qui pourraient subsister dans une feuille plus ancienne — un
   bouton sans gestionnaire resterait cliquable sans rien faire, ce
   qui est pire qu'un bouton absent.
   ===================================================================== */
.cc-detail-media .yi-card-dot,
.cc-property-card .yi-card-dot{
  transition:width .22s cubic-bezier(.2,.8,.3,1), background .22s ease, opacity .22s ease;
}
@media (prefers-reduced-motion: reduce){
  .cc-detail-media .yi-card-dot,
  .cc-property-card .yi-card-dot{transition:none}
}

.yi-card-arrow{display:none!important}

/* =====================================================================
   V101.275 — le bouton qui mène aux besoins trouvés.

   Quand Yafoye annonce « votre annonce répond déjà à 3 besoins », ce
   bouton doit être le plus visible : c'est l'information qui vient
   d'être promise. « Voir mes biens » passe en second — utile, mais
   moins urgent que trois clients qui cherchent ce qu'on vient de
   publier.
   ===================================================================== */
.cc-publish-voir-besoins{
  display:flex!important;align-items:center;justify-content:center;gap:9px;
  background:var(--encre)!important;color:#fff!important;border:0!important;
  font-weight:800!important;
}
.cc-publish-voir-besoins:hover{background:var(--encre)!important}
.cc-publish-voir-besoins i{font-size:var(--t-micro)}

.cc-publish-secondaire{
  background:transparent!important;border:1px solid var(--trait)!important;
  color:var(--encre-douce)!important;
}
.cc-publish-secondaire:hover{color:var(--encre)!important;border-color:#9fe4ef!important}

/* =====================================================================
   V101.276 — plus de flash bleu au toucher.

   Android surligne en bleu tout élément cliquable au moment du
   contact. Sur une carte d'annonce qui occupe la moitié de l'écran,
   ce rectangle recouvre la photo pendant un instant — l'effet est
   celui d'un défaut d'affichage, pas d'une réaction.

   On le remplace par une réaction DISCRÈTE : la carte s'enfonce
   légèrement. Elle répond, sans recouvrir ce qu'on regarde.

   `transparent` ne suffit pas seul sur certaines versions d'Android :
   il faut une couleur explicitement nulle.
   ===================================================================== */
.cc-property-card,
.cc-property-card *,
.cc-kpis-filtres article,
.yf-kpi-ligne,
.yi-motif button,
.cc-detail button{
  -webkit-tap-highlight-color:rgba(0,0,0,0);
  tap-highlight-color:rgba(0,0,0,0);
}

/* La carte répond au toucher sans clignoter. */
.cc-property-card[data-property-ouvrir]{
  transition:transform .14s ease, box-shadow .14s ease;
}
.cc-property-card[data-property-ouvrir]:active{
  transform:scale(.988);
}
@media (prefers-reduced-motion: reduce){
  .cc-property-card[data-property-ouvrir]{transition:none}
  .cc-property-card[data-property-ouvrir]:active{transform:none}
}

/* =====================================================================
   V101.282 — le bouton d'annulation dans l'espace pro.

   Les règles de `yafoye-toast.css` étaient bien chargées, mais la
   feuille du centre de commandement passe après et impose ses propres
   styles de bouton. Le bouton héritait donc d'une apparence générique.

   On le redéclare ici, dans la feuille qui a le dernier mot.
   ===================================================================== */
/* V101.283: le bouton se voit. Discret, il poussait à écrire au
   support — ce qui coûte plus cher à tout le monde qu'un geste propre
   fait au bon endroit. */
.cc-workspace .yi-res-annuler,
.cc-view .yi-res-annuler{
  display:inline-flex;align-items:center;gap:8px;
  min-height:44px;padding:0 16px;
  border:1px solid #e6a8a0;border-radius:var(--r-carte);
  background:var(--surface);color:var(--alerte);cursor:pointer;
  font:800 12px Manrope,system-ui,sans-serif;
  transition:.14s;
}
.cc-workspace .yi-res-annuler:hover,
.cc-view .yi-res-annuler:hover{
  border-color:var(--alerte);color:var(--alerte);background:var(--alerte-fond);
}
/* Une annulation après paiement engage un remboursement : le bouton
   ne doit pas avoir l'air anodin. */
.cc-workspace .yi-res-annuler.est-payee,
.cc-view .yi-res-annuler.est-payee{
  border-color:var(--trait);color:var(--alerte);background:var(--surface);
}
.cc-workspace .yi-res-annuler:disabled,
.cc-view .yi-res-annuler:disabled{opacity:.5;cursor:not-allowed}

/* V101.283: la note reprend le fond ambré du client — un même message
   ne doit pas avoir deux apparences selon l'écran. */
.cc-workspace .yi-res-note-annulation,
.cc-view .yi-res-note-annulation{
  display:flex;align-items:flex-start;gap:10px;margin:12px 0 0;
  padding:13px 14px;border-radius:var(--r-carte);
  background:var(--attention-fond);border:1px solid var(--trait);
  font-family:Manrope,system-ui,sans-serif;
}
.cc-workspace .yi-res-note-annulation i,
.cc-view .yi-res-note-annulation i{flex:none;margin-top:2px;font-size:var(--t-second);color:var(--attention)}
.cc-workspace .yi-res-note-annulation b,
.cc-view .yi-res-note-annulation b{display:block;margin-bottom:3px;font-size:var(--t-second);font-weight:800;color:var(--attention)}
.cc-workspace .yi-res-note-annulation span,
.cc-view .yi-res-note-annulation span{display:block;font-size:var(--t-micro);line-height:1.6;font-weight:600;color:#8a6c46}

/* =====================================================================
   V101.290 — écarter une opportunité.

   Le bouton reste discret : ce n'est pas l'action qu'on encourage, et
   il vit à côté de « Proposer mon bien », qui doit rester le geste
   évident.
   ===================================================================== */
/* V101.292: l'œil se cale à l'extrême droite de la ligne du score.
   `margin-left:auto` dans un conteneur flex pousse l'élément au bout
   sans qu'on ait à connaître la largeur de ce qui précède — un score à
   deux ou trois chiffres ne déplace donc rien.

   Pas de bordure ni de fond : posé sur une ligne d'information, un
   bouton encadré prendrait le poids d'une action principale, alors que
   celle-ci reste « Proposer mon bien ». */
.cc-mission-ecarter{display:inline-flex;align-items:center;justify-content:center;
  width:34px;height:34px;flex:none;margin-left:auto;margin-right:-6px;
  border:0;border-radius:var(--r-petit);background:transparent;color:#b9c8d6;
  cursor:pointer;transition:.14s}
.cc-mission-ecarter:hover{color:var(--encre-douce);background:var(--fond)}
.cc-mission-ecarter i{font-size:var(--t-second)}

/* Sur mobile, la zone tactile passe à 40 px : un bouton de 34 px se
   manque une fois sur trois avec le pouce, et le manquer ici veut dire
   toucher la carte — donc ouvrir ce qu'on voulait masquer. */
@media(max-width:600px){
  .cc-mission-ecarter{width:40px;height:40px;margin-right:-8px}
  .cc-mission-ecarter i{font-size:var(--t-corps)}
}

/* Le retour en arrière dans le message : sans lui, un clic malheureux
   n'aurait aucune issue. */
.cc-toast{display:flex;align-items:center;gap:12px}
.cc-toast-action{flex:none;border:0;border-radius:var(--r-petit);padding:6px 12px;
  background:rgba(255,255,255,.16);color:#fff;cursor:pointer;
  font:800 11.5px Manrope,system-ui,sans-serif}
.cc-toast-action:hover{background:rgba(255,255,255,.26)}

/* =====================================================================
   V101.466 — l'avertissement d'annulations.

   Trois annulations de réservations payées dans le mois retirent les
   annonces pendant sept jours. Le professionnel doit le savoir AVANT,
   pas en découvrant que ses biens ont disparu.

   Trois tons : information, avertissement, sanction en cours.
   ===================================================================== */
/* V101.761 — `hidden` DOIT GAGNER.

   Le code posait bien `avertissement.hidden = true` quand il n'y a
   aucune annulation. Mais `display:flex`, porte par une CLASSE, l'emporte
   sur le `display:none` que le navigateur attache a l'attribut `hidden` :
   la pastille jaune restait, vide, a prendre de la place sous les
   onglets.

   Le fondateur : « lorsqu'il n'y a aucune info a laisser, la pastille
   doit disparaitre ».

   C'est le defaut de la V101.690 dans l'autre sens — la, un noeud
   seulement masque qu'une regle CSS ressuscitait. Toute regle qui pose
   un `display` sur une classe doit rendre `hidden` a l'attribut. */
.cc-avertissement[hidden]{display:none!important}
.cc-avertissement{
  display:flex;align-items:flex-start;gap:10px;
  margin:0 0 14px;padding:11px 14px;
  border-radius:var(--r-carte);
  font-size:var(--t-second);line-height:1.5;
  background:rgba(245,158,11,.10);
  border:1px solid rgba(245,158,11,.24);
  color:var(--encre);
}
.cc-avertissement i{margin-top:2px;color:var(--attention)}
.cc-avertissement b{font-weight:800}

.cc-avertissement.doux{
  background:rgba(0,153,230,.08);
  border-color:rgba(0,153,230,.20);
}
.cc-avertissement.doux i{color:var(--marque)}

.cc-avertissement.grave{
  background:rgba(224,82,75,.10);
  border-color:rgba(224,82,75,.26);
}
.cc-avertissement.grave i{color:var(--alerte)}

/* =====================================================================
   V101.471 — le rappel de vérification.

   Une ligne, un lien, aucune insistance. Publier reste libre : lui
   rappeler sa certification à chaque geste le ferait fuir. On le dit
   une fois, là où il constate ses résultats.
   ===================================================================== */
.cc-rappel-verif{
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  margin:0 0 14px;padding:11px 14px;
  border-radius:var(--r-carte);
  background:rgba(0,153,230,.08);
  border:1px solid rgba(0,153,230,.20);
  font-size:var(--t-second);line-height:1.5;
  color:var(--encre);
}
.cc-rappel-verif i{color:var(--marque);font-size:var(--t-corps)}
.cc-rappel-verif a{
  margin-left:auto;
  color:var(--sur);font-weight:800;text-decoration:none;
  border-bottom:1px solid rgba(11,111,168,.35);
}
.cc-rappel-verif a:hover{border-bottom-color:var(--sur)}

/* V101.483 — Opportunités : les cartes se rangent côte à côte sur grand écran.
   `.cc-card-list` était en `display:grid` sans aucune colonne définie, donc
   une seule carte par ligne, étirée sur toute la largeur du bureau. Cette
   classe ne sert qu'à #ccMissionList : rien d'autre ne bouge.
   Blocs `min-width` uniquement — le mobile garde sa carte pleine largeur. */
@media (min-width: 981px){
  .cc-card-list{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (min-width: 1400px){
  .cc-card-list{grid-template-columns:repeat(3,minmax(0,1fr))}
}
/* Le message « aucune opportunité » occupe la largeur entière : sur deux
   colonnes il se serait rangé dans la première, moitié de page vide à côté. */
.cc-card-list>.cc-empty{grid-column:1/-1}

/* V101.487 — Opportunités : les onglets de catégorie et les cartes de
   besoin. La barre reprend l'allure de celle d'Explorer : un
   professionnel qui parcourt la demande doit reconnaître le geste qu'il
   fait déjà côté client. */
.cc-opportunity-tabs{
  display:flex;gap:8px;overflow-x:auto;padding:2px 0 10px;
  scrollbar-width:none;-webkit-overflow-scrolling:touch;
}
.cc-opportunity-tabs::-webkit-scrollbar{display:none}
.cc-opportunity-tabs button{
  display:inline-flex;align-items:center;gap:7px;flex:0 0 auto;
  padding:9px 15px;border-radius:var(--r-carte);cursor:pointer;
  border:1px solid rgba(3,27,58,.12);background:#fff;color:var(--encre);
  font-family:inherit;font-size:var(--t-second);font-weight:700;white-space:nowrap;
}
.cc-opportunity-tabs button i{font-size:var(--t-second);color:var(--action2)}
.cc-opportunity-tabs button span{
  padding:1px 7px;border-radius:var(--r-carte);
  background:var(--marque-fond);color:var(--action2);font-size:var(--t-micro);
}
.cc-opportunity-tabs button.active{background:var(--encre);border-color:var(--encre);color:#fff}
.cc-opportunity-tabs button.active i{color:var(--marque)}
.cc-opportunity-tabs button.active span{background:rgba(255,255,255,.18);color:#fff}

.cc-need-card{display:flex;flex-direction:column;gap:8px}
/* V101.744 : le repere « nouveau », dans la meme langue que l'espace
   client — lisere d'accent, fond a peine teinte, petite etiquette. Pas
   de point rouge : le rouge appartient au compteur, qui dit qu'il y a
   quelque chose ; le repere, lui, dit LEQUEL. */
.cc-need-card.yf-new-card{position:relative;border-left:3px solid var(--action2,#00a8c6);
  background-image:linear-gradient(90deg,rgba(0,168,198,.07),rgba(0,168,198,0) 42%);
  transition:background-image .45s ease,border-left-color .45s ease}
.cc-need-card.yf-new-card.est-lu{border-left-color:transparent;background-image:none}
.cc-need-card .yf-new-badge{align-self:flex-start;display:inline-flex;align-items:center;padding:3px 9px;border-radius:var(--r-carte);background:rgba(0,168,198,.12);color:var(--marque-sombre);font:800 9.5px/1 Manrope,sans-serif;letter-spacing:.7px;text-transform:uppercase;transition:opacity .35s ease}
.cc-need-card.est-lu .yf-new-badge{opacity:0}
.cc-need-card{padding:var(--besoins-interieur,var(--e-4,16px))}

/* V101.745 : la carte de reservation. Elle est dessinee par
   `reservation-system.js`, partage avec l'espace client — mais la
   feuille de ce dernier (`yafoye-unified-chrome.css`) n'est PAS chargee
   ici. La regle est donc recopiee, faute de quoi le repere existerait
   dans le HTML sans jamais se voir cote professionnel : le pire des
   cas, puisque rien n'echoue et que personne ne le remarque.

   C'est le point 168 du journal — « composant partage, feuille
   attendue » — et il reste a generaliser en test. */
.yi-res-card.yf-new-card{position:relative;border-left:3px solid var(--action2,#00a8c6);
  background-image:linear-gradient(90deg,rgba(0,168,198,.07),rgba(0,168,198,0) 42%);
  transition:background-image .45s ease,border-left-color .45s ease}
.yi-res-card.yf-new-card.est-lu{border-left-color:transparent;background-image:none}
/* V101.759 : dans le flux, au-dessus du titre — pose en absolu, il
   chevauchait les titres longs, et un repere par-dessus du texte de
   longueur variable finit toujours par le rencontrer. */
.yi-res-card .yf-new-badge{position:static;align-self:flex-start;display:inline-flex;align-items:center;margin:0 0 10px;padding:3px 9px;border-radius:var(--r-carte);background:rgba(0,168,198,.12);color:var(--marque-sombre);font:800 9.5px/1 Manrope,sans-serif;letter-spacing:.7px;text-transform:uppercase;transition:opacity .35s ease}
.yi-res-card.est-lu .yf-new-badge{opacity:0}
.cc-need-head{display:flex;flex-direction:column;align-items:stretch;gap:9px}
.cc-need-cat{
  display:inline-flex;align-items:center;gap:7px;
  font-size:var(--t-second);font-weight:800;color:var(--encre-douce);
}
/* V101.549 — les icones d'Opportunites reprennent la couleur de la
   maison. Elles etaient en var(--sur), un bleu qui n'existe nulle part
   ailleurs : a cote de « Mes biens », la page semblait venir d'un autre
   produit. `--action2` est la teinte de toutes les icones du pro. */
.cc-need-cat i{color:var(--action2)}
/* Le budget est ce que le professionnel regarde en premier : c'est lui
   qui decide s'il ouvre la carte. */
.cc-need-budget{align-self:flex-end;text-align:right;font-size:var(--t-carte);font-weight:800;color:var(--encre);white-space:nowrap}
.cc-need-lieu,.cc-need-spec{
  display:flex;align-items:center;gap:7px;margin:0;
  font-size:var(--t-second);color:var(--encre-douce);
}
.cc-need-lieu i,.cc-need-spec i{color:var(--action2);font-size:var(--t-micro)}
/* V101.739 : les autres communes que ce client accepte. En vert, parce
   que c'est une OUVERTURE — elle dit au professionnel qu'un de ses biens
   hors de la commune preferee peut convenir. */
.cc-need-communes{display:flex;align-items:center;gap:7px;margin:5px 0 0;color:var(--sur);font:700 11.5px Manrope,sans-serif}
.cc-need-communes i{font-size:var(--t-micro)}
.cc-need-details{margin:0;font-size:var(--t-second);line-height:1.45;color:var(--encre-douce)80}
.cc-need-details{color:var(--encre-douce)}
.cc-need-actions{display:flex;justify-content:flex-end;margin-top:2px}

/* V101.501 — le bouton d'action des conseils qualité. Il ouvre le
   formulaire de l'annonce, là où chacun des conseils se corrige. */
.cc-conseils-action{
  display:inline-flex;align-items:center;gap:8px;margin-top:10px;
  padding:9px 15px;border-radius:var(--r-carte);cursor:pointer;
  border:1px solid rgba(8,127,150,.28);background:#fff;color:var(--action2);
  font-family:inherit;font-size:var(--t-second);font-weight:800;
}
.cc-conseils-action:hover{background:var(--action2);border-color:var(--action2);color:#fff}
/* V101.503 — le bouton des conseils peut être un lien (vérification du
   profil, qui se fait hors de l'annonce). Même allure dans les deux cas. */
a.cc-conseils-action{text-decoration:none}
/* V101.540 — mention d'une demande corrigée depuis sa publication. */
.cc-need-modifie{
  display:flex;align-items:center;gap:7px;margin:0;
  font-size:var(--t-micro);color:#8a6d3b;
}
.cc-need-modifie i{font-size:var(--t-micro)}

/* V101.541 — la seconde rangée de filtres, plus discrète que celle des
   catégories : c'est un affinage, pas un choix principal. */
.cc-opportunity-lieux{padding-top:0;margin-top:-2px}
.cc-opportunity-lieux button{padding:6px 12px;font-size:var(--t-second);font-weight:700}
.cc-opportunity-lieux button.active{background:var(--action2);border-color:var(--action2)}
.cc-opportunity-sep{flex:0 0 1px;align-self:stretch;margin:4px 4px;background:rgba(3,27,58,.12)}
/* V101.549 — le bouton de rangement d'une carte de réservation. */
.yi-res-ranger{
  min-width:38px;min-height:38px;border-radius:var(--r-carte);cursor:pointer;
  border:1px solid var(--line);background:#fff;color:var(--muted);
}
.yi-res-ranger:hover{border-color:var(--danger);color:var(--danger)}

/* V101.554 — « Autres villes » ferme la rangée : un recours, pas un
   point de départ. */
.cc-opportunity-autres{
  display:inline-flex;align-items:center;gap:8px;
  padding:4px 10px;border:1px dashed rgba(3,27,58,.22);border-radius:var(--r-carte);
  font-size:var(--t-second);font-weight:700;color:var(--muted);background:#fff;
}
.cc-opportunity-autres select{
  border:0;background:transparent;font:inherit;color:var(--ink);
  cursor:pointer;max-width:150px;
}
.cc-opportunity-lieux button span{
  padding:1px 7px;border-radius:var(--r-carte);background:var(--marque-fond);
  color:var(--action2);font-size:var(--t-micro);
}
.cc-opportunity-lieux button.active span{background:rgba(255,255,255,.24);color:#fff}

/* V101.557 — « Autres villes » est un vrai `select`, repris par le
   composant premium du site. La version precedente le posait transparent
   par-dessus un libellé, ce qui neutralisait ce composant. */
/* V101.559 — le sélecteur garde une largeur de bouton.

   Le composant premium remplace le `<select>` par son propre habillage,
   qui s'étale sur toute la largeur disponible : dans une rangée de
   pastilles, il occupait la ligne entière. On le borne, lui ET son
   habillage. */
.cc-opportunity-autres,
.cc-lieux-rangee .yi-premium-select,
.cc-lieux-rangee .yi-select-trigger{
  flex:0 0 auto;width:auto;min-width:150px;max-width:190px;
  min-height:36px;border-radius:var(--r-carte);
  font:700 12.5px Manrope,system-ui,sans-serif;
}
.cc-opportunity-autres{
  padding:4px 12px;border:1px dashed rgba(3,27,58,.22);background:#fff;
  color:var(--ink);cursor:pointer;
}

/* V101.558 — deux rangées empilées, chacune défilant pour elle-même.

   Les communes partageaient la rangée des villes : celle-ci défile
   horizontalement et ne revient jamais à la ligne, donc les communes se
   plaçaient à DROITE des villes et les boutons de ville s'étiraient en
   hauteur pour occuper le vide. */
.cc-opportunity-lieux{display:block;padding:0}
.cc-lieux-rangee{
  display:flex;align-items:center;gap:8px;
  overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;
  padding:2px 0 8px;
}
.cc-lieux-rangee::-webkit-scrollbar{display:none}
.cc-lieux-rangee>*{flex:0 0 auto}

/* La seconde rangée est un affinage d'Abidjan, pas une ville de plus :
   elle est décalée et plus discrète. */
.cc-opportunity-communes{
  margin-left:14px;padding-top:2px;
  border-left:2px solid rgba(8,127,150,.22);padding-left:12px;
}
.cc-opportunity-communes button{
  padding:5px 11px;border-radius:var(--r-carte);cursor:pointer;
  border:1px solid var(--line);background:#fff;color:var(--muted);
  font:800 12px Manrope,system-ui,sans-serif;
}
.cc-opportunity-communes button.active{
  background:var(--action2);border-color:var(--action2);color:#fff;
}

/* V101.584 — la fenêtre du créneau déjà pris. */
.yi-motif-passer{
  min-height:44px;padding:0 16px;border-radius:var(--r-carte);cursor:pointer;
  border:1px solid var(--line);background:#fff;color:var(--muted);
  font:800 13px Manrope,system-ui,sans-serif;
}
.yi-motif-valider{
  min-height:44px;padding:0 18px;border:0;border-radius:var(--r-carte);cursor:pointer;
  background:linear-gradient(135deg,var(--encre),var(--encre));color:#fff;
  font:800 13px Manrope,system-ui,sans-serif;
}

/* V101.587 — un bouton désactivé doit se voir désactivé. Un bouton gris
   qui ne réagit pas laisse croire à une panne ; celui-ci dit qu'il
   reviendra. */
.cc-property-actions button[disabled]{
  opacity:.45;cursor:not-allowed;filter:grayscale(.4);
}

/* V101.589 — le bouton dit ce qu'il FAIT, et sa couleur l'annonce.

   Il affichait l'état courant : sur un bien disponible on lisait
   « Disponible », et le professionnel croyait devoir cliquer pour le
   rendre disponible — alors qu'il l'était déjà. Un bouton nomme une
   action, pas un état ; l'état, c'est le badge sur la photo qui le dit.

   Vert quand le clic remet en vitrine, sobre quand il retire. */
.cc-property-actions button.is-unavailable{
  background:var(--sur-fond);color:var(--sur);border:1px solid #b9e3cd;
}
.cc-property-actions button.is-available{
  background:var(--marque-fond);color:var(--ink);
}

/* V101.593 — le « flou » des cartes de « Mes biens ».

   Il ne venait pas d'un effet CSS — j'en ai cherché un pendant deux
   versions. Il vient des PHOTOS : ce sont les fichiers d'origine, pleine
   résolution, que le navigateur affiche progressivement pendant qu'il
   les décode. Sur une carte de 150 px de haut, ce rendu progressif se
   lit comme un flou.

   Deux mesures ici. Un fond plein sous chaque image, pour qu'aucune
   zone semi-décodée ne transparaisse. Et `content-visibility`, qui dit
   au navigateur de ne décoder que ce qui est à l'écran — sur une liste
   de trente biens, il décodait tout d'un coup.

   Ce que le CSS ne peut pas faire : alléger les photos. Tant qu'on
   affiche des originaux de plusieurs mégaoctets dans une vignette, le
   décodage restera visible sur une connexion mobile. La vraie réponse
   est une miniature générée à la publication. */
.cc-property-media-slide,
.cc-property-card .yi-card-slide{
  background:var(--marque-fond);
}
.cc-property-media-slide img,
.cc-property-card .yi-card-slide img{
  width:100%;height:100%;object-fit:cover;display:block;background:var(--marque-fond);
}
/* V101.595 — `content-visibility` retire.

   Ajoute en V101.593 pour eviter de decoder trente images d'un coup, il
   applique un CONFINEMENT de mise en page : la carte est dessinee a la
   hauteur devinee (`contain-intrinsic-size`), puis redessinee a sa
   vraie hauteur quand elle entre a l'ecran. Sur mobile, cela casse la
   disposition des boutons et produit exactement le clignotement qu'on
   cherchait a supprimer.

   Le gain de decodage ne valait pas ce prix — et il est de toute facon
   obtenu par les vignettes de la V101.594, qui font le vrai travail. */


/* V101.594 — les boutons d'une carte, sur mobile.

   « Rendre indisponible » et « Modifier » se touchaient : sur un ecran
   etroit le pouce vise entre les deux et atteint l'un ou l'autre, alors
   que l'un retire le bien de la vitrine. Un geste lourd ne doit pas
   etre a un demi-millimetre d'un geste anodin.

   Et « Modifier » prenait la plus grande part alors qu'il tient en un
   mot : c'est l'etat du bien qui merite la place, pas l'edition. On
   inverse le rapport — l'action d'etat s'etale, l'edition se contente
   de son libelle. */
/* V101.596 — « Modifier » cesse de manger la ligne.

   Le professionnel l'a dit simplement : ce bouton prend un grand espace
   pour rien. Il tient en un mot, alors que « Rendre indisponible » en
   compte deux et se retrouvait tronque a cote de lui — sur le geste le
   plus consequent de la carte.

   On inverse : l'action d'etat prend la place qui reste, « Modifier »
   se contente de son libelle. Cela vaut a TOUTES les largeurs, pas
   seulement sur mobile : la regle par media ne s'appliquait pas
   toujours, et un bouton tronque n'est pas plus acceptable sur un
   grand ecran. */
/* V101.628 : ces deux reglages de flex sont retires. Ils n'ont jamais
   rien produit — `centre-commandement-pro.html` impose
   `display:grid!important` sur cette rangee, et une declaration de page
   l'emporte sur une feuille liee quelle que soit la specificite. C'est
   la vraie raison pour laquelle la place de « Modifier » a du etre
   reprise trois fois (V101.582, V101.594, V101.596) sans jamais tenir.
   La disposition vit desormais avec la grille, dans la page. */
/* Le libelle ne deborde plus : il se coupe proprement si la place
   manque vraiment, plutot que de sortir du cadre. */
.cc-property-actions button>span{
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;
}

@media(max-width:700px){
  .cc-property-actions{gap:10px}
  .cc-property-actions button{min-height:46px;font-size:var(--t-second)}
}
/* V101.628 : deux accolades fermantes de trop trainaient ici depuis la
   V101.596. Le navigateur les ignore — c'est pour cela qu'elles ont
   survecu — mais elles font mentir toute lecture du fichier. */


/* V101.622 — le bouton « Dates » se lit et se vise.

   La V101.596 avait donne toute la place a l'action d'etat ; celui-ci
   s'est retrouve reduit a son icone, sans son libelle. Un nouveau
   professionnel ne pouvait pas deviner qu'il sert a bloquer des
   periodes — et sur telephone, la cible etait trop petite pour le
   pouce.

   Il garde son texte et une cible confortable ; c'est l'edition qui
   cede la place, elle tient en un mot. */
/* V101.628 — la disposition des trois boutons est posee AILLEURS.

   `centre-commandement-pro.html` declare
   `.cc-property-actions{display:grid!important}` dans un style de page :
   toute regle de flex ecrite ici est perdue, quelle que soit sa
   specificite. C'est pourquoi les reglages de la V101.596 et de la
   V101.622 n'ont jamais produit ce qu'ils decrivaient, et pourquoi
   « Dates » se retrouvait a « D. ».

   La grille et ses colonnes vivent donc dans la page, avec le reste du
   bloc qui les impose. Ici on ne garde que ce qui ne s'y trouve pas. */
.cc-property-actions button[data-property-calendar] span{
  display:inline!important;
}

/* V101.628 — la corbeille, au bout de la ligne des compteurs.

   Pas de libelle a defendre, un geste rare, et une confirmation
   derriere : elle n'a pas besoin d'une place dans la rangee des
   actions. Elle garde une cible confortable et sa couleur d'alerte —
   `.cc-property-metrics i` impose la sienne a toutes les icones de la
   ligne, d'ou le `!important` ici et nulle part ailleurs. */
.cc-property-metrics .cc-property-supprimer{
  margin-left:auto;flex:0 0 auto;width:36px;height:36px;padding:0;
  border:1px solid var(--trait);border-radius:var(--r-carte);background:var(--fond);
  color:var(--alerte);cursor:pointer;display:grid;place-items:center;
}
.cc-property-metrics .cc-property-supprimer i{
  color:var(--alerte)!important;font-size:var(--t-second)!important;
}
.cc-property-metrics .cc-property-supprimer:hover{background:var(--alerte-fond)}
.cc-property-metrics .cc-property-supprimer[disabled]{
  opacity:.45;cursor:not-allowed;filter:grayscale(.4);
}


/* =====================================================================
   V101.683 — LE MENU DES CATEGORIES EST UN COMPOSANT, PAS UN SELECT
   =====================================================================

   La V101.682 avait vise `.cc-category-select-wrap select` — et n'a rien
   change a l'ecran. La raison : depuis la V101.362, ce menu est rendu
   par le composant premium, qui MASQUE le select d'origine et affiche
   son propre bouton. Styler le select revenait a styler un element
   invisible.

   Ce qu'on voyait donc : l'icone `<i>` de la page, posee en absolu a
   15 px, passant SOUS le texte du composant ; et son chevron a cote de
   celui du composant, d'ou les deux fleches.

   Le composant a deja son icone et son chevron. Ceux de la page n'ont
   plus lieu d'etre : on les retire, plutot que d'empiler deux
   decorations qui se disputent la meme place. */
.cc-category-select-wrap{position:relative}
.cc-category-select-wrap > i#ccCategorySelectIcon{display:none!important}
.cc-category-select-wrap .yi-premium-select-trigger{min-height:54px}

/* =====================================================================
   V101.682 — LE MENU DES CATEGORIES : UNE SEULE FLECHE, ET LE TEXTE LISIBLE
   =====================================================================

   Deux defauts que le fondateur voyait a l'ecran.

   LA DEUXIEME FLECHE. Tous les menus recoivent un chevron dessine
   (`background-image`) et perdent celui du navigateur
   (`appearance:none`). La regle de la V101.x retirait le chevron dessine
   pour ce menu-la — mais `-moz-appearance` n'etait pas pose, et certains
   moteurs redessinent alors leur propre fleche. Resultat : la fleche
   native reapparaissait a cote de celle du composant.

   On ne retire plus rien : ce menu porte le MEME chevron que les autres,
   et l'apparence native est coupee sur les trois moteurs. Une seule
   fleche, identique partout.

   LA PREMIERE LETTRE CACHEE. L'icone de categorie est posee a 15 px du
   bord, en absolu ; le texte commencait au meme endroit. Le « C » de
   « Choisir » passait dessous. On reserve la place a gauche, comme on
   la reserve deja a droite pour la fleche.
   ===================================================================== */
.cc-category-select-wrap select{
  appearance:none!important;-webkit-appearance:none!important;-moz-appearance:none!important;
  background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="10" height="7" viewBox="0 0 10 7"><path d="M1 1l4 4 4-4" stroke="%23082f52" stroke-width="1.6" fill="none" stroke-linecap="round" stroke-linejoin="round"/></svg>')!important;
  background-repeat:no-repeat!important;background-position:right 15px center!important;
  background-size:10px 7px!important;
  padding-left:48px!important;padding-right:40px!important;
}
.cc-category-select-wrap select::-ms-expand{display:none}


/* =====================================================================
   V101.685 — PLUS AUCUN FLASH BLEU AU TOUCHER
   =====================================================================

   Android dessine un rectangle bleu translucide sur tout element
   touchable, le temps du contact. Il etait deja neutralise sur quelques
   selecteurs precis (cartes de bien, indicateurs) — ce qui laissait
   clignoter tout le reste, dont les onglets du menu du bas, les plus
   touches de l'application.

   Une regle par element est intenable : on en oublie toujours un, et
   c'est celui qu'on touche cinquante fois par jour. On le coupe donc
   partout, une fois.

   Ce que ce flash apportait — savoir que le toucher a ete pris en
   compte — est deja assure par les transitions des boutons et par le
   changement d'onglet lui-meme. On ne retire pas un retour, on retire
   un clignotement. */
*, *::before, *::after{
  -webkit-tap-highlight-color:transparent;
}

/* V101.797 — CE QUE LE PROFESSIONNEL LIT DES ALERTES.
   Un NOMBRE, jamais des noms. Ces deux règles manquaient : l'indicateur
   héritait du `cursor:pointer` des filtres voisins — il avait l'air
   cliquable alors qu'il n'y a rien à ouvrir, puisqu'on ne montre jamais
   qui attend — et la ligne posée sur la carte n'avait aucune mise en
   forme du tout. */
/* V101.807 : l'indicateur « lecture seule » est devenu un onglet comme
   les autres — il n'a plus besoin de sa propre mise en forme. */
.cc-property-attente{
  display:flex;align-items:center;gap:7px;margin:9px 0 0;padding:8px 10px;
  border-radius:var(--r-carte);background:var(--fond);color:var(--marque-sombre);
  font:800 11px Manrope,Arial,sans-serif}
.cc-property-attente i{color:var(--marque-sombre)}

/* V101.812 — le lien du catalogue public, dans le bloc « Mes biens ». */
.cc-catalogue-lien{display:flex;flex-wrap:wrap;gap:14px;justify-content:space-between;
  align-items:center;margin:16px 0;padding:16px;border-radius:var(--r-carte);
  background:var(--fond);border:1px solid var(--trait)}
.cc-catalogue-lien h3{margin:0 0 4px;font:800 15px Manrope,Arial,sans-serif;color:var(--encre)}
.cc-catalogue-lien p{margin:0 0 8px;font-size:var(--t-second);color:var(--encre-douce);max-width:52ch}
.cc-catalogue-lien code{display:inline-block;padding:6px 10px;border-radius:var(--r-petit);
  background:#fff;border:1px solid var(--trait);font-size:var(--t-micro);color:var(--encre);word-break:break-all}
.cc-catalogue-actions{display:flex;flex-wrap:wrap;gap:8px}
.cc-catalogue-actions button,.cc-catalogue-actions a{display:inline-flex;align-items:center;
  gap:7px;min-height:40px;padding:0 14px;border-radius:var(--r-carte);border:1px solid var(--trait);
  background:#fff;color:var(--encre);font:800 12px Manrope,Arial,sans-serif;cursor:pointer;
  text-decoration:none}
.cc-deprecated{display:none!important}
.cc-home-catalogue{margin-top:22px}.cc-home-catalogue-head{display:flex;align-items:end;justify-content:space-between;gap:14px;margin-bottom:12px}.cc-home-catalogue-head small{display:block;color:var(--marque-sombre);font-weight:900;letter-spacing:.08em}.cc-home-catalogue-head h2{margin:3px 0 0}.cc-home-catalogue-head button{border:0;background:transparent;color:var(--marque-sombre);font-weight:850}.cc-home-catalogue-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.cc-home-property{border:1px solid var(--trait);border-radius:var(--r-carte);background:var(--surface,#fff);overflow:hidden;text-align:left;padding:0}.cc-home-property img,.cc-home-property-media{width:100%;height:128px;object-fit:cover;background:var(--fond);display:grid;place-items:center}.cc-home-property div:last-child{padding:12px}.cc-home-property b,.cc-home-property small,.cc-home-property strong{display:block}.cc-home-property small{color:var(--encre-douce);margin:4px 0}.cc-home-property strong{color:var(--marque-sombre)}
.cc-need-actions{display:flex;gap:8px;margin-top:14px}.cc-need-actions button{border:0;border-radius:var(--r-petit);background:var(--marque-sombre);color:#fff;padding:11px 14px;font-weight:850}.cc-live-need-match{margin:0 0 16px;padding:14px 16px;border-radius:var(--r-carte);border:1px solid var(--trait);background:var(--fond)}.cc-live-need-match.is-good{border-color:#1f9d68;background:#effbf6}.cc-live-need-match.is-bad{border-color:#d89a20;background:#fff8e8}.cc-live-need-match b,.cc-live-need-match small{display:block}.cc-live-need-match small{margin-top:4px;color:var(--encre-douce)}
@media(max-width:760px){.cc-home-catalogue-grid{grid-template-columns:1fr}.cc-home-property{display:grid;grid-template-columns:112px 1fr}.cc-home-property img,.cc-home-property-media{height:100%;min-height:112px}.cc-home-catalogue-head{align-items:center}}

/* V101.900 — hidden prime sur display:flex. */
.cc-rappel-verif[hidden],.cc-rappel-verif:empty{display:none!important}
[data-delai-expire][hidden]{display:none!important}
