/* Plandefeu — styles (vanilla, scope cp-). Aligné sur un système product UI
   bleu nuit : neutres bleutés, accent bleu, dark primary.
   L'accent bleu ne sert QUE les états actifs + la sélection (jamais décoratif).
   Le plan (canvas) est le héros ; la toolbar est volontairement discrète. */
:root{
  --cp-bg:#07111f;
  --cp-surface1:#0f1b2d;
  --cp-surface2:#172640;
  --cp-surface3:#243757;
  --cp-border:rgba(226,241,255,.10);
  --cp-border-strong:#2d4a70;
  --cp-text:#f8fbff;
  --cp-text2:#d7e5f5;
  --cp-mut:#99adc3;
  --cp-accent:#2563eb;       /* blue-600 */
  --cp-accent-strong:#1d4ed8;/* blue-700 */
  --cp-accent-soft:rgba(37,99,235,.16);
  --cp-accent-border:rgba(37,99,235,.42);
  --cp-accent-border-strong:rgba(37,99,235,.58);
  --cp-accent-veil:rgba(37,99,235,.10);
  --cp-warn:#60a5fa;         /* blue-400 */
  --cp-success:#10b981;     /* emerald-500 */
  --cp-danger:#ef4444;      /* red-500 */
  /* NUIT : esthétique « breakdown » (comenolo.fr/breakdown) — fond quasi-noir,
     box studio à peine distincte, contour blanc franc tracé au marqueur. */
  --cp-stage:#030816;       /* fond hors-studio — quasi noir */
  --cp-paper:#fafaf9;       /* fond des tuiles d'icônes (dock/biblio) — toujours clair */
  --cp-plan-fill:#07111f;   /* studio (rectangle) — quasi noir (box à peine visible) */
  --cp-plan-ink:#f5f5f4;    /* traits + libellés du plan — nuit (blanc franc) */
  --cp-plan-grid:#18243a;   /* grille — nuit (faible) */
  --cp-plan-cote:#9fb3cc;   /* cotes — nuit */
  --cp-plan-halo:#030816;   /* halo des labels — nuit (quasi noir) */
  --cp-light-fill:#07111f;
  --cp-light-soft-fill:#f5f5f4;
  --cp-light-stroke:#f5f5f4;
  --cp-light-ink:#f5f5f4;
  --cp-light-mark:#d6d3d1;
  --ease:cubic-bezier(.16,1,.3,1);
  /* ── Liquid glass : surfaces flottantes (verre dépoli) ── */
  --cp-glass-blur:saturate(160%) blur(18px);
  --cp-glass-bg:rgba(8,18,34,.66);           /* chrome léger (barres, dock, FAB) */
  --cp-glass-bg-strong:rgba(8,18,34,.88);    /* panneaux/overlays : + opaque = texte lisible */
  --cp-glass-border:rgba(255,255,255,.12);
  --cp-glass-hi:inset 0 1px 0 rgba(255,255,255,.14);   /* arête supérieure réfractée */
  --cp-glass-shadow:0 12px 36px rgba(0,0,0,.5);
  --cp-liquid-filter:saturate(150%) blur(8px);
  --cp-liquid-bg:linear-gradient(180deg,rgba(255,255,255,.12),rgba(255,255,255,.022)),rgba(8,18,34,.24);
  --cp-liquid-bg-strong:linear-gradient(180deg,rgba(255,255,255,.15),rgba(255,255,255,.035)),rgba(8,18,34,.34);
  --cp-liquid-item-bg:linear-gradient(180deg,rgba(255,255,255,.10),rgba(255,255,255,.025)),rgba(255,255,255,.035);
  --cp-liquid-item-hover:linear-gradient(180deg,rgba(255,255,255,.18),rgba(255,255,255,.06)),rgba(255,255,255,.06);
  --cp-liquid-item-border:rgba(226,241,255,.14);
  --cp-liquid-border:rgba(226,241,255,.18);
  --cp-liquid-on-bg:linear-gradient(180deg,rgba(96,165,250,.76),rgba(37,99,235,.58));
  --cp-liquid-shadow:0 16px 36px rgba(0,0,0,.26),inset 0 1px 0 rgba(255,255,255,.20),inset 0 -1px 0 rgba(255,255,255,.045);
}
*{box-sizing:border-box}
html,body{height:100%;margin:0}
body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,Roboto,Helvetica,Arial,sans-serif;
  background:var(--cp-bg);color:var(--cp-text);-webkit-font-smoothing:antialiased;overflow:hidden;
  font-size:15px;line-height:1.4;overscroll-behavior:none;-webkit-text-size-adjust:100%}
#cp-root{height:100vh;width:100vw;max-width:100vw;display:flex;flex-direction:column;position:relative;overflow:hidden}
:focus-visible{outline:2px solid var(--cp-accent);outline-offset:2px;border-radius:8px}
button{font-family:inherit}

/* Boot loader */
.cp-boot{position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:14px;background:var(--cp-bg);color:var(--cp-mut);z-index:9999;font-size:14px}
.cp-boot-ring{width:32px;height:32px;border:3px solid var(--cp-surface2);border-top-color:var(--cp-accent);
  border-radius:50%;animation:cp-spin .9s linear infinite}
@keyframes cp-spin{to{transform:rotate(360deg)}}

/* ── Topbar ── */
.cp-top{display:flex;align-items:center;gap:10px;padding:8px 12px;background:var(--cp-bg);
  border-bottom:1px solid var(--cp-border);flex:0 0 auto;padding-top:max(8px,env(safe-area-inset-top));
  position:relative;z-index:31;min-width:0;width:100%;max-width:100vw}
.cp-brand{display:flex;align-items:center;gap:10px;font-weight:700;letter-spacing:-.015em;font-size:15px}
.cp-logo{color:var(--cp-accent);width:44px;height:44px;display:inline-flex;align-items:center;justify-content:center;line-height:1;flex:0 0 auto}
.cp-logo .cp-svgi{width:44px;height:44px;stroke-width:1.9}
.cp-ver{font-weight:600;font-size:10px;color:var(--cp-accent);background:var(--cp-accent-soft);border:1px solid var(--cp-accent-border);border-radius:6px;padding:1px 5px;letter-spacing:0;line-height:1.4}
.cp-title{color:var(--cp-mut);font-size:13px;max-width:24vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cp-actions{margin-left:auto;display:flex;align-items:center;gap:4px;flex-wrap:wrap;justify-content:flex-end;min-width:0;max-width:100%}
.cp-group{display:flex;align-items:center;gap:4px}
.cp-sep{width:1px;height:22px;background:var(--cp-border);margin:0 4px;flex:0 0 auto}
/* Tiroir « Outils » : sur grand écran les outils restent en ligne (display:contents).
   Le bouton « Outils » et les libellés Réglages/Aide ne s'affichent qu'en sheet mobile. */
.cp-tools-inline{display:contents}
.cp-top .cp-tools-more{display:inline-flex}    /* Outils visible aussi sur grand écran (menu vue/E-S/réglages) */
.cp-tools-lbl{display:none}            /* Réglages/Aide = icône seule sur la barre */
.cp-sync{font-size:11px;color:var(--cp-mut);min-width:40px;text-align:right;font-variant-numeric:tabular-nums}
.cp-caret{font-size:9px;opacity:.7;margin-left:-2px}
/* Sous-barre repliable (menus Affichage / Importer / Exporter) */
.cp-subbar{position:fixed;left:50%;bottom:calc(env(safe-area-inset-bottom,0px) + 104px);transform:translateX(-50%);
  z-index:32;display:flex;align-items:center;gap:6px;flex-wrap:nowrap;max-width:calc(100vw - 18px);width:max-content;
  overflow-x:auto;overflow-y:hidden;padding:8px 10px;background:var(--cp-surface1);border:1px solid var(--cp-border-strong);
  border-radius:16px;box-shadow:var(--cp-chrome-shadow);animation:cp-subbar-in .18s var(--ease);scrollbar-width:none}
.cp-subbar::-webkit-scrollbar{display:none}
@keyframes cp-subbar-in{from{opacity:.5;transform:translate(-50%,8px)}to{opacity:1;transform:translateX(-50%)}}
.cp-subbar-label{font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--cp-mut);
  margin-right:6px;flex:0 0 auto}
.cp-subbar-control{display:flex;align-items:center;gap:6px;min-height:34px;padding:4px 8px;border:1px solid var(--cp-border);border-radius:8px;background:var(--cp-surface2);color:var(--cp-text2);font-size:12px;white-space:nowrap}
.cp-subbar-range{width:110px;accent-color:var(--cp-accent)}
.cp-subbar-num{width:58px;background:var(--cp-surface1);color:var(--cp-text);border:1px solid var(--cp-border-strong);border-radius:7px;padding:5px 6px;font-size:12px;font-variant-numeric:tabular-nums}
.cp-subbar .cp-x{margin-left:2px;flex:0 0 auto}
.cp-menu-backdrop{position:fixed;inset:0;z-index:29;background:transparent}
/* Palette de commandes (Ctrl+K) */
.cp-palette-overlay{align-items:flex-start;padding-top:12vh}
.cp-palette{width:560px;max-width:92vw;background:var(--cp-surface1);border:1px solid var(--cp-border-strong);
  border-radius:14px;box-shadow:0 24px 64px rgba(0,0,0,.55);overflow:hidden;animation:cp-pop .2s var(--ease)}
.cp-palette-input{width:100%;background:transparent;border:0;border-bottom:1px solid var(--cp-border);color:var(--cp-text);
  font-size:16px;padding:15px 18px;outline:none}
.cp-palette-input::placeholder{color:var(--cp-mut)}
.cp-palette-list{max-height:48vh;overflow:auto;padding:6px}
.cp-pal-item{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;text-align:left;
  background:transparent;border:0;border-radius:9px;padding:10px 12px;cursor:pointer;color:var(--cp-text2)}
.cp-pal-item:hover{background:var(--cp-surface2)}
.cp-pal-item.sel{background:var(--cp-accent-soft);color:var(--cp-text)}
.cp-pal-item.sel .cp-pal-group{color:var(--cp-warn)}
.cp-pal-label{font-size:13.5px;color:var(--cp-text)}
.cp-pal-group{font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:var(--cp-mut);flex:0 0 auto}
.cp-pal-empty{padding:20px;text-align:center;color:var(--cp-mut);font-size:13px}
.cp-palette-foot{padding:8px 14px;border-top:1px solid var(--cp-border);font-size:11px;color:var(--cp-mut)}
/* Spotlight « écrire pour ajouter » */
.cp-spot-list{max-height:52vh}
.cp-spot-item{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:transparent;border:1px solid transparent;border-radius:10px;padding:7px 10px;cursor:pointer;color:var(--cp-text2)}
.cp-spot-item:hover{background:var(--cp-surface2)}
.cp-spot-item.sel{background:var(--cp-accent-soft);color:var(--cp-text)}
.cp-spot-ico{width:30px;height:24px;flex:0 0 auto;display:flex;align-items:center;justify-content:center}
.cp-spot-ico svg{width:100%;height:100%}
.cp-spot-name{flex:1;min-width:0;font-size:13.5px;color:var(--cp-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cp-spot-qty{color:var(--cp-warn);font-weight:700;font-variant-numeric:tabular-nums}
.cp-spot-cat{font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:var(--cp-mut);flex:0 0 auto;border:1px solid var(--cp-border);border-radius:20px;padding:1px 8px}
.cp-spot-recent{font-size:9px;text-transform:uppercase;letter-spacing:.05em;color:var(--cp-warn);flex:0 0 auto;font-weight:700}
.cp-sync[data-s="ok"]{color:var(--cp-success)}.cp-sync[data-s="err"]{color:var(--cp-danger)}

/* Buttons : ghost par défaut (toolbar discrète) */
.cp-btn{background:transparent;color:var(--cp-text2);border:1px solid transparent;border-radius:8px;
  padding:7px 11px;font-size:12.5px;cursor:pointer;line-height:1;min-height:34px;display:inline-flex;
  align-items:center;gap:6px;transition:background .18s var(--ease),border-color .18s var(--ease),color .18s var(--ease),transform .08s var(--ease)}
.cp-btn:hover{background:var(--cp-surface2);color:var(--cp-text)}
.cp-btn:active{transform:scale(.97)}
.cp-btn:disabled,.cp-btn[disabled]{opacity:.32;cursor:default;pointer-events:none}
.cp-btn.on{background:var(--cp-accent-soft);border-color:var(--cp-accent-border);color:var(--cp-warn)}
.cp-btn.cp-strong{background:var(--cp-surface2);border-color:var(--cp-border-strong);color:var(--cp-text)}
.cp-btn.cp-strong:hover{background:var(--cp-surface3)}
.cp-ico{font-size:14px;line-height:1;display:inline-flex;align-items:center;justify-content:center}
/* Icônes SVG (jeu de ligne unifié, currentColor) */
.cp-svgi{width:1.08em;height:1.08em;display:block;flex:0 0 auto}
.cp-ico .cp-svgi{width:16px;height:16px}
.cp-fab-ico .cp-svgi{width:18px;height:18px}
.cp-caret .cp-svgi{width:13px;height:13px}
.cp-door-ico .cp-svgi{width:26px;height:26px}

/* Segmented control (zoom) */
.cp-seg{display:inline-flex;border:1px solid var(--cp-border-strong);border-radius:8px;overflow:hidden}
.cp-seg .cp-btn{border:0;border-radius:0;min-width:38px;justify-content:center;padding:7px 9px}
.cp-seg .cp-btn+.cp-btn{border-left:1px solid var(--cp-border)}

/* Primary CTA (onboarding / login) : 1 bleu par vue */
.cp-primary{background:var(--cp-accent);border:1px solid var(--cp-accent);color:#fff;font-weight:600;
  box-shadow:0 1px 2px rgba(0,0,0,.3)}
.cp-primary:hover{background:var(--cp-accent-strong);color:#fff}
.cp-danger{color:#fff;background:var(--cp-danger);border-color:var(--cp-danger)}
.cp-danger:hover{background:#dc2626;color:#fff}
.cp-link{background:none;border:none;color:var(--cp-mut);cursor:pointer;font-size:12.5px;padding:7px 2px}
.cp-link:hover{color:var(--cp-text)}

/* ── Stage / SVG ── */
#cp-main{flex:1 1 auto;position:relative;min-height:0}
.cp-stage{position:absolute;inset:0;background:var(--cp-stage);touch-action:none;overscroll-behavior:none;-webkit-user-select:none;user-select:none}
/* Rail de catégories = dock flottant opaque, façon palette native autour du plan */
.cp-catrail{position:absolute;right:14px;top:166px;display:flex;flex-direction:column;gap:6px;z-index:14;padding:6px;
  background:var(--cp-surface1);-webkit-backdrop-filter:none;backdrop-filter:none;
  border:1px solid var(--cp-border-strong);border-radius:18px;box-shadow:0 12px 32px rgba(0,0,0,.28);
  max-height:calc(100% - 250px);overflow:auto;scrollbar-width:none;transition:right .18s var(--ease),transform .18s var(--ease)}
.cp-catrail::-webkit-scrollbar{display:none}
body.cp-lib-open .cp-catrail{display:none!important}
/* Bulle flottante Calques */
.cp-fab-layers{position:absolute;right:14px;top:106px;display:flex;align-items:center;gap:8px;padding:9px 15px;
  background:var(--cp-surface1);-webkit-backdrop-filter:none;backdrop-filter:none;
  border:1px solid var(--cp-border-strong);border-radius:999px;cursor:pointer;
  color:var(--cp-text);font-size:13px;font-weight:500;z-index:26;box-shadow:0 12px 32px rgba(0,0,0,.28);
  transition:border-color .15s var(--ease),transform .12s var(--ease)}
.cp-fab-layers:hover{border-color:var(--cp-accent-border-strong)}
.cp-fab-layers:active{transform:scale(.96)}
body.cp-panel-open .cp-fab-layers{right:326px}
body.cp-panel-open.cp-layers-open .cp-fab-layers{right:634px}
.cp-fab-ico{color:var(--cp-accent);font-size:16px;line-height:1}
.cp-fab-lbl{line-height:1}
.cp-fab-count{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;padding:0 7px;
  background:var(--cp-accent);color:#fff;border-radius:999px;font-size:11px;font-weight:700;line-height:1;font-variant-numeric:tabular-nums}
.cp-catrail-btn{width:54px;min-height:56px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:6px 4px;
  background:transparent;border:1px solid transparent;border-radius:14px;cursor:pointer;
  color:var(--cp-text2);transition:background .15s var(--ease),color .15s var(--ease)}
.cp-catrail-btn:hover{background:rgba(255,255,255,.07);color:var(--cp-text)}
.cp-catrail-btn.on{background:var(--cp-accent-soft);color:var(--cp-warn);box-shadow:inset 0 0 0 1px var(--cp-accent-border)}
.cp-catrail-ico{width:32px;height:32px;background:var(--cp-paper);border-radius:9px;display:flex;align-items:center;justify-content:center;box-shadow:0 1px 3px rgba(0,0,0,.25)}
.cp-catrail-ico .cp-lib-prev{width:24px;height:24px}
.cp-catrail-img{display:block;width:25px;height:25px;object-fit:contain}
.cp-catrail-lbl{font-size:9px;letter-spacing:.01em;line-height:1;white-space:nowrap}
@media (max-width:680px){ .cp-catrail{flex-direction:row;left:8px;right:8px;top:auto;bottom:calc(env(safe-area-inset-bottom,0px) + 82px);overflow-x:auto;overflow-y:hidden;gap:4px;max-height:none;border-radius:16px}
  .cp-catrail-btn{flex:0 0 auto;width:50px;min-height:54px}
  /* FAB en bas à droite sur mobile (pouce + pas de collision avec le dock haut) */
  .cp-fab-layers,body.cp-panel-open .cp-fab-layers,body.cp-panel-open.cp-layers-open .cp-fab-layers{top:auto;bottom:calc(env(safe-area-inset-bottom,0px) + 148px);right:12px} }
/* Barre d'échelle (repère métrique persistant, bas-gauche) */
.cp-scalebar{position:absolute;left:12px;bottom:78px;z-index:12;pointer-events:none;display:flex;align-items:center;gap:8px;
  background:var(--cp-surface1);border:1px solid var(--cp-border-strong);border-radius:7px;padding:5px 8px;
  font-size:10px;color:var(--cp-text2);font-variant-numeric:tabular-nums}
.cp-scalebar-bar{height:3px;min-width:10px;background:var(--cp-text2);border-radius:2px;
  box-shadow:0 0 0 1px var(--cp-bg) inset}
.cp-scalebar-lbl{white-space:nowrap;font-weight:600}
#cp-svg{width:100%;height:100%;display:block;touch-action:none;overscroll-behavior:none;cursor:grab;-webkit-user-select:none;user-select:none}
#cp-svg:active{cursor:grabbing}
.cp-grid-layer{pointer-events:none}
.cp-grid{stroke:var(--cp-plan-grid,#d6d3d1);stroke-width:.7px;vector-effect:non-scaling-stroke}
.cp-studio{fill:var(--cp-plan-fill,#fff);stroke:var(--cp-plan-ink,#1c1917);stroke-width:1.6px;vector-effect:non-scaling-stroke}
/* Nuit « breakdown » : contour studio tracé main (filtre) + trait franc */
body:not(.cp-light) #cp-svg .cp-studio{filter:url(#cp-rough);stroke-width:2.2px}
.cp-cote{fill:var(--cp-plan-cote,#57534e);font-weight:600}
.cp-flabel{fill:var(--cp-plan-ink,#1c1917);paint-order:stroke;stroke:var(--cp-plan-halo,#fafaf9);stroke-width:.06px;cursor:move;pointer-events:auto}
.cp-flabel-leader{stroke:#a8a29e;stroke-width:.5px;vector-effect:non-scaling-stroke;fill:none;stroke-dasharray:2 2;pointer-events:none}
.cp-faddr{fill:var(--cp-accent-strong);font-weight:700;paint-order:stroke;stroke:var(--cp-plan-halo,#fafaf9);stroke-width:.05px}
.cp-fprofile{fill:#57534e;font-weight:500;paint-order:stroke;stroke:#fafaf9;stroke-width:.04px}
.cp-fx{cursor:move}
/* Pop-in d'un élément qu'on vient de poser (la propriété `scale` est
   indépendante de l'attribut transform=translate → ne le casse pas).
   transform-origin 0 0 = centre local de l'élément (symbole dessiné autour de 0,0). */
.cp-fx-enter{animation:cp-fx-pop .34s var(--ease) both;transform-origin:0 0}
@keyframes cp-fx-pop{from{opacity:0;scale:.35}60%{opacity:1}to{opacity:1;scale:1}}
/* Zones de texte libres (annotations) */
.cp-anno{cursor:move}
.cp-anno-text{fill:#1c1917;font-weight:600;paint-order:stroke;stroke:#fafaf9;stroke-width:.06px}
.cp-anno.sel .cp-anno-text{filter:drop-shadow(0 0 .055px var(--cp-accent))}
.cp-anno.no-halo .cp-anno-text{paint-order:normal;stroke:none}
.cp-anno-bg{stroke:rgba(28,25,23,.25);stroke-width:.025px;vector-effect:non-scaling-stroke}
.cp-object-sel-box,.cp-anno-sel-box{fill:rgba(37,99,235,.045);stroke:var(--cp-accent);stroke-width:1.1px;vector-effect:non-scaling-stroke;stroke-dasharray:4 3;opacity:.92;pointer-events:none}
.cp-object-selection{pointer-events:none}
.cp-layer-rank-badge{pointer-events:none}
.cp-layer-rank-badge-bg{fill:var(--cp-accent);stroke:var(--cp-plan-fill,#fff);stroke-width:.04px;vector-effect:non-scaling-stroke;filter:drop-shadow(0 1px 2px rgba(0,0,0,.28))}
.cp-layer-rank-badge-txt{fill:#fff;font-weight:800;stroke:none;paint-order:normal}
.cp-anno-arrow{--anno-color:var(--cp-plan-ink,#1c1917);--anno-stroke:3.8px;cursor:move}
.cp-anno-arrow-line{fill:none;stroke:var(--anno-color);stroke-width:var(--anno-stroke);stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke;pointer-events:visibleStroke}
.cp-anno-arrow-head{fill:var(--anno-color);stroke:none;pointer-events:visiblePainted}
.cp-anno-arrow-label-link{fill:none;stroke-width:.7px;stroke-linecap:round;vector-effect:non-scaling-stroke;opacity:.55;pointer-events:none}
.cp-anno-arrow-label{font-weight:700;paint-order:stroke;stroke:var(--cp-plan-fill,#fff);stroke-width:.075px;pointer-events:none}
.cp-anno-arrow.sel .cp-anno-arrow-line{stroke:var(--anno-color);filter:drop-shadow(0 0 .055px var(--cp-accent)) drop-shadow(0 0 .16px var(--cp-accent))}
.cp-anno-arrow.sel .cp-anno-arrow-head{fill:var(--anno-color);filter:drop-shadow(0 0 .055px var(--cp-accent)) drop-shadow(0 0 .16px var(--cp-accent))}
.cp-anno-arrow-preview .cp-anno-arrow-line{fill:none;stroke:var(--cp-accent);stroke-width:3.2px;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke;opacity:.9;pointer-events:none}
.cp-flabel-hit{fill:transparent;stroke:none;pointer-events:all;cursor:move}
.cp-anno-arrow-preview .cp-anno-arrow-head{fill:var(--cp-accent);stroke:none;opacity:.9;pointer-events:none}
.cp-anno-draw{--anno-color:var(--cp-plan-ink,#1c1917);--anno-stroke:3.8px;cursor:move}
.cp-anno-draw-line{fill:none;stroke:var(--anno-color);stroke-width:var(--anno-stroke);stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke;pointer-events:visibleStroke}
.cp-anno-draw.sel .cp-anno-draw-line{filter:drop-shadow(0 0 .055px var(--cp-accent)) drop-shadow(0 0 .16px var(--cp-accent))}
.cp-anno-draw-preview .cp-anno-draw-line{fill:none;stroke:var(--cp-accent);stroke-width:3.4px;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke;opacity:.92;pointer-events:none}
.cp-sym{stroke:var(--fxc,#1c1917);stroke-width:1.4px;vector-effect:non-scaling-stroke;stroke-linejoin:round;stroke-linecap:round}
.cp-fx-lib-img{pointer-events:none}
/* Sur le canvas, les traits de symbole suivent le thème (clairs en nuit) ;
   les aperçus dock/bibliothèque (hors #cp-svg) restent sombres sur tuile claire. */
#cp-svg .cp-sym{stroke:var(--fxc,var(--cp-plan-ink,#1c1917))}
#cp-svg .cp-sym.cp-light-shell,
#cp-svg .cp-sym.cp-light-brandline{stroke:var(--fxc,var(--cp-light-stroke))}
.cp-lib-prev .cp-sym.cp-light-shell,
.cp-lib-prev .cp-sym.cp-light-brandline,
.cp-catrail-ico .cp-sym.cp-light-shell,
.cp-catrail-ico .cp-sym.cp-light-brandline,
.cp-layer-thumb .cp-sym.cp-light-shell,
.cp-layer-thumb .cp-sym.cp-light-brandline{stroke:var(--cp-light-stroke)}
.cp-light-symbol{
  --cp-light-fill:#ffffff;
  --cp-light-soft-fill:#f5f5f4;
  --cp-light-stroke:#1c1917;
  --cp-light-ink:#1c1917;
  --cp-light-mark:#57534e;
}
.cp-light-brand-arri,.cp-light-brand-dedo,.cp-light-brand-k5600,.cp-light-brand-mole{--cp-light-mark:#44403c}
.cp-light-brand-aputure,.cp-light-brand-nanlux,.cp-light-brand-nanlite,.cp-light-brand-godox{--cp-light-mark:#57534e}
.cp-light-brand-astera,.cp-light-brand-linear,.cp-light-brand-moving{--cp-light-mark:#78716c}
.cp-light-brand-kino,.cp-light-brand-profoto,.cp-light-brand-broncolor{--cp-light-mark:#292524}
.cp-light-brand-creamsource,.cp-light-brand-litepanels,.cp-light-brand-litegear,.cp-light-brand-dmg,.cp-light-brand-bbs,.cp-light-brand-cineo{--cp-light-mark:#68625e}
#cp-svg .cp-light-symbol{
  --cp-light-fill:var(--cp-plan-fill,#0b0b0d);
  --cp-light-soft-fill:var(--cp-plan-ink,#f5f5f4);
  --cp-light-stroke:var(--cp-plan-ink,#f5f5f4);
  --cp-light-ink:var(--cp-plan-ink,#f5f5f4);
  --cp-light-mark:#d6d3d1;
}
body.cp-light #cp-svg .cp-light-symbol{
  --cp-light-fill:#ffffff;
  --cp-light-soft-fill:#f5f5f4;
  --cp-light-stroke:#1c1917;
  --cp-light-ink:#1c1917;
  --cp-light-mark:#57534e;
}
.cp-fx.sel .cp-sym.cp-light-shell,
.cp-fx.sel .cp-sym.cp-light-brandline{stroke:var(--cp-accent)}
.cp-fx.sel .cp-sym{stroke:var(--cp-accent);stroke-width:2.4px}
#cp-svg .cp-fx.sel .cp-sym.cp-light-shell,
#cp-svg .cp-fx.sel .cp-sym.cp-light-brandline{stroke:var(--cp-accent)}
/* Poignées de transformation (resize / rotation) */
.cp-sel-box{fill:none;stroke:var(--cp-accent);stroke-width:1px;vector-effect:non-scaling-stroke;stroke-dasharray:4 3;opacity:.7}
.cp-handle-stem{stroke:var(--cp-accent);stroke-width:1px;vector-effect:non-scaling-stroke}
.cp-handle{fill:#fff;stroke:var(--cp-accent);stroke-width:1.5px;vector-effect:non-scaling-stroke;cursor:pointer}
.cp-handle[data-handle="rot"]{cursor:grab}
.cp-handle[data-handle="resize"]{cursor:nwse-resize}
.cp-resize-skeleton{fill:var(--cp-accent-veil);stroke:var(--cp-accent);stroke-width:.8px;stroke-dasharray:3 2;vector-effect:non-scaling-stroke;pointer-events:none}
.cp-resize-grid{stroke:var(--cp-accent);stroke-width:.45px;opacity:.5;vector-effect:non-scaling-stroke;pointer-events:none}
.cp-studio{pointer-events:none}
.cp-cote{pointer-events:none}
.cp-studio-sel-box{fill:none;stroke:var(--cp-accent);stroke-width:1.2px;vector-effect:non-scaling-stroke;stroke-dasharray:5 4;opacity:.9;pointer-events:none}
.cp-studio-handle-hit{fill:transparent;stroke:none;pointer-events:all;cursor:nwse-resize}
.cp-studio-handle{fill:#fff;stroke:var(--cp-accent);stroke-width:1.8px;vector-effect:non-scaling-stroke;cursor:pointer;filter:drop-shadow(0 2px 4px rgba(0,0,0,.28))}
/* Barre d'actions flottante (élément sélectionné) */
.cp-actionbar{position:absolute;display:none;align-items:center;gap:4px;transform:translate(-50%,calc(-100% - 4px));
  background:var(--cp-surface1);border:1px solid var(--cp-border-strong);border-radius:12px;padding:4px;z-index:27;
  box-shadow:0 8px 24px rgba(0,0,0,.42)}
.cp-ab-btn{width:34px;height:34px;display:flex;align-items:center;justify-content:center;background:none;border:none;
  color:var(--cp-text2);cursor:pointer;border-radius:8px;font-size:15px;transition:background .15s var(--ease)}
.cp-ab-btn:hover{background:var(--cp-surface2);color:var(--cp-text)}
.cp-ab-del:hover{background:rgba(239,68,68,.18);color:var(--cp-danger)}
.cp-ab-sep{width:1px;height:20px;background:var(--cp-border);margin:0 4px}
.cp-ab-btn.on{background:var(--cp-accent-soft);color:var(--cp-warn)}
.cp-ab-tool{min-width:78px;height:36px;display:inline-flex;align-items:center;justify-content:center;gap:6px;background:transparent;border:1px solid transparent;border-radius:9px;color:var(--cp-text2);cursor:pointer;font-size:12px;font-weight:600;letter-spacing:0;transition:background .15s var(--ease),color .15s var(--ease),border-color .15s var(--ease)}
.cp-ab-tool .cp-ico{display:flex;width:16px;height:16px;align-items:center;justify-content:center}
.cp-ab-tool:hover{background:var(--cp-surface2);color:var(--cp-text)}
.cp-ab-tool.on{background:var(--cp-accent-soft);border-color:var(--cp-accent-border);color:var(--cp-accent)}
.cp-rot-pop{position:absolute;left:50%;top:calc(100% + 8px);transform:translateX(-50%);display:flex;align-items:center;gap:10px;min-width:230px;background:var(--cp-surface1);border:1px solid var(--cp-border-strong);border-radius:12px;padding:9px 12px;box-shadow:0 12px 30px rgba(0,0,0,.34)}
.cp-rot-pop-val{min-width:38px;font-size:12px;font-weight:700;color:var(--cp-accent);font-variant-numeric:tabular-nums;text-align:right}
.cp-rot-pop-slider{flex:1;accent-color:var(--cp-accent)}
/* Pastilles de couleur (panneau info + barre contextuelle) */
.cp-swatches{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 4px}
.cp-swatch{width:24px;height:24px;border-radius:7px;border:2px solid transparent;cursor:pointer;padding:0;
  box-shadow:0 0 0 1px var(--cp-border-strong) inset}
.cp-swatch.on{border-color:var(--cp-text);box-shadow:0 0 0 1px var(--cp-text)}
.cp-swatch-auto{background:var(--cp-surface2);color:var(--cp-mut);font-size:13px;display:flex;align-items:center;justify-content:center}
.cp-fx-grill{cursor:pointer}
.cp-fx-grill .cp-sym{stroke:#78716c}            /* grill = calque structure, plus discret */
.cp-fx-locked:not(.cp-fx-grill){pointer-events:none}
.cp-fx-grill.cp-fx-locked{pointer-events:auto}
.cp-fx-hit{fill:transparent;stroke:none;pointer-events:all}
.cp-beam{pointer-events:none}
.cp-rig-link{fill:none;stroke:var(--cp-accent);stroke-width:.75px;stroke-dasharray:3 2;opacity:.22;vector-effect:non-scaling-stroke;pointer-events:none}
.cp-rig-link.on{opacity:.68;stroke-width:1px}
.cp-wall .cp-sym{stroke:var(--rc,#1c1917)}       /* murs teintés par la couleur de pièce */
.cp-wall[data-wall]{cursor:pointer}
.cp-wall.sel .cp-sym{stroke:var(--cp-accent);stroke-width:2.4px}
.cp-wall-preview{stroke:var(--cp-accent);stroke-width:2px;vector-effect:non-scaling-stroke;stroke-dasharray:4 3;fill:none}
.cp-wall-preview-snap{stroke:var(--cp-success);stroke-width:2.5px}
.cp-wallend{fill:#fff;stroke:var(--cp-accent);stroke-width:1.5px;vector-effect:non-scaling-stroke;cursor:grab}
.cp-wallend:hover{fill:var(--cp-accent-soft)}
.cp-room-preview{stroke:var(--cp-accent);stroke-width:2px;vector-effect:non-scaling-stroke;stroke-dasharray:4 3;fill:var(--cp-accent-soft);opacity:.7}
.cp-grill-preview{stroke:var(--cp-accent);stroke-width:2.5px;vector-effect:non-scaling-stroke;stroke-dasharray:5 3;fill:none;stroke-linecap:round}
.cp-dim-label{fill:var(--cp-accent-strong);font-weight:700;paint-order:stroke;stroke:#fafaf9;stroke-width:.09px}
.cp-toolhint-txt{font-size:12px;color:var(--cp-text2);padding:0 6px;white-space:nowrap}
.cp-lasso{fill:var(--cp-accent-veil);stroke:var(--cp-accent);stroke-width:1.2px;vector-effect:non-scaling-stroke;stroke-dasharray:4 3}
/* Barre d'alignement multi-sélection */
.cp-multibar{position:absolute;left:50%;bottom:84px;transform:translateX(-50%);display:flex;align-items:center;gap:3px;
  background:var(--cp-surface1);border:1px solid var(--cp-border-strong);border-radius:14px;padding:6px 8px;z-index:46;
  box-shadow:0 12px 32px rgba(0,0,0,.45);max-width:94vw;flex-wrap:wrap;justify-content:center;animation:cp-slide-in .2s var(--ease)}
.cp-multibar-n{font-size:12px;color:var(--cp-mut);padding:0 6px;white-space:nowrap;font-variant-numeric:tabular-nums}
.cp-multibar .cp-btn{min-width:38px;justify-content:center;padding:7px 9px}
/* Navigateur de séquence : split control compact + menu plans/séquences. */
.cp-seqnav{position:absolute;left:50%;bottom:84px;transform:translateX(-50%);display:flex;align-items:center;gap:4px;
  background:rgba(8,18,34,.64);border:1px solid rgba(226,241,255,.16);border-radius:16px;padding:5px;z-index:46;
  box-shadow:0 16px 38px rgba(0,0,0,.42),inset 0 1px 0 rgba(255,255,255,.12);
  -webkit-backdrop-filter:saturate(150%) blur(16px);backdrop-filter:saturate(150%) blur(16px)}
.cp-seqnav .cp-btn{position:relative;z-index:3;min-width:38px;justify-content:center;padding:8px 10px;border-radius:12px}
.cp-seqnav-arrow{width:42px}
.cp-seqnav-mid{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto auto;column-gap:8px;align-items:center;
  min-width:190px;max-width:min(54vw,360px);text-align:left}
.cp-seqnav-title{grid-column:1;min-width:0;font-size:12.5px;font-weight:700;color:var(--cp-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cp-seqnav-sub{grid-column:1;font-size:10.5px;color:var(--cp-mut);white-space:nowrap}
.cp-seqnav-caret{grid-column:2;grid-row:1/3;width:16px;height:16px;color:var(--cp-mut)}
.cp-seqmenu-backdrop{position:fixed;inset:0;z-index:1;background:transparent}
.cp-seqmenu{position:absolute;left:50%;bottom:calc(100% + 9px);transform:translateX(-50%);width:min(520px,calc(100vw - 18px));
  background:var(--cp-surface1);border:1px solid var(--cp-border-strong);border-radius:16px;padding:10px;
  box-shadow:0 18px 48px rgba(0,0,0,.45);animation:cp-float-in .18s var(--ease);z-index:4}
.cp-seqmenu-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:2px 2px 9px;border-bottom:1px solid var(--cp-border)}
.cp-seqmenu-head strong{font-size:14px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cp-seqmenu-head span{font-size:11.5px;color:var(--cp-mut);font-variant-numeric:tabular-nums;white-space:nowrap}
.cp-seqmenu-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px;padding:10px 0}
.cp-seqmenu-grid .cp-btn,.cp-seqmenu-sec .cp-btn{justify-content:center;gap:7px}
.cp-seqmenu-sec{display:grid;grid-template-columns:1fr 1fr 92px;gap:7px;border-top:1px solid var(--cp-border);padding-top:10px}
.cp-seqdock-backdrop{position:fixed;inset:0;z-index:47;background:transparent}
.cp-seqdock{position:fixed;top:64px;right:12px;z-index:48;width:min(520px,calc(100vw - 24px));display:grid;gap:9px;
  background:var(--cp-surface1);color:var(--cp-text);border:1px solid var(--cp-border-strong);border-radius:16px;padding:10px;
  box-shadow:0 18px 48px rgba(0,0,0,.38);animation:cp-float-in .18s var(--ease)}
.cp-seqdock-head{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;padding:2px 2px 8px;border-bottom:1px solid var(--cp-border)}
.cp-seqdock-head>.cp-ico{width:22px;height:22px;color:var(--cp-accent)}
.cp-seqdock-title{min-width:0;display:flex;flex-direction:column;gap:2px}
.cp-seqdock-title strong{font-size:14px;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cp-seqdock-title small{font-size:11.5px;color:var(--cp-mut);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cp-seqdock-context{display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--cp-surface2);border:1px solid var(--cp-border);
  border-radius:12px;padding:8px 9px;color:var(--cp-text2);font-size:12px}
.cp-seqdock-context span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cp-compact{min-height:32px;padding:6px 10px;border-radius:10px}
.cp-seqdock-label{font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--cp-mut);padding:2px 3px 0}
.cp-seqdock-row{display:grid;grid-template-columns:1fr 1fr;gap:7px}
.cp-seqdock-actions{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr) minmax(0,.82fr);gap:7px;padding-top:1px}
.cp-seqdock .cp-btn{justify-content:center;gap:7px;min-width:0}
.cp-seq-create-row{gap:7px;flex-wrap:wrap}
.cp-ob-quick{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:var(--cp-surface2);border:1px solid var(--cp-border);
  border-radius:12px;padding:10px;margin:0 0 12px}
.cp-ob-quick .cp-pick-meta{flex:1;min-width:180px}
.cp-ob-head{display:flex;align-items:flex-start;gap:13px;margin-bottom:12px}
.cp-ob-head h2{margin-top:1px}
.cp-ob-head .cp-sub{margin-bottom:0}
.cp-ob-mark{width:42px;height:42px;border-radius:14px;background:var(--cp-accent-soft);border:1px solid var(--cp-accent-border);color:var(--cp-warn);display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}
.cp-ob-mark .cp-logo{width:38px;height:38px}
.cp-ob-mark .cp-logo .cp-svgi{width:38px;height:38px}
.cp-ob-mark>.cp-svgi{width:23px;height:23px}
.cp-ob-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin:0 0 16px}
.cp-ob-step{height:32px;display:flex;align-items:center;justify-content:center;border:1px solid var(--cp-border);border-radius:9px;color:var(--cp-mut);background:var(--cp-surface2);font-size:11.5px;font-weight:700;white-space:nowrap}
.cp-ob-step.done{color:var(--cp-warn);background:var(--cp-accent-soft);border-color:var(--cp-accent-border)}
.cp-ob-step.on{color:#fff;background:var(--cp-accent);border-color:var(--cp-accent)}
body.cp-light .cp-seqnav{background:rgba(255,255,255,.66);border-color:rgba(15,35,60,.16);box-shadow:0 12px 28px rgba(15,35,60,.16),inset 0 1px 0 rgba(255,255,255,.82)}
body.cp-light .cp-seqnav-title{color:#0f172a}
body.cp-light .cp-seqnav-sub,body.cp-light .cp-seqnav-caret{color:#64748b}
.cp-multibar .cp-sep{height:20px}
@media (max-width:700px){
  .cp-seqnav{bottom:calc(env(safe-area-inset-bottom,0px) + 100px);max-width:calc(100vw - 16px)}
  .cp-seqnav-mid{min-width:156px;max-width:58vw;padding-left:9px;padding-right:8px}
  .cp-seqmenu{bottom:calc(100% + 8px);padding:9px}
  .cp-seqmenu-grid,.cp-seqmenu-sec{grid-template-columns:1fr}
  .cp-seqmenu-sec{gap:6px}
  .cp-seqdock{left:8px!important;right:8px!important;top:auto!important;bottom:calc(env(safe-area-inset-bottom,0px) + 92px);width:auto;max-height:calc(100vh - 130px);overflow:auto;padding:9px}
  .cp-seqdock-row,.cp-seqdock-actions{grid-template-columns:1fr}
}
/* Indicateur d'outil en main (bas-centre) : on sait toujours quel outil est actif */
.cp-toolind{position:absolute;left:50%;bottom:calc(env(safe-area-inset-bottom,0px) + 138px);transform:translateX(-50%);display:flex;align-items:center;gap:10px;
  flex-wrap:wrap;justify-content:center;background:var(--cp-surface1);border:1px solid var(--cp-accent);border-radius:14px;
  padding:7px 8px 7px 12px;z-index:46;box-shadow:0 12px 32px rgba(0,0,0,.45);max-width:min(96vw,560px);
  animation:cp-slide-in .2s var(--ease)}
.cp-toolind-main{flex:1 1 auto}
.cp-toolind-ico{display:flex;color:var(--cp-accent);flex:0 0 auto}
.cp-toolind-ico .cp-svgi{width:18px;height:18px}
.cp-toolind-main{display:flex;flex-direction:column;min-width:0}
.cp-toolind-name{font-size:13px;font-weight:600;color:var(--cp-text);white-space:nowrap}
.cp-toolind-hint{font-size:11px;color:var(--cp-mut);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:48vw}
.cp-toolind-kinds{display:flex;gap:4px;flex:0 0 auto}
.cp-toolind-done{flex:0 0 auto}
@media (max-width:600px){ .cp-toolind{bottom:calc(env(safe-area-inset-bottom,0px) + 96px);flex-wrap:wrap;max-width:96vw} .cp-toolind-hint{display:none} }
/* Ouverture (baie) dans un mur : trait de seuil pointillé discret */
.cp-wall-openline{stroke:var(--rc,#1c1917);stroke-width:.7px;stroke-dasharray:1.5 1.5;vector-effect:non-scaling-stroke;opacity:.5;fill:none}
.cp-wall-openarc{stroke:var(--rc,#57534e);stroke-width:.7px;vector-effect:non-scaling-stroke;fill:none;opacity:.8}
/* Barre d'outils flottante (outils prioritaires, repliable) — dock bas-centre
   partout, y compris navigateur desktop : proche de la main et du plan. */
.cp-floatbar{position:fixed;left:50%;bottom:calc(env(safe-area-inset-bottom,0px) + 18px);transform:translateX(-50%);z-index:30;display:flex;flex-direction:row;flex-wrap:wrap;align-items:stretch;justify-content:center;gap:8px;padding:10px;border-radius:20px;background:rgba(8,18,34,.52);border:1px solid rgba(226,241,255,.16);box-shadow:0 10px 16px rgba(0,0,0,.34),inset 0 1px 0 rgba(255,255,255,.16);-webkit-backdrop-filter:saturate(155%) blur(18px);backdrop-filter:saturate(155%) blur(18px);width:max-content;max-width:calc(100vw - 16px)}
.cp-floatbar-mini{padding:8px;border-radius:18px}
.cp-floatbtn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;width:76px;min-height:68px;padding:9px 8px;border:1px solid rgba(226,241,255,.12);border-radius:15px;background:rgba(255,255,255,.08);color:rgba(248,251,255,.86);cursor:pointer;font-size:11.5px;font-weight:600;line-height:1.08;transition:background .16s var(--ease),border-color .16s var(--ease),color .16s var(--ease),box-shadow .16s var(--ease),transform .08s var(--ease)}
.cp-floatbtn .cp-ico{width:26px;height:26px}
.cp-floatbtn .cp-ico .cp-svgi{width:24px;height:24px}
.cp-floatbtn:hover{background:rgba(255,255,255,.14);border-color:rgba(226,241,255,.22);color:var(--cp-text,#f8fbff)}
.cp-floatbtn:active{transform:translateY(1px) scale(.98)}
.cp-floatbtn:focus-visible{outline:2px solid rgba(96,165,250,.9);outline-offset:2px}
.cp-floatbtn.on{background:rgba(37,99,235,.74);border-color:rgba(96,165,250,.62);color:#fff;box-shadow:0 6px 12px rgba(37,99,235,.22),inset 0 1px 0 rgba(255,255,255,.18)}
.cp-floatbtn-lbl{white-space:nowrap}
.cp-floatbar-collapse{border:0;border-left:1px solid rgba(226,241,255,.12);background:rgba(255,255,255,.06);color:var(--cp-mut,#99adc3);cursor:pointer;padding:0 11px;border-radius:14px;min-width:38px}
.cp-floatbar-collapse .cp-ico{width:18px;height:18px;transform:rotate(-90deg)}
@media(max-width:760px) and (pointer:coarse){.cp-floatbar{bottom:calc(env(safe-area-inset-bottom,0px) + 12px);gap:6px;padding:7px;max-width:calc(100vw - 12px)}.cp-floatbtn{width:62px;min-height:56px;gap:4px;font-size:10px;padding:6px 5px;border-radius:13px}.cp-floatbtn .cp-ico{width:22px;height:22px}.cp-floatbtn .cp-ico .cp-svgi{width:21px;height:21px}.cp-floatbar-collapse{min-height:56px}}
@media(max-width:430px) and (pointer:coarse){.cp-floatbar{left:8px;right:8px;bottom:calc(env(safe-area-inset-bottom,0px) + 10px);transform:none;flex-wrap:nowrap;justify-content:flex-start;gap:5px;padding:6px;max-width:none;overflow-x:auto;overflow-y:hidden;scrollbar-width:none}.cp-floatbar::-webkit-scrollbar{display:none}.cp-floatbtn{flex:0 0 56px;width:56px;min-height:52px;font-size:9.5px}.cp-floatbar-collapse{flex:0 0 34px;min-width:34px;min-height:52px;padding:0 7px}}
@media(min-width:761px) and (max-width:900px) and (pointer:coarse){.cp-floatbar{gap:6px;padding:7px;border-radius:18px}.cp-floatbtn{width:64px;min-height:58px;gap:4px;font-size:10.5px;padding:7px 5px}.cp-floatbtn .cp-ico{width:23px;height:23px}.cp-floatbar-collapse{min-height:58px}}
.cp-wallopen{cursor:grab}
.cp-wallopen:active{cursor:grabbing}
.cp-wallopen-dot{fill:var(--cp-accent,#2563eb);stroke:#fff;stroke-width:.02px;vector-effect:non-scaling-stroke}
/* Ligne d'ouverture dans le panneau mur */
.cp-open-row{display:flex;align-items:center;gap:6px;margin:4px 0;font-size:12px}
.cp-open-lbl{flex:0 0 auto;color:var(--cp-text2);white-space:nowrap}
.cp-open-w{display:flex;align-items:center;gap:3px;flex:0 0 auto}
.cp-open-w input{width:54px}
.cp-open-pos{flex:1;min-width:40px}
.cp-leader-line{stroke:#78716c;stroke-width:.6px;vector-effect:non-scaling-stroke;fill:none;stroke-dasharray:3 2}
.cp-leader-text{fill:var(--cp-plan-ink,#1c1917);paint-order:stroke;stroke:var(--cp-plan-halo,#fafaf9);stroke-width:.07px;font-weight:500}
.cp-leader-addr{fill:var(--cp-accent-strong);font-weight:700;paint-order:stroke;stroke:#fafaf9;stroke-width:.04px}
.cp-empty{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--cp-mut)}
/* Empty state : guide la 1re action (n'intercepte pas le pan du plan) */
.cp-emptyhint{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  pointer-events:none;padding:20px;z-index:10}
.cp-emptyhint-card{pointer-events:none;background:rgba(28,25,23,.96);border:1px solid var(--cp-border-strong);
  border-radius:18px;padding:22px 24px;max-width:420px;text-align:center;box-shadow:0 18px 48px rgba(0,0,0,.4);
  animation:cp-pop .3s var(--ease)}
.cp-emptyhint-t{font-size:16px;font-weight:700;letter-spacing:-.01em;color:var(--cp-text)}
.cp-emptyhint-s{font-size:13px;color:var(--cp-text2);margin:7px 0 16px;line-height:1.5}
.cp-emptyhint-actions{display:flex;flex-direction:column;gap:8px;pointer-events:auto}
.cp-emptyhint-actions .cp-btn{justify-content:center;width:100%}

/* ── Info panel ── */
.cp-panel{position:absolute;top:96px;right:0;width:312px;max-width:88vw;height:calc(100% - 96px);background:var(--cp-surface1);
  border-left:1px solid var(--cp-border);padding:16px;overflow:auto;z-index:28;
  box-shadow:-12px 0 32px rgba(0,0,0,.35);animation:cp-slide-in .24s var(--ease)}
@keyframes cp-slide-in{from{transform:translateX(16px);opacity:.4}to{transform:none;opacity:1}}
.cp-panel-head{display:flex;align-items:center;gap:9px;margin-bottom:14px}
.cp-panel-head strong{flex:1;font-size:15px;letter-spacing:-.01em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cp-dot{width:12px;height:12px;border-radius:4px;flex:0 0 auto}
.cp-x{margin-left:auto;background:none;border:none;color:var(--cp-mut);cursor:pointer;font-size:16px;
  width:30px;height:30px;border-radius:8px;transition:background .18s var(--ease);
  display:inline-flex;align-items:center;justify-content:center}
.cp-x:hover{background:var(--cp-surface2);color:var(--cp-text)}
.cp-x .cp-svgi{width:16px;height:16px}
.cp-layer-acts button .cp-svgi,.cp-planrow-actions .cp-svgi{width:16px;height:16px}
.cp-layer-acts button,.cp-planrow-actions button{display:inline-flex;align-items:center;justify-content:center}
.cp-kv{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;margin:0 0 14px;font-size:13px}
.cp-kv dt{color:var(--cp-mut)}
.cp-kv dd{margin:0;text-align:right;color:var(--cp-text2);font-variant-numeric:tabular-nums;
  min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cp-kv select{max-width:100%;background:var(--cp-surface2);color:var(--cp-text);border:1px solid var(--cp-border-strong);
  border-radius:6px;padding:3px 6px;font-size:12.5px}
.cp-field{display:block;font-size:11px;color:var(--cp-mut);margin:12px 0;letter-spacing:.01em}
.cp-field input[type=range]{width:100%;margin-top:6px;accent-color:var(--cp-accent)}
.cp-field textarea{width:100%;background:var(--cp-surface2);color:var(--cp-text);border:1px solid var(--cp-border-strong);
  border-radius:8px;padding:8px;font-size:14px;resize:vertical;margin-top:6px;transition:border-color .18s var(--ease)}
.cp-field textarea:focus{border-color:var(--cp-accent);outline:none}
/* Resize + taille réelle + rotation rapide (panneau info) */
.cp-sizebox{margin:12px 0;padding:10px;background:var(--cp-surface2);border-radius:10px}
.cp-check{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--cp-text2);cursor:pointer;min-height:34px}
.cp-check input{accent-color:var(--cp-accent);width:16px;height:16px;flex:0 0 auto}
.cp-size-row{display:flex;gap:10px;margin-top:8px}
.cp-size-row label{flex:1;font-size:11px;color:var(--cp-mut);display:flex;flex-direction:column;gap:4px}
.cp-size-row input{background:var(--cp-surface1);color:var(--cp-text);border:1px solid var(--cp-border-strong);
  border-radius:8px;padding:7px;font-size:14px;font-variant-numeric:tabular-nums}
.cp-size-row input:disabled{opacity:.45}
.cp-slider-field{margin:10px 0;padding:10px 0;border-top:1px solid var(--cp-border)}
.cp-slider-field:first-of-type{border-top:0}
.cp-slider-field.is-disabled{opacity:.55}
.cp-slider-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:7px;
  font-size:12px;color:var(--cp-text2)}
.cp-slider-head output{font-size:12px;color:var(--cp-accent);font-weight:700;font-variant-numeric:tabular-nums}
.cp-slider-row{display:grid;grid-template-columns:minmax(0,1fr) 76px;gap:10px;align-items:center}
.cp-slider{width:100%;accent-color:var(--cp-accent);cursor:pointer}
.cp-slider-num{width:76px;background:var(--cp-surface1);color:var(--cp-text);border:1px solid var(--cp-border-strong);
  border-radius:8px;padding:7px 8px;font-size:14px;font-variant-numeric:tabular-nums;text-align:right}
.cp-slider-num:focus{outline:none;border-color:var(--cp-accent)}
.cp-slider:disabled,.cp-slider-num:disabled{cursor:not-allowed}
.cp-rotrow{display:flex;gap:8px;margin:10px 0}
.cp-rotrow .cp-btn{flex:1;justify-content:center;border:1px solid var(--cp-border-strong)}
.cp-cyclo-corners{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin-top:10px}
.cp-cyclo-corner{min-width:0;padding-inline:8px}
.cp-cyclo-corner:disabled{opacity:.42}
.cp-anno-textfield textarea{min-height:74px;font-size:15px;line-height:1.35}
.cp-anno-tools{display:grid;grid-template-columns:repeat(6,1fr);gap:6px;margin:10px 0}
.cp-toolbtn{min-width:0;height:38px;display:flex;align-items:center;justify-content:center;border:1px solid var(--cp-border-strong);border-radius:8px;background:var(--cp-surface2);color:var(--cp-text2);font-size:15px;cursor:pointer}
.cp-toolbtn:hover{background:var(--cp-surface1);color:var(--cp-text)}
.cp-toolbtn.on{background:var(--cp-accent-soft);color:var(--cp-warn);border-color:var(--cp-accent-border-strong)}
.cp-anno-fonts{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin:10px 0 4px}
.cp-anno-fonts .cp-btn{justify-content:center;border:1px solid var(--cp-border-strong)}
.cp-anno-layer-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0 0}
.cp-anno-layer-actions .cp-btn{justify-content:center}
.cp-anno-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}
.cp-anno-actions .cp-danger{grid-column:1/-1;justify-content:center}
.cp-arrow-label-box{margin:12px 0 2px;padding:10px;border:1px solid var(--cp-border);border-radius:12px;background:var(--cp-surface2)}
.cp-arrow-label-box .cp-slider-field{margin-top:10px}
.cp-hint{font-size:11px;color:var(--cp-mut);margin:4px 0 0;line-height:1.4}
/* Hub Projets (Projets → Séquences → Plans) */
.cp-proj-block{margin-bottom:14px}
.cp-proj-card{border:1px solid var(--cp-border-strong);border-radius:12px;padding:12px;margin-bottom:10px;background:var(--cp-surface2)}
.cp-proj-head{display:flex;align-items:center;gap:8px;margin-bottom:8px;flex-wrap:wrap}
.cp-proj-head strong{font-size:14px;letter-spacing:-.01em;flex:0 0 auto}
.cp-proj-head .cp-pick-meta{flex:1}
/* Journal des actions */
.cp-log-list{list-style:none;margin:6px 0 14px;padding:0;max-height:52vh;overflow:auto;display:flex;flex-direction:column;gap:1px}
.cp-log-row{display:flex;align-items:center;gap:10px;padding:7px 8px;border-radius:8px;font-size:13px}
.cp-log-row:hover{background:var(--cp-surface2)}
.cp-log-dot{width:7px;height:7px;border-radius:50%;flex:0 0 auto;background:var(--cp-mut)}
.cp-log-dot.cp-log-ok{background:var(--cp-success)}
.cp-log-dot.cp-log-err{background:var(--cp-danger)}
.cp-log-dot.cp-log-info{background:var(--cp-mut)}
.cp-log-msg{flex:1;color:var(--cp-text2);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cp-log-time{flex:0 0 auto;color:var(--cp-mut);font-size:11px;font-variant-numeric:tabular-nums}
.cp-log-del{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;padding:0;border:0;border-radius:6px;background:transparent;color:var(--cp-mut);cursor:pointer;line-height:0}
.cp-log-del svg{width:13px;height:13px}
.cp-log-del:hover{background:var(--cp-danger);color:#fff}
.cp-field-row{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:13px;color:var(--cp-text2);margin:8px 0;min-height:34px}
.cp-field-row select{background:var(--cp-surface2);color:var(--cp-text);border:1px solid var(--cp-border-strong);
  border-radius:8px;padding:6px 8px;font-size:13px;max-width:60%}
/* Calques : palette flottante compacte, pensée pour garder le plan visible. */
.cp-layers{position:absolute;top:106px;right:14px;width:286px;max-width:min(86vw,320px);max-height:min(58vh,520px);
  background:var(--cp-surface1);border:1px solid var(--cp-border-strong);
  border-radius:14px;padding:10px;overflow:auto;z-index:31;-webkit-backdrop-filter:none;backdrop-filter:none;
  box-shadow:0 18px 44px rgba(0,0,0,.42);animation:cp-float-in .18s var(--ease)}
@keyframes cp-float-in{from{transform:translateY(-8px) scale(.98);opacity:.45}to{transform:none;opacity:1}}
.cp-layers-head{display:flex;align-items:center;gap:9px;margin-bottom:12px}
.cp-layers-head strong{font-size:15px;letter-spacing:-.01em}
.cp-layers-tools{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:-4px 0 9px}
.cp-layers-tools .cp-btn{justify-content:center;min-height:34px;padding:6px 8px;font-size:12px;border-color:var(--cp-border);background:var(--cp-surface2);gap:6px}
.cp-layers-tools .cp-btn:hover{background:var(--cp-surface3)}
.cp-layers-tools .cp-svgi{width:15px;height:15px}
.cp-layers-hint{display:flex;align-items:flex-start;gap:8px;margin:-2px 0 9px;padding:8px 9px;border:1px solid var(--cp-border);
  border-radius:10px;background:color-mix(in srgb,var(--cp-accent) 6%,var(--cp-surface1));color:var(--cp-text2);font-size:11.5px;line-height:1.3}
.cp-layers-hint .cp-ico{color:var(--cp-mut);margin-top:1px}
.cp-layers-hint .cp-svgi{width:15px;height:15px}
.cp-layers-list{display:flex;flex-direction:column;gap:3px}
.cp-layer{display:flex;align-items:center;gap:7px;padding:5px;border-radius:9px;border:1px solid transparent;
  cursor:pointer;transition:background .15s var(--ease)}
.cp-layer:hover{background:var(--cp-surface2)}
.cp-layer.on{background:var(--cp-accent-soft);border-color:var(--cp-accent-border)}
.cp-layer.hidden .cp-layer-thumb,.cp-layer.hidden .cp-layer-name{opacity:.4}
.cp-layer-grip{width:18px;height:30px;flex:0 0 18px;display:flex;align-items:center;justify-content:center;color:var(--cp-mut);
  border-radius:7px;cursor:grab;opacity:.58;touch-action:none}
.cp-layer-grip .cp-svgi{width:15px;height:15px}
.cp-layer:hover .cp-layer-grip,.cp-layer.on .cp-layer-grip{opacity:1}
.cp-layer-grip:hover{background:var(--cp-surface3);color:var(--cp-text)}
.cp-layer-drag{cursor:pointer}
.cp-layer-drag:active{cursor:grabbing}
.cp-layer-dragging{opacity:.54;outline:1px dashed var(--cp-accent-border);outline-offset:-2px}
.cp-layer-drop-on{background:var(--cp-accent-soft);border-color:var(--cp-accent);box-shadow:inset 0 0 0 1px var(--cp-accent),0 0 0 3px color-mix(in srgb,var(--cp-accent) 16%,transparent)}
.cp-layer-drop-group.cp-layer-drop-on{background:color-mix(in srgb,var(--cp-accent) 18%,var(--cp-surface1))}
.cp-layer-group-block{display:flex;flex-direction:column;gap:2px}
.cp-layer-group-block.is-collapsed{gap:0}
.cp-layer-group{background:color-mix(in srgb,var(--cp-accent) 7%,transparent);border-color:var(--cp-border)}
.cp-layer-group:hover{background:color-mix(in srgb,var(--cp-accent) 10%,var(--cp-surface2))}
.cp-layer-child{margin-left:16px;padding-left:7px;border-left:1px solid var(--cp-border)}
.cp-layer-thumb{position:relative;width:30px;height:30px;flex:0 0 auto;background:var(--cp-paper);border-radius:7px;
  display:flex;align-items:center;justify-content:center}
.cp-layer-thumb svg{width:23px;height:23px}
.cp-layer-thumb-group{color:var(--cp-accent);background:var(--cp-accent-soft)}
.cp-layer-thumb-group svg{stroke:currentColor}
.cp-layer-child .cp-layer-thumb{width:26px;height:26px;border-radius:6px}
.cp-layer-child .cp-layer-thumb svg{width:20px;height:20px}
.cp-layer-thumb-anno{color:var(--anno-thumb,var(--cp-accent));background:color-mix(in srgb,var(--cp-accent) 12%,var(--cp-paper))}
.cp-layer-thumb-anno svg{stroke:currentColor}
.cp-layer-thumb.colored .cp-sym{stroke:var(--fxc)}
.cp-layer-dot{position:absolute;right:-3px;bottom:-3px;width:12px;height:12px;border-radius:50%;
  border:2px solid var(--cp-surface1);box-shadow:0 1px 2px rgba(0,0,0,.35)}
.cp-layer-main{flex:1 1 118px;min-width:0;display:flex;flex-direction:column;gap:1px}
.cp-layer-name{font-size:13px;line-height:1.18;color:var(--cp-text);overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;white-space:normal;word-break:break-word}
.cp-layer-cat{font-size:10px;color:var(--cp-mut);text-transform:uppercase;letter-spacing:.04em}
.cp-layer-drop-hint{display:none;font-size:10.5px;color:var(--cp-warn);line-height:1.2}
.cp-layer-group:hover .cp-layer-drop-hint,.cp-layer-drop-group.cp-layer-drop-on .cp-layer-drop-hint{display:block}
.cp-layer-acts{display:flex;align-items:center;gap:1px;flex:0 0 auto}
.cp-layer-acts button{background:none;border:none;color:var(--cp-mut);cursor:pointer;width:24px;height:24px;
  border-radius:7px;font-size:13px;line-height:1;transition:background .15s var(--ease)}
.cp-layer-acts button:hover{background:var(--cp-surface3);color:var(--cp-text)}
.cp-layer-drop-choice{position:sticky;top:0;z-index:3;display:grid;gap:9px;margin:-2px 0 9px;padding:10px;border:1px solid var(--cp-accent-border);border-radius:12px;
  background:color-mix(in srgb,var(--cp-accent) 14%,var(--cp-surface1));box-shadow:0 10px 26px rgba(0,0,0,.24);animation:cp-pop .16s var(--ease)}
.cp-layer-drop-choice-head{display:flex;align-items:center;gap:9px;min-width:0}
.cp-layer-drop-choice-icon{width:30px;height:30px;flex:0 0 auto;display:flex;align-items:center;justify-content:center;border-radius:9px;background:var(--cp-accent);color:#fff}
.cp-layer-drop-choice-icon .cp-svgi{width:16px;height:16px}
.cp-layer-drop-choice-main{display:flex;flex-direction:column;gap:2px;min-width:0}
.cp-layer-drop-choice-main strong{font-size:13px;color:var(--cp-text);line-height:1.15}
.cp-layer-drop-choice-main span{min-width:0;font-size:11px;color:var(--cp-text2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cp-layer-drop-choice-actions{display:grid;grid-template-columns:1fr 1fr auto;gap:6px;align-items:center}
.cp-layer-drop-choice-actions .cp-btn{min-height:34px;padding:6px 8px;justify-content:center;font-size:12px}
.cp-layer-drag-ghost{position:fixed;left:0;top:0;z-index:9997;display:none;min-width:150px;max-width:min(260px,calc(100vw - 24px));pointer-events:none;
  padding:9px 11px;border:1px solid var(--cp-border-strong);border-radius:12px;background:var(--cp-surface1);color:var(--cp-text);
  box-shadow:0 16px 36px rgba(0,0,0,.38);transform:translate3d(0,0,0)}
.cp-layer-drag-ghost.show{display:flex;flex-direction:column;gap:2px}
.cp-layer-drag-ghost.ok{border-color:var(--cp-accent);box-shadow:0 16px 36px rgba(0,0,0,.38),0 0 0 3px color-mix(in srgb,var(--cp-accent) 18%,transparent)}
.cp-layer-drag-ghost strong{font-size:12.5px;line-height:1.15}
.cp-layer-drag-ghost span{font-size:11px;color:var(--cp-mut);line-height:1.2}
.cp-layers-empty{color:var(--cp-mut);font-size:13px;padding:22px 6px;text-align:center;line-height:1.5}
.cp-layers-sec{font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--cp-mut);padding:10px 6px 4px;border-top:1px solid var(--cp-border);margin-top:6px}
@media (max-width:700px){
  .cp-layers{top:auto;left:10px;right:10px;bottom:calc(env(safe-area-inset-bottom,0px) + 76px);
    width:auto;max-width:none;max-height:min(46vh,360px);border-radius:16px;padding:9px}
  .cp-layers-head{margin-bottom:7px}
  .cp-layers-tools{margin-bottom:7px}
  .cp-layers-tools .cp-btn{min-height:40px}
  .cp-layer{padding:5px 4px}
  .cp-layer-child{margin-left:10px;padding-left:6px}
  .cp-layer-grip{width:30px;height:34px;flex-basis:30px;opacity:.85}
  .cp-layer-name{font-size:12.5px}
  .cp-layer-cat{font-size:9px}
  .cp-layer-thumb{width:28px;height:28px}
  .cp-layer-thumb svg{width:21px;height:21px}
  .cp-layer-acts{gap:1px}
  .cp-layer-acts button{width:30px;height:32px}
  .cp-layer-drop-choice-actions{grid-template-columns:1fr}
  .cp-layer-drop-choice-actions .cp-x{justify-self:end}
}

/* ── Panneau Matériel (récap / wrap list) ── */
.cp-gear .cp-gear-total{font-size:12px;color:var(--cp-mut);margin-left:auto;margin-right:8px;font-variant-numeric:tabular-nums}
.cp-gear-grp{margin-bottom:10px}
.cp-gear-grp-head{display:flex;align-items:center;justify-content:space-between;font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--cp-mut);padding:8px 4px 5px;border-bottom:1px solid var(--cp-border)}
.cp-gear-grp-n{background:var(--cp-surface3);color:var(--cp-text2);border-radius:20px;padding:1px 8px;font-variant-numeric:tabular-nums}
.cp-gear-items{list-style:none;margin:4px 0 0;padding:0}
.cp-gear-items li{display:flex;align-items:center;gap:8px;padding:5px 4px;font-size:13px}
.cp-gear-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--cp-text2)}
.cp-gear-qty{font-variant-numeric:tabular-nums;font-weight:700;color:var(--cp-text)}
.cp-gear-note{margin:0;color:var(--cp-mut);font-size:12px;line-height:1.35}
.cp-gear-acts{position:sticky;bottom:0;background:var(--cp-surface1);padding-top:12px;margin-top:8px;border-top:1px solid var(--cp-border);display:flex;flex-direction:column;gap:8px}
.cp-gear-acts .cp-btn{justify-content:center}

/* ── Document d'impression / PDF (caché à l'écran, visible à l'impression) ── */
#cp-print{display:none}
@media print{
  html,body{background:#fff!important}
  body>*{visibility:hidden!important}
  #cp-print,#cp-print *{visibility:visible}
  #cp-print{display:block;position:absolute;left:0;top:0;width:100%;box-sizing:border-box;color:#1c1917;
    font-family:system-ui,-apple-system,sans-serif;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .cp-print-page{padding:12mm 12mm 8mm;box-sizing:border-box}
  .cp-print-cart{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;border-bottom:2px solid #1c1917;padding-bottom:8px;margin-bottom:10px}
  .cp-print-cart h1{font-size:20px;margin:0 0 2px;letter-spacing:-.01em}
  .cp-print-proj{font-size:12px;color:#57534e}
  .cp-print-meta{font-size:11px;color:#1c1917;border-collapse:collapse}
  .cp-print-meta th{text-align:left;color:#78716c;font-weight:500;padding:1px 10px 1px 0}
  .cp-print-meta td{text-align:right;font-variant-numeric:tabular-nums}
  .cp-print-plan{border:1px solid #d6d3d1;padding:4mm;margin-bottom:8px}
  .cp-print-plan svg{width:100%;height:auto;max-height:150mm;display:block}
  .cp-print-cols{display:flex;gap:14px;align-items:flex-start;flex-wrap:wrap}
  .cp-print-legend,.cp-print-sched{flex:1;min-width:200px}
  .cp-print-legend h2,.cp-print-sched h2{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:#78716c;margin:4px 0 6px;border-bottom:1px solid #d6d3d1;padding-bottom:3px}
  .cp-print-legend ul{list-style:none;margin:0;padding:0}
  .cp-print-legend li{display:flex;align-items:center;gap:7px;font-size:12px;padding:2px 0}
  .cp-print-sw{width:11px;height:11px;border:1px solid #1c1917;flex:0 0 auto}
  .cp-print-tbl{width:100%;border-collapse:collapse;font-size:11px;margin-bottom:8px;break-inside:avoid}
  .cp-print-tbl caption{text-align:left;font-weight:700;font-size:12px;padding:2px 0;color:#1c1917}
  .cp-print-tbl caption span{color:#78716c;font-weight:500}
  .cp-print-tbl th{text-align:left;border-bottom:1px solid #1c1917;padding:2px 4px;color:#57534e;font-weight:500}
  .cp-print-tbl td{border-bottom:1px solid #e7e5e4;padding:2px 4px}
  .cp-print-tbl td:last-child,.cp-print-tbl th:last-child{text-align:right;font-variant-numeric:tabular-nums;width:48px}
  .cp-print-foot{font-size:10px;color:#a8a29e;margin-top:8px;border-top:1px solid #d6d3d1;padding-top:4px}
  /* Forcer un rendu clair du plan vectoriel (l'app est sombre) */
  #cp-print .cp-studio{fill:#fff;stroke:#1c1917;stroke-width:1.4px;vector-effect:non-scaling-stroke}
  #cp-print .cp-grid{stroke:#d6d3d1;stroke-width:.6px;vector-effect:non-scaling-stroke}
  #cp-print .cp-sym{stroke:#1c1917;stroke-width:1.4px;vector-effect:non-scaling-stroke;fill:#fff}
  #cp-print .cp-cote,#cp-print .cp-fprofile{fill:#57534e}
  #cp-print .cp-flabel,#cp-print .cp-leader-text,#cp-print .cp-anno-text{fill:#1c1917}
  #cp-print .cp-faddr,#cp-print .cp-leader-addr{fill:#1d4ed8}
  #cp-print .cp-leader-line{stroke:#78716c;stroke-width:.6px;vector-effect:non-scaling-stroke;fill:none}
  #cp-print .cp-anno-arrow-line{fill:none;stroke:var(--anno-color,#1c1917);stroke-width:var(--anno-stroke,3.8px);stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}
  #cp-print .cp-anno-arrow-head{fill:var(--anno-color,#1c1917);stroke:none}
  #cp-print .cp-anno-arrow-label-link{fill:none;stroke-width:.7px;stroke-linecap:round;vector-effect:non-scaling-stroke;opacity:.55}
  #cp-print .cp-anno-arrow-label{font-weight:700;paint-order:stroke;stroke:#fff;stroke-width:.075px}
  @page{size:A4 portrait;margin:8mm}
}

/* ── Overlay / onboarding ── */
.cp-overlay{position:fixed;inset:0;background:rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center;
  z-index:50;padding:16px;animation:cp-fade .2s var(--ease)}
@keyframes cp-fade{from{opacity:0}to{opacity:1}}
.cp-card{background:var(--cp-surface1);border:1px solid var(--cp-border);border-radius:20px;padding:24px;
  width:440px;max-width:94vw;max-height:88vh;overflow:auto;box-shadow:0 24px 64px rgba(0,0,0,.5);
  animation:cp-pop .26s var(--ease)}
@keyframes cp-pop{from{transform:translateY(8px) scale(.985);opacity:.6}to{transform:none;opacity:1}}
.cp-card h2{margin:0 0 6px;font-size:20px;font-weight:700;letter-spacing:-.01em}
.cp-sub{color:var(--cp-mut);font-size:13.5px;margin:0 0 16px}
.cp-err{color:#fca5a5;font-size:13px;margin:0 0 12px}
.cp-card:has(.cp-ob-head){width:560px}

/* Téléphone portrait : Plandefeu se travaille en paysage, comme Shot Designer.
   On bloque seulement les petits écrans tactiles en portrait ; l'iPad reste libre. */
.cp-orient-guard{position:fixed;inset:0;z-index:9997;display:flex;align-items:center;justify-content:center;
  padding:24px;background:var(--cp-bg);color:var(--cp-text)}
.cp-orient-card{width:min(340px,92vw);display:flex;flex-direction:column;align-items:center;text-align:center;gap:12px;
  padding:24px 22px;border:1px solid var(--cp-border-strong);border-radius:22px;background:var(--cp-surface1);
  box-shadow:0 24px 64px rgba(0,0,0,.46)}
.cp-orient-ico{width:74px;height:74px;border-radius:22px;display:flex;align-items:center;justify-content:center;
  background:var(--cp-accent);color:#fff;box-shadow:0 14px 32px rgba(37,99,235,.28)}
.cp-orient-ico .cp-svgi{width:42px;height:42px;stroke-width:1.7}
.cp-orient-card h2{margin:4px 0 0;font-size:22px;letter-spacing:-.02em}
.cp-orient-card p{margin:0;color:var(--cp-text2);font-size:14px;line-height:1.45;max-width:28ch}
.cp-grid3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-bottom:18px}
.cp-grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px 12px;margin-bottom:16px}
.cp-grid3 label,.cp-grid2 label{min-width:0;display:flex;flex-direction:column;gap:5px;font-size:11px;color:var(--cp-mut);font-weight:500}
.cp-grid3 input,.cp-grid2 input{min-width:0;background:var(--cp-surface2);color:var(--cp-text);border:1px solid var(--cp-border-strong);
  border-radius:10px;padding:9px;font-size:16px;font-variant-numeric:tabular-nums;transition:border-color .18s var(--ease)}
.cp-grid3 input:focus,.cp-grid2 input:focus{border-color:var(--cp-accent);outline:none}
@media (max-width:520px){.cp-grid2{grid-template-columns:1fr}}
.cp-field-lg{display:block;font-size:11px;color:var(--cp-mut);font-weight:500;margin-bottom:14px}
.cp-field-lg input{display:block;width:100%;margin-top:6px;background:var(--cp-surface2);color:var(--cp-text);
  border:1px solid var(--cp-border-strong);border-radius:10px;padding:10px 12px;font-size:16px;transition:border-color .18s var(--ease)}
.cp-field-lg input:focus{border-color:var(--cp-accent);outline:none}
/* Onboarding — cartes « 4 portes » */
.cp-doors{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:4px 0 14px}
.cp-door{display:flex;flex-direction:column;align-items:flex-start;gap:3px;text-align:left;background:var(--cp-surface2);
  border:1px solid var(--cp-border);border-radius:14px;padding:15px;cursor:pointer;color:var(--cp-text);min-height:112px;
  transition:border-color .18s var(--ease),background .18s var(--ease),transform .08s var(--ease)}
.cp-door:hover{border-color:var(--cp-accent);background:var(--cp-surface3)}
.cp-door:active{transform:scale(.98)}
.cp-door-ico{width:36px;height:36px;border-radius:11px;display:flex;align-items:center;justify-content:center;background:var(--cp-accent-soft);border:1px solid var(--cp-accent-border);font-size:22px;line-height:1;color:var(--cp-warn);margin-bottom:7px}
.cp-door-t{font-weight:700;font-size:14.5px;letter-spacing:-.01em}
.cp-door-s{font-size:12px;color:var(--cp-mut);line-height:1.28}
@media (max-width:520px){
  .cp-doors{grid-template-columns:1fr}
  .cp-card:has(.cp-ob-head){width:440px}
}
/* Onboarding — import local */
.cp-localtext{width:100%;background:var(--cp-surface2);color:var(--cp-text);border:1px solid var(--cp-border-strong);
  border-radius:12px;padding:11px 13px;font-size:16px;line-height:1.5;resize:vertical;margin-bottom:10px;
  font-family:inherit;transition:border-color .18s var(--ease)}
.cp-localtext:focus{border-color:var(--cp-accent);outline:none}
.cp-local-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:4px}
.cp-local-foot .cp-pick-meta{white-space:normal}
/* Templates & grill — chips */
.cp-h3{font-size:12px;font-weight:600;color:var(--cp-text2);margin:16px 0 8px;letter-spacing:.01em}
/* Aide / raccourcis */
.cp-help-list{display:flex;flex-direction:column;gap:7px}
.cp-help-row{display:flex;align-items:center;gap:12px}
.cp-help-keys{flex:0 0 124px;display:flex;gap:4px;align-items:center}
.cp-help-desc{color:var(--cp-text2);font-size:13px}
.cp-kbd{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;padding:0 6px;
  background:var(--cp-surface2);border:1px solid var(--cp-border-strong);border-bottom-width:2px;border-radius:6px;
  font-size:11px;font-weight:600;color:var(--cp-text);font-variant-numeric:tabular-nums}
/* Patch DMX (interface de lecture) */
.cp-patch-scroll{max-height:54vh;overflow:auto;margin:6px 0 14px}
.cp-patch-summary{display:flex;gap:18px;padding:10px 12px;background:var(--cp-surface2);border-radius:10px;
  margin-bottom:12px;font-size:13px;color:var(--cp-text2)}
.cp-patch-summary strong{color:var(--cp-text);font-variant-numeric:tabular-nums}
.cp-patch-univ{margin-bottom:14px}
.cp-patch-univ-h{display:flex;justify-content:space-between;align-items:center;font-size:12px;font-weight:700;
  color:var(--cp-accent);letter-spacing:.02em;padding:4px 2px;border-bottom:1px solid var(--cp-border);margin-bottom:2px}
.cp-patch-univ-h.cp-patch-warn{color:var(--cp-danger)}
.cp-patch-univ-n{font-weight:600;color:var(--cp-mut);font-variant-numeric:tabular-nums}
.cp-patch-table{width:100%;border-collapse:collapse;font-size:12.5px}
.cp-patch-table th{text-align:left;font-weight:600;color:var(--cp-mut);font-size:10px;text-transform:uppercase;
  letter-spacing:.04em;padding:3px 6px}
.cp-patch-table td{padding:5px 6px;border-top:1px solid var(--cp-border);color:var(--cp-text2)}
.cp-patch-table tbody tr:hover{background:var(--cp-surface2)}
.cp-patch-addr{font-variant-numeric:tabular-nums;color:var(--cp-text);font-weight:600;white-space:nowrap}
.cp-patch-ch{text-align:right;font-variant-numeric:tabular-nums;width:42px}
.cp-patch-mode{color:var(--cp-mut)}
.cp-chiprow{display:flex;flex-wrap:wrap;gap:6px}
.cp-chip{background:var(--cp-surface2);color:var(--cp-text2);border:1px solid var(--cp-border);border-radius:999px;
  padding:8px 14px;font-size:12.5px;cursor:pointer;min-height:38px;line-height:1;
  transition:border-color .18s var(--ease),background .18s var(--ease),color .18s var(--ease),transform .08s var(--ease)}
.cp-acc-list{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.cp-acc-list .cp-chip{cursor:default;padding:5px 8px;min-height:0;font-size:12px;line-height:1.2}
.cp-chip.on{background:var(--cp-accent-soft);border-color:var(--cp-accent-border);color:var(--cp-warn)}
.cp-chip:hover{border-color:var(--cp-accent);background:var(--cp-surface3);color:var(--cp-text)}
.cp-chip:active{transform:scale(.97)}
.cp-row-end{display:flex;gap:8px;justify-content:flex-end;margin-top:10px}
.cp-row-start{display:flex;margin-top:14px}
/* Aperçu aller-retour Cinecyclop (export plan→liste / import liste→plan) */
.cp-xpv{max-height:46vh;overflow:auto;margin:4px 0 14px;display:flex;flex-direction:column;gap:14px}
.cp-xpv-grp{display:flex;flex-direction:column;gap:2px}
.cp-xpv-h{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--cp-mut);
  display:flex;align-items:center;gap:7px;padding:0 2px 4px}
.cp-xpv-n{background:var(--cp-surface3);color:var(--cp-text);border-radius:20px;padding:1px 8px;font-size:11px;letter-spacing:0}
.cp-xpv-row{display:flex;align-items:center;gap:9px;padding:6px 8px;border-radius:9px}
.cp-xpv-row:hover{background:var(--cp-surface2)}
.cp-xpv-q{font-variant-numeric:tabular-nums;font-weight:700;font-size:13px;color:var(--cp-accent);min-width:30px}
.cp-xpv-dot{width:11px;height:11px;border-radius:50%;flex:0 0 auto}
.cp-xpv-l{flex:1;min-width:0;font-size:13px;color:var(--cp-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cp-xpv-tag{font-size:10px;color:var(--cp-mut);border:1px solid var(--cp-border);border-radius:20px;padding:1px 7px;flex:0 0 auto}
.cp-loading{display:flex;align-items:center;gap:10px;color:var(--cp-mut);font-size:13.5px;padding:8px 0 16px}
.cp-loading .cp-boot-ring{width:18px;height:18px;border-width:2px}
.cp-listpick{list-style:none;margin:0 0 12px;padding:0;display:flex;flex-direction:column;gap:6px;max-height:46vh;overflow:auto}
.cp-pick{width:100%;text-align:left;background:var(--cp-surface2);border:1px solid var(--cp-border);border-radius:12px;
  padding:11px 13px;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:10px;color:var(--cp-text);
  transition:border-color .18s var(--ease),background .18s var(--ease),transform .08s var(--ease)}
.cp-pick:hover{border-color:var(--cp-accent);background:var(--cp-surface3)}
.cp-pick:active{transform:scale(.99)}
.cp-pick-name{font-weight:600;font-size:13.5px;display:flex;align-items:center;gap:7px}
.cp-pick-meta{color:var(--cp-mut);font-size:11px;white-space:nowrap;font-variant-numeric:tabular-nums}
/* Lignes plans / pièces (sélection + actions) */
.cp-planrow{display:flex;align-items:stretch;gap:6px;list-style:none}
.cp-planrow.on .cp-plan-pick{border-color:var(--cp-accent);background:var(--cp-surface3)}
.cp-plan-pick{flex:1;min-width:0;text-align:left;background:var(--cp-surface2);border:1px solid var(--cp-border);
  border-radius:12px;padding:9px 12px;cursor:pointer;display:flex;flex-direction:row;align-items:center;gap:11px;color:var(--cp-text);
  transition:border-color .18s var(--ease),background .18s var(--ease)}
.cp-plan-pick:hover{border-color:var(--cp-accent);background:var(--cp-surface3)}
.cp-plan-pick-thumb{flex:0 0 auto;width:60px}
.cp-plan-pick-info{min-width:0;display:flex;flex-direction:column;gap:3px}
/* Aperçu miniature d'un plan (carte d'accueil + liste « Mes plans de feu ») */
.cp-thumb{display:block;width:100%;height:auto;border-radius:7px}
.cp-thumb-box{fill:var(--cp-plan-fill,#fff);stroke:var(--cp-plan-ink,#1c1917);stroke-width:1.1px;vector-effect:non-scaling-stroke}
/* Symboles réels dans la mini-capture : suivent l'encre du plan (thème) + couleur élément */
.cp-thumb .cp-sym{stroke:var(--fxc,var(--cp-plan-ink,#1c1917));stroke-width:1px;vector-effect:non-scaling-stroke;stroke-linejoin:round;stroke-linecap:round}
.cp-thumb .cp-wall .cp-sym{stroke:var(--rc,var(--cp-plan-ink,#1c1917))}
.cp-thumb .cp-wall-openline{stroke:var(--rc,var(--cp-plan-ink));stroke-width:.7px;stroke-dasharray:1 1;vector-effect:non-scaling-stroke;opacity:.5;fill:none}
.cp-thumb-beam{opacity:.62}
.cp-thumb .cp-anno-arrow-line,.cp-thumb .cp-anno-draw-line{stroke:var(--anno-color,var(--cp-plan-ink));stroke-width:calc(var(--anno-stroke,3px) * .45);fill:none;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.cp-thumb .cp-anno-arrow-head{fill:var(--anno-color,var(--cp-plan-ink));stroke:none}
.cp-thumb .cp-anno-arrow-label-link{stroke-width:.55px;opacity:.52;vector-effect:non-scaling-stroke}
.cp-thumb .cp-anno-arrow-label,.cp-thumb .cp-anno-text{paint-order:stroke;stroke:var(--cp-plan-fill);stroke-width:.16em;stroke-linejoin:round;fill:var(--cp-plan-ink)}
.cp-thumb-label{font-size:.32px;fill:var(--cp-plan-ink);opacity:.76;paint-order:stroke;stroke:var(--cp-plan-fill);stroke-width:.16em;stroke-linejoin:round}
.cp-planrow-actions{display:flex;align-items:center;gap:2px;flex:0 0 auto}
.cp-x-danger:hover{background:rgba(239,68,68,.18);color:#fca5a5}

/* ── Login ── */
/* ── Page d'accueil (hub) ── */
.cp-home{position:absolute;inset:0;display:flex;flex-direction:column;background:var(--cp-bg);overflow:hidden}
.cp-home-top{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 24px;
  padding-top:max(14px,env(safe-area-inset-top));border-bottom:1px solid var(--cp-border);flex:0 0 auto}
.cp-home-btn{padding:7px 10px}
.cp-home-scroll{flex:1 1 auto;overflow:auto;padding:28px 24px 90px;max-width:1320px;width:100%;margin:0 auto}
.cp-home-hero{display:grid;grid-template-columns:minmax(0,.82fr) minmax(360px,1fr);gap:24px;align-items:stretch;margin-bottom:20px}
.cp-home-hero-copy{display:flex;flex-direction:column;justify-content:center;min-height:310px}
.cp-home-kicker{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}
.cp-home-stat{display:inline-flex;align-items:baseline;gap:5px;border:1px solid var(--cp-border);background:var(--cp-surface1);border-radius:999px;padding:6px 10px;color:var(--cp-mut);font-size:12px}
.cp-home-stat strong{font-size:15px;color:var(--cp-text);font-variant-numeric:tabular-nums}
.cp-home-hero h1{font-size:36px;font-weight:760;letter-spacing:-.025em;margin:0 0 10px;text-wrap:balance}
.cp-home-hero p{color:var(--cp-text2);font-size:15.5px;line-height:1.55;max-width:64ch;margin:0 0 20px}
.cp-home-cta{display:flex;flex-wrap:wrap;gap:10px}
.cp-home-cta .cp-btn{padding:11px 18px;font-size:14px}
.cp-home-feature{min-width:0;background:var(--cp-surface1);border:1px solid var(--cp-border-strong);border-radius:16px;padding:12px;display:flex;flex-direction:column;gap:10px;box-shadow:0 16px 42px rgba(0,0,0,.22)}
.cp-home-feature-head{display:flex;align-items:center;justify-content:space-between;gap:10px;color:var(--cp-mut);font-size:12px;font-weight:700}
.cp-home-logbtn{min-height:32px;padding:7px 10px}
.cp-home-preview{display:flex;flex-direction:column;gap:10px;width:100%;min-width:0;background:var(--cp-stage);border:1px solid var(--cp-border);border-radius:13px;padding:10px;color:var(--cp-text);cursor:pointer;text-align:left;transition:border-color .16s var(--ease),transform .1s var(--ease)}
.cp-home-preview:hover{border-color:var(--cp-accent-border-strong)}
.cp-home-preview:active{transform:scale(.99)}
.cp-home-preview .cp-thumb{height:326px;background:var(--cp-plan-fill);border-radius:10px}
.cp-home-preview-caption{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;font-size:12px;color:var(--cp-mut)}
.cp-home-preview-caption strong{font-size:14px;color:var(--cp-text)}
.cp-home-preview-caption span:last-child{text-align:right;line-height:1.3}
.cp-home-changelog{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(280px,1fr) auto;gap:16px;align-items:center;background:var(--cp-surface1);border:1px solid var(--cp-border);border-radius:16px;padding:16px 18px;margin-bottom:18px}
.cp-home-changelog h2{font-size:16px;margin:0 0 4px;letter-spacing:-.01em}
.cp-home-changelog p{margin:0;color:var(--cp-text2);font-size:13px;line-height:1.4}
.cp-home-change-list{display:flex;flex-direction:column;gap:5px;color:var(--cp-mut);font-size:12px;line-height:1.35}
.cp-home-change-list span{position:relative;padding-left:14px}
.cp-home-change-list span::before{content:"";position:absolute;left:0;top:.58em;width:5px;height:5px;border-radius:50%;background:var(--cp-accent)}
.cp-home-empty{text-align:center;padding:40px 0;color:var(--cp-mut)}
.cp-home-empty p{margin:0 0 14px;font-size:15px}
.cp-home-card{background:var(--cp-surface1);border:1px solid var(--cp-border);border-radius:16px;padding:18px;margin-bottom:18px}
.cp-home-card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px;flex-wrap:wrap}
.cp-home-card-head h3{font-size:16px;font-weight:700;letter-spacing:-.01em;margin:0;display:flex;align-items:center;gap:8px}
.cp-home-card-title{display:flex;flex-direction:column;gap:3px;min-width:0}
.cp-home-card-acts{display:flex;align-items:center;gap:6px}
/* Crédits projet (chef op / réal / prod) + pastille couleur, façon Cinecyclop */
.cp-proj-dot{width:10px;height:10px;border-radius:50%;flex:0 0 auto;display:inline-block}
.cp-proj-credits{font-size:12px;color:var(--cp-mut);letter-spacing:.01em}
.cp-proj-credits-row{flex:1 0 100%}
.cp-home-seq{margin-bottom:12px}
.cp-home-seq-head{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.cp-home-seq-name{font-size:13px;font-weight:600;color:var(--cp-accent)}
.cp-home-plans{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px}
.cp-home-plan{display:flex;flex-direction:column;gap:7px;align-items:stretch;text-align:left;background:var(--cp-surface2);
  border:1px solid var(--cp-border-strong);border-radius:13px;padding:12px 12px 13px;cursor:pointer;min-height:226px;
  transition:border-color .15s var(--ease),background .15s var(--ease),transform .1s var(--ease)}
.cp-home-plan:hover{border-color:var(--cp-accent);background:var(--cp-surface3)}
.cp-home-plan:active{transform:scale(.98)}
.cp-home-plan .cp-thumb{height:158px;margin-bottom:3px;background:var(--cp-plan-fill);border-radius:10px}
.cp-home-plan-name{font-size:14px;font-weight:600;color:var(--cp-text)}
.cp-home-plan-meta{font-size:11.5px;color:var(--cp-mut);font-variant-numeric:tabular-nums;line-height:1.35}
.cp-changelog-list{display:flex;flex-direction:column;gap:10px;margin:12px 0 18px}
.cp-change-card{background:var(--cp-surface2);border:1px solid var(--cp-border);border-radius:14px;padding:13px 14px}
.cp-change-head{display:flex;align-items:center;gap:9px;margin-bottom:8px}
.cp-change-head strong{color:var(--cp-warn);font-size:12px;border:1px solid var(--cp-accent-border);background:var(--cp-accent-soft);border-radius:7px;padding:2px 7px}
.cp-change-head span{font-weight:700;color:var(--cp-text)}
.cp-change-card ul{margin:0;padding-left:18px;color:var(--cp-text2);font-size:13px;line-height:1.45}
.cp-change-card li+li{margin-top:4px}
@media (max-width:900px){
  .cp-home-hero{grid-template-columns:1fr}
  .cp-home-hero-copy{min-height:0}
  .cp-home-preview .cp-thumb{height:280px}
  .cp-home-changelog{grid-template-columns:1fr}
}
@media (max-width:600px){
  .cp-home-scroll{padding:20px 14px 90px}
  .cp-home-hero h1{font-size:26px}
  .cp-home-preview .cp-thumb{height:230px}
  .cp-home-plans{grid-template-columns:1fr}
}
.cp-loginbar{position:fixed;left:0;right:0;bottom:0;background:var(--cp-surface1);border-top:1px solid var(--cp-border);
  padding:10px 12px;z-index:40;padding-bottom:max(10px,env(safe-area-inset-bottom))}
.cp-login{display:flex;gap:8px;align-items:center;flex-wrap:wrap;max-width:760px;margin:0 auto}
.cp-login input{flex:1 1 190px;background:var(--cp-surface2);color:var(--cp-text);border:1px solid var(--cp-border-strong);
  border-radius:10px;padding:9px 11px;font-size:16px;transition:border-color .18s var(--ease)}
.cp-login input:focus{border-color:var(--cp-accent);outline:none}
.cp-login.compact{margin:12px 0 0}
.cp-login-actions{display:flex;gap:8px;flex:0 0 auto}
.cp-auth-subact{margin:8px 0 0}
.cp-btn.cp-btn-link{background:transparent;border-color:transparent;color:var(--cp-accent);padding-left:0;padding-right:0}
.cp-btn.cp-btn-link:hover{background:transparent;border-color:transparent;color:var(--cp-warn)}

/* ── Library flottante : recherche + catégories autour du canvas ── */
.cp-lib{position:absolute;right:14px;top:84px;bottom:92px;width:min(440px,calc(100vw - 28px));background:var(--cp-surface1);
  border:1px solid var(--cp-border-strong);border-radius:18px;z-index:45;display:flex;flex-direction:column;min-height:0;
  box-shadow:0 18px 48px rgba(0,0,0,.46);animation:cp-lib-in .22s var(--ease)}
@keyframes cp-lib-in{from{transform:translate(12px,8px) scale(.98);opacity:.4}to{transform:none;opacity:1}}
.cp-lib-head{display:grid;grid-template-columns:auto auto minmax(160px,1fr) auto;align-items:center;gap:10px;padding:10px;border-bottom:1px solid var(--cp-border)}
.cp-lib-title{display:flex;flex-direction:column;gap:1px;min-width:86px}
.cp-lib-title strong{font-size:14px;letter-spacing:-.01em;line-height:1.1}
.cp-lib-title span{font-size:10px;color:var(--cp-mut);line-height:1.1}
.cp-lib-modes{display:flex;gap:2px;background:var(--cp-surface2);border:1px solid var(--cp-border-strong);border-radius:9px;padding:2px;flex:0 0 auto}
.cp-lib-mode{background:none;border:0;color:var(--cp-mut);cursor:pointer;font-size:11.5px;padding:6px 9px;border-radius:7px;font-weight:600}
.cp-lib-mode.on{background:var(--cp-accent-soft);color:var(--cp-warn)}
.cp-lib-searchbox{display:flex;align-items:center;gap:7px;min-width:0;background:var(--cp-surface2);color:var(--cp-mut);
  border:1px solid var(--cp-border-strong);border-radius:11px;padding:0 9px;transition:border-color .18s var(--ease),background .18s var(--ease)}
.cp-lib-searchbox:focus-within{border-color:var(--cp-accent);background:var(--cp-surface3)}
.cp-lib-searchbox .cp-ico{width:15px;height:15px;flex:0 0 auto}
.cp-lib-brand{font-size:9px;color:var(--cp-mut);text-transform:uppercase;letter-spacing:.04em;line-height:1}
.cp-lib-search{width:100%;min-width:0;background:transparent;color:var(--cp-text);border:0;padding:9px 0;font-size:16px;line-height:1.25}
.cp-lib-search:focus{outline:none}
.cp-lib-main{display:grid;grid-template-columns:78px minmax(0,1fr);gap:0;min-height:0;flex:1}
.cp-lib-tabs{display:flex;flex-direction:column;gap:6px;padding:10px 8px;overflow:auto;scrollbar-width:none;border-right:1px solid var(--cp-border)}
.cp-lib-tabs::-webkit-scrollbar{display:none}
.cp-lib-tab{flex:0 0 auto;background:transparent;color:var(--cp-text2);border:1px solid transparent;border-radius:13px;
  padding:7px 5px;font-size:10px;cursor:pointer;line-height:1.05;min-height:58px;white-space:normal;
  transition:background .18s var(--ease),border-color .18s var(--ease),color .18s var(--ease),transform .08s var(--ease)}
.cp-lib-tab:hover{background:var(--cp-surface2);color:var(--cp-text)}
.cp-lib-tab:active{transform:scale(.97)}
.cp-lib-tab.on{background:var(--cp-accent-soft);border-color:var(--cp-accent-border);color:var(--cp-warn)}
.cp-lib-cat-tab{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px}
.cp-lib-tab-ico{width:30px;height:30px;border-radius:8px;background:var(--cp-paper);display:flex;align-items:center;justify-content:center;box-shadow:0 1px 3px rgba(0,0,0,.2)}
.cp-lib-tab-ico .cp-lib-prev{width:24px;height:24px;padding:3px}
.cp-lib-tab-label{max-width:58px;overflow:hidden;text-overflow:ellipsis}
.cp-lib-brand-tab{min-height:36px;padding:8px 7px;font-size:11px;font-weight:600;justify-content:center}
.cp-lib-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px;padding:10px;
  overflow-y:auto;align-content:start;min-height:0}
.cp-lib-item{display:flex;flex-direction:column;align-items:center;gap:6px;background:var(--cp-surface2);
  border:1px solid var(--cp-border);border-radius:12px;padding:8px 6px;cursor:pointer;color:var(--cp-text2);
  transition:border-color .18s var(--ease),background .18s var(--ease),transform .08s var(--ease)}
.cp-lib-item:hover{border-color:var(--cp-accent);background:var(--cp-surface3);color:var(--cp-text)}
.cp-lib-item:active{transform:scale(.97)}
.cp-lib-prev{width:100%;height:48px;background:var(--cp-paper);border-radius:8px;display:block;padding:4px}
.cp-lib-section{grid-column:1/-1;color:var(--cp-mut);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;margin:6px 0 -2px}
.cp-lib-asset-img{object-fit:contain}
.cp-lib-prev .cp-sym{stroke:#1c1917;stroke-width:1.4px;vector-effect:non-scaling-stroke;stroke-linejoin:round;stroke-linecap:round}
.cp-lib-name{font-size:11px;text-align:center;line-height:1.2;letter-spacing:-.01em;
  overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.cp-lib-empty{grid-column:1/-1;color:var(--cp-mut);font-size:13px;text-align:center;padding:24px 0}
@media (pointer:coarse){
  .cp-lib-tab{min-height:62px}
  .cp-lib-prev{height:56px}
}
@media (max-width:900px){
  .cp-lib{right:10px;width:min(390px,calc(100vw - 20px))}
  .cp-lib-head{grid-template-columns:1fr auto auto}
  .cp-lib-title{display:none}
  .cp-lib-searchbox{grid-column:1/-1;order:2}
}
@media (max-width:680px){
  .cp-lib{left:8px;right:8px;top:auto;bottom:calc(env(safe-area-inset-bottom,0px) + 148px);width:auto;max-height:min(58vh,460px);border-radius:18px}
  .cp-lib-head{display:flex;align-items:center;flex-wrap:wrap;padding:10px}
  .cp-lib-title{display:flex;min-width:0;flex:1 1 auto}
  .cp-lib-modes{order:3}
  .cp-lib-searchbox{order:4;flex:1 1 100%}
  .cp-lib-main{display:flex;flex-direction:column}
  .cp-lib-tabs{flex-direction:row;border-right:0;border-bottom:1px solid var(--cp-border);padding:8px 10px;overflow-x:auto}
  .cp-lib-tab{width:64px;min-height:58px}
  .cp-lib-brand-tab{width:auto;min-width:74px;min-height:38px}
  .cp-lib-grid{grid-template-columns:repeat(auto-fill,minmax(92px,1fr));padding:10px}
}

/* ── Toast ── */
.cp-toast{position:fixed;left:50%;bottom:var(--cp-toast-bottom,22px);transform:translate(-50%,150%);background:var(--cp-surface2);color:var(--cp-text);
  border:1px solid var(--cp-border-strong);border-radius:12px;padding:11px 16px;font-size:13px;z-index:9998;
  transition:transform .3s var(--ease),bottom .18s var(--ease);max-width:90vw;box-shadow:0 8px 28px rgba(0,0,0,.4);pointer-events:none}
.cp-toast.show{transform:translate(-50%,0)}
.cp-toast.ok{border-color:rgba(16,185,129,.5)}.cp-toast.err{border-color:rgba(239,68,68,.5)}

@media (max-width:680px){
  .cp-top{flex-wrap:wrap;gap:6px}
  .cp-brand{min-width:0;flex:1 1 auto}
  .cp-title{display:none}
  /* La toolbar devient UNE rangée défilable horizontalement (au lieu de 6
     rangées empilées qui mangeaient le tiers haut de l'écran). */
  .cp-actions{order:3;flex:1 1 100%;width:100%;max-width:100%;min-width:0;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;
    justify-content:flex-start;gap:3px;margin-left:0;padding-bottom:3px;
    -webkit-overflow-scrolling:touch;scrollbar-width:none}
  .cp-actions::-webkit-scrollbar{display:none}
  .cp-group,.cp-seg,.cp-btn{flex:0 0 auto}
  .cp-sep{margin:0 2px}
  .cp-emptyhint-card{max-width:100%}
  /* Petit écran : les outils secondaires quittent la barre (cachés en ligne) et
     vont dans le tiroir « Outils » (bottom sheet, tous les outils). */
  .cp-top .cp-tools-more{display:inline-flex}
  .cp-tools-inline{display:none}
}
@media (max-height:520px) and (pointer:coarse){
  .cp-top{flex-wrap:nowrap;gap:7px;padding:6px 8px}
  .cp-logo,.cp-logo .cp-svgi{width:36px;height:36px}
  .cp-brand{min-width:0;flex:0 1 auto;font-size:14px;gap:7px}
  .cp-title{max-width:34px}
  .cp-actions{flex:1 1 auto;min-width:0;max-width:none;margin-left:2px;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;
    justify-content:flex-start;gap:3px;padding-bottom:0;-webkit-overflow-scrolling:touch;scrollbar-width:none}
  .cp-actions::-webkit-scrollbar{display:none}
  .cp-tools-inline{display:none}
  .cp-tools-sheet{top:auto;left:8px;right:8px;bottom:8px;width:auto;max-height:calc(100vh - 16px);border-radius:18px;padding:10px;
    padding-bottom:max(10px,env(safe-area-inset-bottom));animation:cp-lib-up .22s var(--ease)}
  .cp-tools-sheet-grid{flex-direction:row;flex-wrap:wrap;gap:7px}
  .cp-tools-sheet-grid .cp-btn{flex:1 1 30%;min-height:44px}
  .cp-tools-sheet .cp-sheet-primary{display:contents}
  .cp-floatbar{bottom:calc(env(safe-area-inset-bottom,0px) + 6px);flex-wrap:nowrap;gap:5px;padding:6px;border-radius:16px}
  .cp-floatbtn{width:56px;min-height:50px;gap:3px;font-size:9.5px;padding:5px 4px;border-radius:12px}
  .cp-floatbtn .cp-ico{width:20px;height:20px}
  .cp-floatbtn .cp-ico .cp-svgi{width:19px;height:19px}
  .cp-floatbar-collapse{min-height:50px;min-width:34px}
  .cp-catrail{display:none}
  .cp-fab-layers{top:auto;right:10px;bottom:calc(env(safe-area-inset-bottom,0px) + 78px)}
  .cp-scalebar{bottom:calc(env(safe-area-inset-bottom,0px) + 18px)}
}
@media (min-width:681px) and (max-width:900px) and (pointer:coarse){
  .cp-top{flex-wrap:nowrap;gap:8px;padding:8px 10px}
  .cp-brand{min-width:0;flex:0 1 auto}
  .cp-title{display:none}
  .cp-actions{flex:1 1 auto;min-width:0;max-width:none;margin-left:2px;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;
    justify-content:flex-start;gap:4px;padding-bottom:0;-webkit-overflow-scrolling:touch;scrollbar-width:none}
  .cp-actions::-webkit-scrollbar{display:none}
  .cp-tools-inline{display:none}
}
/* Menu « Outils » — au niveau racine, hors header glass (sinon backdrop-filter
   du header piège le position:fixed). Grand écran = menu déroulant (cluster
   vue / E-S / réglages) ; petit écran = bottom sheet (tous les outils). */
.cp-tools-backdrop{position:fixed;inset:0;z-index:119;background:transparent}
.cp-tools-sheet{position:fixed;top:var(--tools-top,54px);left:var(--tools-left,104px);right:auto;z-index:120;width:min(248px,calc(100vw - 16px));background:var(--cp-surface1);
  border:1px solid var(--cp-border-strong);border-radius:14px;padding:6px;box-shadow:0 18px 48px rgba(0,0,0,.5);
  max-height:min(72vh,560px);overflow:auto;animation:cp-pop .18s var(--ease)}
.cp-tools-sheet-grid{display:flex;flex-direction:column;gap:2px}
.cp-tools-sheet-grid .cp-sep{display:none}
.cp-tools-sheet-grid .cp-group{display:contents}
.cp-tools-sheet-grid .cp-btn{width:100%;justify-content:flex-start;min-height:40px}
.cp-tools-sheet .cp-tlabel,.cp-tools-sheet .cp-tools-lbl{display:inline}
.cp-sheet-primary{display:none}        /* grand écran : Outils ne montre que le cluster vue/E-S/réglages */
/* Petit écran : le menu Outils devient un bottom sheet (tous les outils, en grille).
   Placé APRÈS les règles de base pour primer quand le média correspond. */
@media (max-width:680px){
  .cp-tools-backdrop{background:transparent}
  .cp-tools-sheet{top:auto;left:8px;right:8px;bottom:8px;width:auto;border-radius:18px;padding:12px;
    padding-bottom:max(12px,env(safe-area-inset-bottom));box-shadow:0 -14px 44px rgba(0,0,0,.55);max-height:70vh;
    animation:cp-lib-up .26s var(--ease)}
  .cp-tools-sheet-grid{flex-direction:row;flex-wrap:wrap;gap:8px}
  .cp-tools-sheet-grid .cp-btn{flex:1 1 44%;min-height:44px}
  .cp-tools-sheet .cp-sheet-primary{display:contents}
}
@media (max-height:520px) and (pointer:coarse){
  .cp-tools-backdrop{background:transparent}
  .cp-tools-sheet{top:auto;left:8px;right:8px;bottom:8px;width:auto;border-radius:18px;padding:10px;
    padding-bottom:max(10px,env(safe-area-inset-bottom));box-shadow:0 -14px 44px rgba(0,0,0,.55);max-height:calc(100vh - 16px);
    animation:cp-lib-up .22s var(--ease)}
  .cp-tools-sheet-grid{flex-direction:row;flex-wrap:wrap;gap:7px}
  .cp-tools-sheet-grid .cp-btn{flex:1 1 30%;min-height:44px}
  .cp-tools-sheet .cp-sheet-primary{display:contents}
}
@media (min-width:681px) and (max-width:900px) and (pointer:coarse){
  .cp-tools-sheet{width:min(560px,calc(100vw - 16px));max-height:min(76vh,620px)}
  .cp-tools-sheet-grid{flex-direction:row;flex-wrap:wrap;gap:7px}
  .cp-tools-sheet-grid .cp-btn{flex:1 1 42%;min-height:44px}
  .cp-tools-sheet .cp-sheet-primary{display:contents}
}
/* Très petit écran : le bouton de connexion du hub passe en icône seule */
@media (max-width:360px){
  .cp-home-top-acts .cp-acct-lbl{display:none}
  .cp-home-top-acts .cp-btn.cp-strong{padding-left:11px;padding-right:11px}
}
/* Touch : cibles 44px + inputs 16px (anti-zoom iOS) */
@media (pointer:coarse){
  .cp-btn{min-height:44px;padding:10px 12px}
  .cp-seg .cp-btn{min-width:46px}
  .cp-x{width:40px;height:40px}
}
@media(max-width:760px) and (pointer:coarse){
  .cp-subbar{bottom:calc(env(safe-area-inset-bottom,0px) + 84px);left:8px;right:8px;transform:none;width:auto;max-width:none;justify-content:flex-start}
  .cp-subbar-label{position:sticky;left:0;background:var(--cp-surface1);padding-right:4px;z-index:1}
  @keyframes cp-subbar-in{from{opacity:.5;transform:translateY(8px)}to{opacity:1;transform:none}}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;
    transition-duration:.001ms!important}
}

/* ── Liquid glass : toutes les surfaces FLOTTANTES en verre dépoli ──────────────
   Le canvas/plan reste opaque (lisibilité = priorité). Placé en fin de fichier
   pour primer sur les définitions de fond précédentes (même spécificité). */
.cp-top,.cp-subbar,.cp-actionbar,.cp-multibar,.cp-scalebar,.cp-toast,
.cp-layers,.cp-panel,.cp-palette,.cp-card,.cp-loginbar{
  -webkit-backdrop-filter:none;backdrop-filter:none}
/* Chrome léger (barres flottantes) */
.cp-top,.cp-subbar,.cp-actionbar,.cp-multibar,.cp-scalebar,.cp-toast{
  background:var(--cp-surface1);border-color:var(--cp-border);
  box-shadow:0 12px 32px rgba(0,0,0,.28)}
/* Surfaces denses (panneaux latéraux + overlays) : + opaques pour le texte */
.cp-layers,.cp-panel,.cp-palette,.cp-card,.cp-loginbar{
  background:var(--cp-surface1);
  box-shadow:0 18px 48px rgba(0,0,0,.36)}
/* Barre d'échelle : la pastille label hérite aussi du verre */
.cp-scalebar{border:1px solid var(--cp-glass-border);border-radius:12px;padding:5px 10px}
/* Repli : navigateurs sans backdrop-filter → on remonte l'opacité pour rester lisible */
@supports not ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){
  .cp-top,.cp-subbar,.cp-actionbar,.cp-multibar,.cp-scalebar,.cp-toast{background:var(--cp-surface1)}
  .cp-layers,.cp-panel,.cp-palette,.cp-card,.cp-loginbar,.cp-catrail,.cp-fab-layers{background:var(--cp-surface1)}
}

/* ── Compte / connexion (calqué sur Cinecyclop) ── */
.cp-home-top-acts{display:flex;align-items:center;gap:10px;min-width:0}
/* Le bouton « Reprendre » se rétrécit et tronque (petit écran natif) pour que le
   bouton compte/connexion reste TOUJOURS visible et atteignable à droite. */
.cp-home-resume{flex:1 1 auto;min-width:0}
.cp-home-resume .cp-btn-lbl{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cp-home-top-acts .cp-acct-btn,.cp-home-top-acts .cp-acct-btn-ico{flex:0 0 auto}
.cp-acct-btn{width:38px;height:38px;border-radius:50%;border:1px solid var(--cp-glass-border);
  background:var(--cp-accent-soft);color:var(--cp-warn);font-weight:700;font-size:13px;cursor:pointer;
  display:inline-flex;align-items:center;justify-content:center;letter-spacing:.02em;flex:0 0 auto;
  -webkit-backdrop-filter:none;backdrop-filter:none}
.cp-acct-btn:hover{border-color:var(--cp-accent-border-strong)}
.cp-acct-btn-ico{flex:0 0 auto}
@media (max-width:600px){
  .cp-home-top{gap:8px;padding-left:14px;padding-right:14px}
  .cp-home-top .cp-brand{flex:1 1 auto;min-width:0;gap:8px;font-size:14px;white-space:nowrap;overflow:hidden}
  .cp-home-top .cp-logo,.cp-home-top .cp-logo .cp-svgi{width:38px;height:38px}
  .cp-home-top-acts{gap:8px;flex:0 0 auto;max-width:calc(100vw - 178px)}
  .cp-home-resume{max-width:min(45vw,220px);padding-left:10px;padding-right:10px}
}
@media (max-width:430px){
  .cp-home-top-acts{max-width:none}
  .cp-home-resume{width:42px;min-width:42px;max-width:42px;height:40px;padding:0;justify-content:center}
  .cp-home-resume .cp-btn-lbl{display:none}
  .cp-home-top-acts .cp-acct-lbl{display:none}
  .cp-home-top-acts .cp-btn[data-a="account-open"]{width:42px;min-width:42px;max-width:42px;height:40px;padding:0;justify-content:center}
}
.cp-acct-benefits{border:1px solid var(--cp-border-strong);border-radius:14px;background:var(--cp-surface2);
  padding:14px 16px;margin:4px 0 16px}
.cp-acct-benefits-lbl{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--cp-mut);font-weight:700;margin-bottom:10px}
.cp-acct-benefits ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:9px}
.cp-acct-benefits li{display:flex;align-items:flex-start;gap:10px;font-size:13.5px;color:var(--cp-text2);line-height:1.35}
.cp-acct-check{color:var(--cp-accent);flex:0 0 auto;margin-top:1px}
.cp-acct-check .cp-svgi{width:16px;height:16px;stroke-width:2.4}
.cp-acct-google{width:100%;justify-content:center;margin-bottom:14px;min-height:46px;font-weight:600}
.cp-acct-form{display:flex;flex-direction:column;gap:0}
.cp-acct-auth-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:4px}
.cp-acct-form .cp-primary,.cp-acct-auth-actions .cp-btn{width:100%;justify-content:center;min-height:46px}
.cp-reset-card .cp-hint.ok{color:#16a34a}
.cp-reset-card .cp-hint.err{color:#dc2626}
.cp-acct-head{display:flex;align-items:center;gap:14px;margin:6px 0 20px}
.cp-acct-avatar{width:54px;height:54px;border-radius:50%;background:var(--cp-accent-soft);color:var(--cp-warn);
  font-weight:700;font-size:19px;display:flex;align-items:center;justify-content:center;flex:0 0 auto;
  border:1px solid var(--cp-accent-border)}
.cp-acct-id{min-width:0}
.cp-acct-email{font-size:15px;font-weight:600;color:var(--cp-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cp-acct-sub{font-size:12.5px;color:var(--cp-mut);margin-top:3px;line-height:1.35}
.cp-row-split{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:18px;flex-wrap:wrap}

/* ── Mur de connexion plein écran (web) ── */
.cp-gate{position:fixed;inset:0;z-index:60;display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:20px;padding:24px;background:radial-gradient(120% 120% at 50% 0%,#0f1b2d 0%,var(--cp-bg) 70%);overflow:auto}
.cp-gate-brand{display:flex;align-items:center;gap:8px;font-weight:700;font-size:18px;letter-spacing:-.015em}
.cp-gate-card{width:420px;max-width:94vw;background:var(--cp-surface1);-webkit-backdrop-filter:none;
  backdrop-filter:none;border:1px solid var(--cp-border-strong);border-radius:20px;padding:26px;
  box-shadow:0 18px 48px rgba(0,0,0,.36);animation:cp-pop .2s var(--ease)}
.cp-gate-card h2{margin:0 0 6px}

/* ── Boutons OAuth (Apple + Google) ── */
.cp-acct-oauth{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:4px 0 12px}
.cp-oauth{justify-content:center;min-height:46px;gap:9px;font-weight:600;font-size:14px;border-radius:12px}
.cp-oauth-logo{width:18px;height:18px;flex:0 0 auto}
.cp-oauth-apple{background:#000;border-color:#000;color:#fff}
.cp-oauth-apple:hover{background:#171717;border-color:#171717;color:#fff}
.cp-oauth-google{background:#fff;border-color:#dadce0;color:#3c4043}
.cp-oauth-google:hover{background:#f6f7f8;border-color:#cdd1d6;color:#3c4043}
.cp-acct-sep{display:flex;align-items:center;gap:10px;margin:2px 0 12px;color:var(--cp-mut);font-size:10px;text-transform:uppercase;letter-spacing:.08em}
.cp-acct-sep::before,.cp-acct-sep::after{content:"";flex:1;height:1px;background:var(--cp-border)}
@media (max-width:380px){.cp-acct-oauth{grid-template-columns:1fr}}
@media (max-width:520px){
  .cp-login-actions,.cp-acct-auth-actions{width:100%;grid-template-columns:1fr}
  .cp-login-actions{flex-direction:column}
}

/* ── Journal des actions : popover déroulant (ancré sous l'horloge) ── */
.cp-logpop-backdrop{position:fixed;inset:0;z-index:40;background:transparent}
.cp-logpop{position:fixed;z-index:41;width:300px;max-width:92vw;background:var(--cp-surface1);
  -webkit-backdrop-filter:none;backdrop-filter:none;
  border:1px solid var(--cp-border-strong);border-radius:14px;box-shadow:0 18px 48px rgba(0,0,0,.36);
  padding:8px 10px 10px;animation:cp-logpop-in .16s var(--ease);transform-origin:top left}
@keyframes cp-logpop-in{from{opacity:0;transform:translateY(-6px) scale(.98)}to{opacity:1;transform:none}}
.cp-logpop-head{display:flex;align-items:center;gap:8px;padding:2px 2px 6px;border-bottom:1px solid var(--cp-border)}
.cp-logpop-head strong{font-size:13px;flex:1}
.cp-logpop-clear{background:none;border:none;color:var(--cp-mut);font-size:12px;cursor:pointer;padding:4px 6px;border-radius:6px}
.cp-logpop-clear:hover{color:var(--cp-text);background:var(--cp-surface2)}
.cp-logpop .cp-log-list{max-height:300px;margin:6px 0 0}
.cp-log-empty{color:var(--cp-mut);font-size:12.5px;padding:14px 6px;text-align:center;list-style:none}

/* ── Préférences de compte : taille du texte (zoom toute l'interface) ── */
#cp-root{zoom:var(--cp-zoom,1);width:calc(100vw / var(--cp-zoom,1));height:calc(100vh / var(--cp-zoom,1))}
/* ── Thème jour (override des variables ; le plan reste sur papier clair) ── */
body.cp-light{
  --cp-bg:#f6f8fb; --cp-surface1:#ffffff; --cp-surface2:#eef3f9; --cp-surface3:#dce7f3;
  --cp-border:rgba(15,35,60,.12); --cp-border-strong:#bfd0e4;
  --cp-text:#0f172a; --cp-text2:#334155; --cp-mut:#64748b;
  --cp-stage:#e8eef7; --cp-paper:#ffffff;
  /* JOUR : plan sur papier clair (traits sombres) */
  --cp-plan-fill:#ffffff; --cp-plan-ink:#0f172a; --cp-plan-grid:#d4deeb; --cp-plan-cote:#475569; --cp-plan-halo:#ffffff;
  --cp-light-fill:#ffffff; --cp-light-soft-fill:#f8fafc; --cp-light-stroke:#0f172a; --cp-light-ink:#0f172a; --cp-light-mark:#475569;
  --cp-glass-bg:rgba(255,255,255,.64); --cp-glass-bg-strong:rgba(255,255,255,.88);
  --cp-glass-border:rgba(15,35,60,.12); --cp-glass-hi:inset 0 1px 0 rgba(255,255,255,.7);
  --cp-glass-shadow:0 12px 34px rgba(15,35,60,.14);
  --cp-liquid-filter:saturate(150%) blur(8px);
  --cp-liquid-bg:linear-gradient(180deg,rgba(255,255,255,.58),rgba(255,255,255,.22)),rgba(239,246,255,.30);
  --cp-liquid-bg-strong:linear-gradient(180deg,rgba(255,255,255,.70),rgba(255,255,255,.32)),rgba(239,246,255,.40);
  --cp-liquid-item-bg:linear-gradient(180deg,rgba(255,255,255,.52),rgba(255,255,255,.18)),rgba(255,255,255,.12);
  --cp-liquid-item-hover:linear-gradient(180deg,rgba(255,255,255,.76),rgba(255,255,255,.30)),rgba(255,255,255,.18);
  --cp-liquid-item-border:rgba(15,35,60,.11);
  --cp-liquid-border:rgba(15,35,60,.14);
  --cp-liquid-on-bg:linear-gradient(180deg,rgba(96,165,250,.82),rgba(37,99,235,.64));
  --cp-liquid-shadow:0 16px 34px rgba(15,35,60,.14),inset 0 1px 0 rgba(255,255,255,.72),inset 0 -1px 0 rgba(255,255,255,.24);
}
body.cp-light .cp-gate{background:radial-gradient(120% 120% at 50% 0%,#ffffff 0%,var(--cp-bg) 70%)}
body.cp-light .cp-catrail-btn:hover{background:rgba(15,35,60,.07)}
body.cp-light .cp-floatbar{background:rgba(255,255,255,.58);border-color:rgba(15,35,60,.18);box-shadow:0 10px 16px rgba(15,35,60,.16),inset 0 1px 0 rgba(255,255,255,.82)}
body.cp-light .cp-floatbtn{background:rgba(255,255,255,.48);border-color:rgba(15,35,60,.12);color:#334155}
body.cp-light .cp-floatbtn:hover{background:rgba(255,255,255,.74);border-color:rgba(15,35,60,.18);color:#0f172a}
body.cp-light .cp-floatbtn.on{background:rgba(37,99,235,.82);border-color:rgba(29,78,216,.5);color:#fff}
body.cp-light .cp-floatbar-collapse{background:rgba(255,255,255,.42);border-left-color:rgba(15,35,60,.14);color:#64748b}

/* Liquid Glass global : une seule matière pour tout le chrome flottant. */
.cp-top,.cp-home-top,.cp-subbar,.cp-floatbar,.cp-catrail,.cp-fab-layers,.cp-tools-sheet,.cp-lib,
.cp-actionbar,.cp-multibar,.cp-seqnav,.cp-seqmenu,.cp-seqdock,
.cp-toolind,.cp-scalebar,.cp-toast,.cp-rot-pop,.cp-logpop{
  background:var(--cp-liquid-bg);border-color:var(--cp-liquid-border);
  box-shadow:var(--cp-liquid-shadow);-webkit-backdrop-filter:var(--cp-liquid-filter);backdrop-filter:var(--cp-liquid-filter)}
.cp-tools-sheet,.cp-lib,.cp-actionbar,.cp-multibar,.cp-seqmenu,.cp-seqdock,.cp-toolind,.cp-rot-pop,
.cp-layers,.cp-panel,.cp-palette,.cp-card,.cp-gate-card,.cp-loginbar,.cp-logpop,
.cp-home-feature,.cp-home-changelog,.cp-home-card{
  background:var(--cp-liquid-bg-strong)}
.cp-layers,.cp-panel,.cp-palette,.cp-card,.cp-gate-card,.cp-loginbar,
.cp-home-feature,.cp-home-changelog,.cp-home-card{
  border-color:var(--cp-liquid-border);box-shadow:var(--cp-liquid-shadow);
  -webkit-backdrop-filter:var(--cp-liquid-filter);backdrop-filter:var(--cp-liquid-filter)}
.cp-floatbtn,.cp-floatbar-collapse,.cp-catrail-btn,.cp-tools-sheet-grid .cp-btn:not(.cp-primary),
.cp-lib-item,.cp-lib-searchbox,.cp-lib-modes,.cp-seqnav .cp-btn,.cp-seqdock-context,
.cp-seqmenu-grid .cp-btn:not(.cp-primary),.cp-seqmenu-sec .cp-btn:not(.cp-primary),
.cp-home-stat,.cp-home-preview,.cp-home-plan,.cp-change-card,.cp-door,.cp-pick,.cp-proj-card,
.cp-layer,.cp-layers-tools .cp-btn,.cp-sizebox,.cp-arrow-label-box,.cp-acct-benefits,.cp-acct-prefs{
  background:var(--cp-liquid-item-bg);border-color:var(--cp-liquid-item-border)}
.cp-floatbtn:hover,.cp-catrail-btn:hover,.cp-tools-sheet-grid .cp-btn:not(.cp-primary):hover,
.cp-lib-item:hover,.cp-lib-searchbox:focus-within,.cp-lib-mode:hover,.cp-lib-tab:hover,
.cp-seqnav .cp-btn:hover,.cp-seqmenu-grid .cp-btn:not(.cp-primary):hover,
.cp-seqmenu-sec .cp-btn:not(.cp-primary):hover,.cp-ab-btn:hover,.cp-ab-tool:hover,
.cp-home-preview:hover,.cp-home-plan:hover,.cp-door:hover,.cp-pick:hover,.cp-layer:hover{
  background:var(--cp-liquid-item-hover)}
.cp-floatbtn.on,.cp-catrail-btn.on,.cp-lib-tab.on,.cp-lib-mode.on,.cp-ab-btn.on,.cp-ab-tool.on{
  background:var(--cp-liquid-on-bg);border-color:rgba(147,197,253,.62);color:#fff}
.cp-floatbtn,.cp-floatbar-collapse,.cp-catrail-btn,.cp-tools-sheet-grid .cp-btn:not(.cp-primary),
.cp-lib-tab,.cp-lib-mode,.cp-seqnav .cp-btn,.cp-ab-btn,.cp-ab-tool{
  text-shadow:0 1px 2px rgba(0,0,0,.42)}
body.cp-light .cp-floatbtn,body.cp-light .cp-floatbar-collapse,body.cp-light .cp-catrail-btn,
body.cp-light .cp-tools-sheet-grid .cp-btn:not(.cp-primary),body.cp-light .cp-lib-tab,
body.cp-light .cp-lib-mode,body.cp-light .cp-seqnav .cp-btn,body.cp-light .cp-ab-btn,body.cp-light .cp-ab-tool{
  text-shadow:0 1px 1px rgba(255,255,255,.55)}
.cp-overlay{background:rgba(3,8,22,.26)}
body.cp-light .cp-overlay{background:rgba(226,236,248,.34)}
@supports not ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){
  .cp-top,.cp-home-top,.cp-subbar,.cp-floatbar,.cp-catrail,.cp-fab-layers,.cp-tools-sheet,.cp-lib,
  .cp-actionbar,.cp-multibar,.cp-seqnav,.cp-seqmenu,.cp-seqdock,
  .cp-toolind,.cp-scalebar,.cp-toast,.cp-rot-pop,.cp-logpop,
  .cp-layers,.cp-panel,.cp-palette,.cp-card,.cp-gate-card,.cp-loginbar,
  .cp-home-feature,.cp-home-changelog,.cp-home-card{background:var(--cp-surface1)}
}
/* ── Contraste élevé ── */
body.cp-contrast{--cp-border:rgba(120,113,108,.55);--cp-mut:#57534e;--cp-text2:#292524}
body.cp-contrast .cp-btn{border-color:var(--cp-border-strong)}
body.cp-contrast .cp-glass,body.cp-contrast .cp-panel,body.cp-contrast .cp-layers{border-color:var(--cp-border-strong)}
/* ── Bloc réglages dans « Mon compte » ── */
.cp-acct-prefs{border:1px solid var(--cp-border-strong);border-radius:14px;background:var(--cp-surface2);padding:14px 16px;margin:0 0 18px}
.cp-acct-prefs-lbl{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--cp-mut);font-weight:700;margin-bottom:12px}
.cp-acct-prefs-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:10px 0;font-size:13.5px;color:var(--cp-text2)}
.cp-segpick{display:flex;gap:3px;background:var(--cp-bg);border:1px solid var(--cp-border);border-radius:10px;padding:3px}
.cp-segpick-btn{background:transparent;border:none;color:var(--cp-mut);cursor:pointer;border-radius:7px;padding:6px 12px;font-size:12.5px;min-height:34px;font-weight:600}
.cp-segpick-btn:hover{color:var(--cp-text)}
.cp-segpick-btn.on{background:var(--cp-accent);color:#fff}
.cp-acct-prefs-check{display:flex;align-items:center;gap:9px;font-size:13.5px;color:var(--cp-text2);margin-top:12px;cursor:pointer}
.cp-acct-prefs-check input{width:18px;height:18px;accent-color:var(--cp-accent)}

/* Écran de secours (garde-fou render) : statique, lisible dans les 2 thèmes */
.cp-recover{position:fixed;inset:0;z-index:999;display:flex;align-items:center;justify-content:center;background:var(--cp-bg,#0c0a09);padding:20px}
.cp-recover-card{max-width:420px;background:var(--cp-surface,#1c1917);border:1px solid var(--cp-border-strong,#44403c);border-radius:16px;padding:22px;color:var(--cp-text,#fafaf9);box-shadow:0 12px 40px rgba(0,0,0,.4)}
.cp-recover-card strong{display:block;font-size:17px;margin-bottom:8px}
.cp-recover-card p{margin:0 0 14px;color:var(--cp-text2,#d6d3d1);font-size:13.5px;line-height:1.45}
.cp-recover-row{display:flex;gap:8px;justify-content:flex-end}

/* ── Bibliothèque d'icônes marque/modèle (fiche fixture + modeleurs compatibles) ── */
.cp-lib-id{display:flex;align-items:center;gap:10px;margin:2px 0 8px;padding:6px 8px;border:1px solid var(--cp-border,rgba(255,255,255,.12));border-radius:12px;background:#fff}
.cp-lib-thumb{width:48px;height:48px;flex:0 0 auto}
.cp-lib-id .cp-hint{margin:0;color:#57534e}
.cp-acc-sugg .cp-chip{display:inline-flex;align-items:center;gap:5px;background:#fff}
.cp-acc-sugg .cp-chip img{width:22px;height:22px}
