*{box-sizing:border-box;margin:0;padding:0}
:root{
  --bg:#080b12;--surf:#0d1120;--surf2:#121828;--surf3:#192034;
  --bdr:rgba(255,255,255,.07);--bdr2:rgba(255,255,255,.13);--bdr3:rgba(255,255,255,.2);
  --ora:#ff6b1a;--ora2:#ff8c45;--ora-d:rgba(255,107,26,.15);--ora-g:rgba(255,107,26,.3);
  --blu:#1a8fff;--blu2:#5ab0ff;--blu-d:rgba(26,143,255,.15);--blu-g:rgba(26,143,255,.3);
  --grn:#22d6a0;--grn-d:rgba(34,214,160,.12);
  --warn:#f5c542;--err:#ff4d6a;--pur:#9b6aff;
  --txt:#e8edf8;--txt2:#b0bcd8;--muted:#5a6580;--muted2:#3d4a62;
  --f:'Outfit',system-ui,sans-serif;--m:'DM Mono','Courier New',monospace;
}
html,body{height:100%;background:var(--bg);color:var(--txt);font-family:var(--f)}
body{display:flex;flex-direction:column;min-height:100vh}
::-webkit-scrollbar{width:4px;height:4px}
::-webkit-scrollbar-track{background:var(--surf)}
::-webkit-scrollbar-thumb{background:var(--surf3);border-radius:2px}
::-webkit-scrollbar-thumb:hover{background:var(--ora)}
@keyframes fadeIn{from{opacity:0;transform:translateY(3px)}to{opacity:1;transform:translateY(0)}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.4}}

/* ── AUTH ── */
.auth-wrap{display:none;align-items:center;justify-content:center;min-height:100vh;background:var(--bg);background-image:radial-gradient(ellipse at 20% 50%,rgba(255,107,26,.05) 0%,transparent 60%),radial-gradient(ellipse at 80% 20%,rgba(26,143,255,.04) 0%,transparent 50%)}
.auth-wrap.show{display:flex}
.auth-box{width:420px;background:var(--surf);border:1px solid var(--bdr2);border-radius:16px;overflow:hidden;box-shadow:0 24px 80px rgba(0,0,0,.6)}
.auth-head{padding:28px 28px 20px;text-align:center;background:linear-gradient(135deg,var(--surf2),var(--surf));border-bottom:1px solid var(--bdr)}
.auth-logo{width:54px;height:54px;display:flex;align-items:center;justify-content:center;margin:0 auto 12px}
.auth-title{font-size:20px;font-weight:700;color:var(--txt)}.auth-title b{color:var(--ora)}
.auth-sub{font-size:10px;color:var(--muted);font-family:var(--m);letter-spacing:1.5px;text-transform:uppercase;margin-top:3px}
.auth-body{padding:24px 28px}
.auth-tabs{display:flex;border:1px solid var(--bdr2);border-radius:8px;overflow:hidden;margin-bottom:20px}
.auth-tab{flex:1;background:transparent;border:none;color:var(--muted);font-size:12px;font-weight:600;padding:9px;cursor:pointer;font-family:var(--f);transition:all .15s}
.auth-tab.on{background:var(--ora);color:#000}
.auth-field{margin-bottom:12px}
.auth-lbl{font-family:var(--m);font-size:9px;text-transform:uppercase;letter-spacing:1px;color:var(--muted);display:block;margin-bottom:5px}
.auth-inp{width:100%;background:var(--surf2);border:1px solid var(--bdr2);color:var(--txt);font-size:13px;padding:9px 12px;border-radius:8px;outline:none;font-family:var(--f);transition:border-color .15s}
.auth-inp:focus{border-color:var(--ora)}
.auth-inp::placeholder{color:var(--muted2)}
.auth-btn{width:100%;background:var(--ora);border:none;color:#000;font-size:13px;font-weight:700;padding:11px;border-radius:8px;cursor:pointer;font-family:var(--f);margin-top:4px;transition:all .18s}
.auth-btn:hover{background:var(--ora2);box-shadow:0 0 18px var(--ora-g)}
.auth-btn:disabled{opacity:.5;cursor:not-allowed}
.auth-msg{font-size:11px;padding:8px 11px;border-radius:7px;margin-bottom:12px;display:none;line-height:1.5}
.auth-msg.show{display:block}
.auth-msg.err{background:rgba(255,77,106,.1);border:1px solid rgba(255,77,106,.3);color:var(--err)}
.auth-msg.ok{background:var(--grn-d);border:1px solid rgba(34,214,160,.3);color:var(--grn)}
.auth-footer{text-align:center;padding:12px;border-top:1px solid var(--bdr);font-size:9px;color:var(--muted);font-family:var(--m)}
.auth-sep{display:flex;align-items:center;gap:10px;margin:16px 0;color:var(--muted);font-size:10px;font-family:var(--m)}
.auth-sep::before,.auth-sep::after{content:'';flex:1;height:1px;background:var(--bdr2)}
.auth-social-btn{width:100%;background:var(--surf2);border:1px solid var(--bdr2);color:var(--txt);font-size:13px;font-weight:600;padding:10px;border-radius:8px;cursor:pointer;font-family:var(--f);transition:all .15s;display:flex;align-items:center;justify-content:center;gap:9px;margin-bottom:8px}
.auth-social-btn:hover{border-color:var(--bdr3);background:var(--surf3)}
.auth-social-btn svg{flex-shrink:0}
.auth-forgot{background:none;border:none;color:var(--muted);font-size:11px;font-family:var(--f);cursor:pointer;padding:0;margin-top:10px;display:block;width:100%;text-align:right;text-decoration:underline;text-underline-offset:2px}
.auth-forgot:hover{color:var(--ora)}
.auth-back{background:none;border:none;color:var(--muted);font-size:11px;font-family:var(--f);cursor:pointer;padding:0;margin-top:12px;display:block;width:100%;text-align:center}
.auth-back:hover{color:var(--txt)}

/* ── APP SHELL ── */
#app{display:none;flex-direction:column;flex:1;min-height:100vh}
#app.show{display:flex}

/* ── TOPBAR ── */
.topbar{background:linear-gradient(180deg,#0f1525,#0a0f1c);border-bottom:1px solid var(--bdr2);display:flex;align-items:center;height:50px;flex-shrink:0;position:sticky;top:0;z-index:50;box-shadow:0 1px 20px rgba(0,0,0,.5)}
.tb-logo{display:flex;align-items:center;gap:9px;padding:0 18px;border-right:1px solid var(--bdr2);height:100%;flex-shrink:0}
.tb-logo-icon{width:28px;height:28px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.tb-logo-text{font-weight:700;font-size:14px;letter-spacing:.3px}.tb-logo-text span{color:var(--ora)}
.tb-logo-sub{font-family:var(--m);font-size:7px;color:var(--muted);letter-spacing:2px;text-transform:uppercase;margin-top:1px}
/* show name in topbar center on mobile */
.tb-show-name{display:none;font-size:12px;font-weight:600;color:var(--txt);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;text-align:center;padding:0 8px}
.tabs{display:flex;height:100%;flex:1;overflow-x:auto}
.tabs::-webkit-scrollbar{display:none}
.tab{padding:0 15px;font-size:11px;font-weight:500;letter-spacing:.4px;text-transform:uppercase;cursor:pointer;height:100%;display:flex;align-items:center;gap:6px;color:var(--muted);border-right:1px solid var(--bdr);white-space:nowrap;position:relative;transition:color .15s,background .15s;font-family:var(--f)}
.tab::after{content:'';position:absolute;bottom:0;left:0;right:0;height:2px;background:var(--ora);transform:scaleX(0);transition:transform .2s}
.tab:hover{color:var(--txt2);background:rgba(255,255,255,.02)}
.tab.on{color:var(--ora);background:rgba(255,107,26,.05)}.tab.on::after{transform:scaleX(1)}
.tab i{font-size:14px}
.tb-right{display:flex;align-items:center;gap:6px;padding:0 10px;border-left:1px solid var(--bdr);height:100%;flex-shrink:0}
.rt-pip{display:flex;align-items:center;gap:4px;font-size:9px;font-family:var(--m);color:var(--muted)}
.rt-dot{width:6px;height:6px;border-radius:50%;background:var(--muted2);transition:background .3s}
.rt-dot.live{background:var(--grn);box-shadow:0 0 6px var(--grn);animation:pulse 2s infinite}
.rt-dot.offline{background:#ff4d6a;box-shadow:0 0 6px #ff4d6a}
#offline-banner{display:none;position:fixed;top:44px;left:0;right:0;z-index:500;background:rgba(255,60,90,.92);backdrop-filter:blur(10px);border-bottom:1px solid rgba(255,100,120,.5);padding:9px 18px;font-size:12px;font-weight:600;color:#fff;text-align:center;letter-spacing:.2px;animation:slideDown .25s ease}
#offline-banner.show{display:flex;align-items:center;justify-content:center;gap:12px}
@keyframes slideDown{from{transform:translateY(-100%);opacity:0}to{transform:translateY(0);opacity:1}}
.sp-trigger{display:flex;align-items:center;gap:7px;background:var(--surf3);border:1px solid var(--bdr2);color:var(--txt);font-size:11px;font-weight:500;padding:5px 10px;border-radius:7px;cursor:pointer;font-family:var(--f);transition:all .15s;max-width:180px}
.sp-trigger:hover{border-color:var(--ora);color:var(--ora);background:var(--ora-d)}
.sp-trigger span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;text-align:left}
.user-wrap{position:relative}
.user-btn{display:flex;align-items:center;gap:7px;background:var(--surf3);border:1px solid var(--bdr2);border-radius:7px;padding:5px 9px;cursor:pointer;transition:all .15s}
.user-btn:hover{border-color:var(--bdr3)}
.user-av{width:24px;height:24px;border-radius:50%;background:linear-gradient(135deg,var(--ora),#ff3d00);display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;color:#000;flex-shrink:0}
.user-name{font-size:11px;font-weight:500;max-width:90px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.user-dd{position:absolute;top:calc(100%+6px);right:0;background:var(--surf);border:1px solid var(--bdr2);border-radius:10px;padding:6px;min-width:180px;z-index:200;box-shadow:0 8px 32px rgba(0,0,0,.5);display:none}
.user-dd.show{display:block;animation:fadeIn .15s ease}
.user-dd-email{font-family:var(--m);font-size:9px;color:var(--muted);padding:5px 8px;margin-bottom:4px}
.user-dd-sep{height:1px;background:var(--bdr);margin:4px 0}
.user-dd-item{display:flex;align-items:center;gap:7px;padding:7px 9px;border-radius:6px;cursor:pointer;font-size:12px;color:var(--txt2);transition:all .12s}
.user-dd-item:hover{background:var(--surf2);color:var(--txt)}
.user-dd-item.danger{color:var(--err)}
.user-dd-item.danger:hover{background:rgba(255,77,106,.1)}

/* ── BOTTOM NAV (mobile only) ── */
.bottom-nav{display:none;position:fixed;bottom:0;left:0;right:0;height:62px;background:linear-gradient(180deg,#0a0f1c,#080b12);border-top:1px solid var(--bdr2);z-index:60;box-shadow:0 -4px 20px rgba(0,0,0,.5)}
.bottom-nav-inner{display:flex;height:100%;align-items:stretch}
.bn-tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;cursor:pointer;color:var(--muted);font-size:9px;font-family:var(--f);font-weight:500;letter-spacing:.3px;text-transform:uppercase;transition:color .15s;border:none;background:transparent;padding:8px 4px;-webkit-tap-highlight-color:transparent;position:relative}
.bn-tab i{font-size:20px;transition:color .15s}
.bn-tab.on{color:var(--ora)}
.bn-tab.on i{color:var(--ora)}
.bn-tab.on::before{content:'';position:absolute;top:0;left:20%;right:20%;height:2px;background:var(--ora);border-radius:0 0 3px 3px}
.bn-tab:active{background:rgba(255,107,26,.07)}

/* ── CONTENT ── */
.content{flex:1;overflow-y:auto}
.panel{display:none;padding:18px;animation:fadeIn .18s ease}
.panel.on{display:block}
#panel-fichiers.on{display:flex!important;flex-direction:column;padding:0}
#panel-synoptique.on{display:flex!important;flex-direction:column;padding:0;overflow:hidden}
.pbar{display:flex;align-items:center;gap:8px;margin-bottom:16px;flex-wrap:wrap}

/* ── MOBILE OVERRIDES ── */
@media(max-width:640px){
  /* Hide desktop tabs, show bottom nav */
  .tabs{display:none}
  .tb-logo-sub{display:none}
  .tb-logo{padding:0 12px;border-right:none}
  .tb-show-name{display:block}
  .rt-pip{display:none}
  .sp-trigger span{display:none}
  .sp-trigger{padding:5px 8px;min-width:0}
  .user-name{display:none}
  .user-btn{padding:5px 7px}
  .tb-right{gap:4px;padding:0 8px}
  .bottom-nav{display:block}

  /* Content padding for bottom nav */
  .content{padding-bottom:62px}
  .panel{padding:12px}

  /* iOS Safari ne rétracte sa barre d'adresse que si c'est le DOCUMENT qui
     scrolle. On repasse l'ossature en flux BLOC normal sur mobile (au lieu de
     flex + conteneur interne .content) pour que la page elle-même scrolle →
     Safari réduit sa barre et on récupère la place. Les plans passent par des
     overlays position:fixed (non impactés), la topbar est sticky, la nav fixe. */
  html,body{height:auto}
  body{display:block;min-height:100vh}
  #app,#app.show{display:block;min-height:100vh;min-height:100dvh}
  .content{overflow:visible;flex:none}

  /* Stack pbar vertically on very small screens.
     NB : .pbar .ptitle (spécificité 0,2,0) pour battre la règle de base
     « .ptitle{flex:1} » déclarée plus loin dans le fichier — sinon le titre
     se réduit et les boutons se chevauchent dessus. */
  .pbar{gap:6px;row-gap:8px}
  .pbar .ptitle{font-size:9px;min-width:0;flex:1 1 100%;order:-1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

  /* Barre d'outils Input List : boutons compacts icône seule, rangée nette.
     (Le texte est masqué via font-size:0 ; l'icône garde sa taille. Les menus
     déroulants restent fonctionnels — pas de conteneur à overflow qui les couperait.) */
  #panel-inputlist .pbar .btn{font-size:0;gap:0;padding:8px 11px;min-width:42px;justify-content:center}
  #panel-inputlist .pbar .btn>i{font-size:16px}
  #panel-inputlist .pbar .btn>i[style*="font-size"]{font-size:9px!important;margin-left:1px}

  /* Sessions grid 1 col */
  #sessions-grid{grid-template-columns:1fr !important;padding:0}

  /* Show files 1 col */
  .sf-grid{grid-template-columns:1fr}

  /* Synoptique stack */
  .syn-wrap{grid-template-columns:1fr}
  .syn-sb{max-height:260px}

  /* Stage stack */
  .stage-wrap{grid-template-columns:1fr}
  .stage-pal{max-height:160px;overflow-x:auto;overflow-y:hidden}
  .stage-pal-title{display:none}
  #pal{display:flex;flex-direction:row;flex-wrap:nowrap;gap:6px;overflow-x:auto;padding-bottom:4px}
  .pal-item{flex-direction:column;min-width:54px;padding:6px 4px;font-size:9px;text-align:center;gap:4px}
  .stage-canvas{min-height:340px}

  /* Team 1 col */
  .team-grid{grid-template-columns:1fr}

  /* Side panel full width */
  .side-panel{width:100%;border-left:none;border-top:1px solid var(--bdr2)}

  /* ── Input/Output List : vrai tableau défilant, colonnes N° + Court figées ──
     On garde le tableau (dense, proche du desktop) ; il défile horizontalement,
     mais les deux premières colonnes restent collées à gauche pour garder le
     contexte du canal. Tout le JS existant est réutilisé tel quel. */
  #il-table-wrap .table-wrap,#out-table-wrap .table-wrap{-webkit-overflow-scrolling:touch}
  /* Tableau compact : largeur dictée par le contenu (pas de min-width qui
     étire les colonnes), cellules serrées → plus de colonnes visibles d'un coup. */
  .iltable{min-width:0;width:auto;font-size:12px}
  .iltable th{padding:6px 8px;font-size:8px}
  .iltable td{padding:2px 5px}
  /* Largeurs fixes compactes → colonnes serrées, plus de colonnes à l'écran
     (sinon les <input> prennent leur largeur intrinsèque ~140px). */
  .iltable td .ilinp{font-size:13px;padding:6px 4px;width:102px}
  .iltable td .ilinp.sh{width:52px}
  .iltable td .ilinp.m{font-size:12.5px;width:66px}
  .iltable td .ilinp[type=number]{width:42px}
  .iltable td .out-type-sel{font-size:12px;padding:5px 6px}
  .cb{width:20px;height:20px}
  .move-btn{font-size:14px;padding:4px}.del-btn{font-size:14px;padding:4px 6px}
  .drag-handle{display:none}                      /* glisser tactile peu fiable → on garde ↑/↓ */
  .col-chip-grip{display:none}                    /* idem pour la réorganisation des colonnes */
  .il-col-grip{display:none}                       /* idem : pas de poignée d'en-tête sur mobile */
  .col-chip{cursor:pointer}
  /* Colonne N° figée à gauche */
  .iltable th:first-child,.iltable td.ch-num{
    position:sticky;left:0;z-index:6;width:34px;min-width:34px;padding:0 4px;
    background:var(--bg);box-shadow:1px 0 0 var(--bdr2)}
  .iltable td.ch-num{font-size:16px}
  .iltable thead th:first-child{z-index:13;background:var(--surf2)}
  /* Colonne Court figée juste après le N° */
  .iltable th[data-col="short"],.iltable td[data-col="short"]{
    position:sticky;left:34px;z-index:6;
    background:var(--bg);box-shadow:1px 0 0 var(--bdr2)}
  .iltable thead th[data-col="short"]{z-index:13;background:var(--surf2)}
  /* Le survol/flash ne doit pas laisser transparaître le contenu défilé dessous */
  .iltable tbody tr:hover td.ch-num,
  .iltable tbody tr:hover td[data-col="short"]{background:var(--bg)}

  /* Template quick bar horizontal scroll */
  #tpl-quick-list{flex-wrap:nowrap;overflow-x:auto;padding-bottom:4px;-webkit-overflow-scrolling:touch}
  #tpl-quick-list::-webkit-scrollbar{display:none}

  /* Auth box */
  .auth-box{width:calc(100vw - 32px)}

  /* Modals full width */
  .modal-box{width:calc(100vw - 24px) !important;max-height:92vh}
  .pdf-grid{grid-template-columns:1fr}
  .pdf-grid.c3{grid-template-columns:1fr 1fr}

  /* Bigger touch targets for checkboxes */
  .cb{width:18px;height:18px}

  /* User dropdown left-aligned on mobile */
  .user-dd{right:auto;left:-100px}
}
.ptitle{font-family:var(--m);font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:1.5px;flex:1;display:flex;align-items:center;gap:7px}
.ptitle-sep{color:var(--muted2)}

/* ── BUTTONS ── */
.btn{background:var(--ora-d);border:1px solid var(--ora-g);color:var(--ora);font-size:11px;font-weight:600;padding:5px 11px;border-radius:6px;cursor:pointer;display:flex;align-items:center;gap:5px;white-space:nowrap;font-family:var(--f);text-transform:uppercase;letter-spacing:.4px;transition:all .18s}
.btn:hover{background:var(--ora);color:#000;box-shadow:0 0 12px var(--ora-g)}
.btn.blu{background:var(--blu-d);border-color:var(--blu-g);color:var(--blu2)}.btn.blu:hover{background:var(--blu);color:#000}
.btn.ghost{background:transparent;border-color:var(--bdr2);color:var(--muted)}.btn.ghost:hover{border-color:var(--bdr3);color:var(--txt)}
.btn.sm{padding:4px 8px;font-size:10px}
.btn:disabled{opacity:.4;cursor:not-allowed;pointer-events:none}

/* ── NOTICES ── */
.notice{background:var(--blu-d);border:1px solid rgba(26,143,255,.2);border-left:3px solid var(--blu);border-radius:0 7px 7px 0;padding:9px 12px;font-size:11px;color:var(--blu2);display:flex;align-items:flex-start;gap:8px;margin-bottom:14px}
.notice i{font-size:14px;flex-shrink:0;margin-top:1px}
.notice.warn{background:rgba(245,197,66,.08);border-color:rgba(245,197,66,.25);border-left-color:var(--warn);color:var(--warn)}

/* ── INPUT LIST ── */
.table-wrap{overflow-x:auto;border-radius:9px;border:1px solid var(--bdr2)}
.iltable{width:100%;border-collapse:collapse;font-size:11px;min-width:860px}
.iltable thead{position:sticky;top:0;z-index:10}
.iltable th{background:var(--surf2);color:var(--muted);font-family:var(--m);font-size:9px;text-transform:uppercase;letter-spacing:1px;padding:8px 9px;border-bottom:1px solid var(--bdr2);border-right:1px solid var(--bdr);font-weight:500;text-align:left;white-space:nowrap}
.iltable th:last-child{border-right:none}
.iltable td{padding:4px 8px;border-bottom:1px solid var(--bdr);border-right:1px solid var(--bdr);vertical-align:middle}
.iltable td:last-child{border-right:none}
.iltable tr:last-child td{border-bottom:none}
.iltable tbody tr:hover td{background:rgba(255,107,26,.03)}
.iltable tbody tr.flash td{background:rgba(34,214,160,.07);transition:background .1s}
.ch-num{font-family:var(--m);color:var(--ora);font-size:var(--chnum-size,18px);font-weight:700;text-align:center;min-width:38px;padding:0 6px}
.ilinp{background:transparent;border:none;color:var(--txt);font-family:var(--f);font-size:11px;width:100%;outline:none;padding:2px 3px;border-radius:3px;transition:background .12s}
.ilinp:focus{background:rgba(255,107,26,.07)}
.ilinp.m{font-family:var(--m);font-size:10px}
.ilinp.sh{font-family:var(--m);font-weight:500;font-size:12px;color:var(--ora);text-transform:uppercase}
.cb{cursor:pointer;width:14px;height:14px;accent-color:var(--ora)}
.cb.blu{accent-color:var(--blu)}.cb.warn{accent-color:var(--warn)}.cb.grn{accent-color:var(--grn)}
.add-row{width:100%;background:transparent;border:1px dashed rgba(255,107,26,.2);color:var(--muted);font-size:11px;padding:7px;border-radius:0 0 9px 9px;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:5px;font-family:var(--f);font-weight:500;transition:all .15s}
.add-row:hover{border-color:var(--ora);color:var(--ora);background:var(--ora-d)}
.del-btn{background:transparent;border:none;color:var(--muted2);cursor:pointer;padding:3px 5px;font-size:12px;border-radius:3px;transition:all .12s}
.del-btn:hover{color:var(--err);background:rgba(255,77,106,.1)}
.move-btn{background:none;border:none;color:var(--muted2);cursor:pointer;padding:2px;font-size:11px;border-radius:3px;transition:all .1s;line-height:1}
.move-btn:hover{background:var(--surf3);color:var(--txt)}
.move-btn:disabled{opacity:.18;cursor:default}
.drag-handle{cursor:grab;color:var(--muted2);font-size:14px;padding:0 3px;transition:color .12s;vertical-align:middle}
.drag-handle:hover{color:var(--muted)}
.iltable tr.dragging{opacity:.3}
.iltable tr.drag-over td{border-top:2px solid var(--ora) !important}
.col-chip-grip{cursor:grab;color:var(--muted2);font-size:12px;transition:color .12s}
.col-chip-grip:hover{color:var(--muted)}
.col-chip.dragging{opacity:.35}
.col-chip.drag-over{box-shadow:inset 2px 0 0 var(--ora)}
/* Poignées de réordonnancement des colonnes directement sur les en-têtes */
.il-col-th{cursor:grab}
.il-col-th-in{display:inline-flex;align-items:center;gap:4px}
.il-col-grip{color:var(--muted2);font-size:12px;opacity:.5;transition:opacity .12s,color .12s;flex-shrink:0}
.il-col-th:hover .il-col-grip{opacity:1;color:var(--ora)}
.iltable th.il-col-th.dragging{opacity:.4}
.iltable th.il-col-th.drag-over{box-shadow:inset 3px 0 0 var(--ora)}

/* ── Mobile plan viewer ── */
/* Mobile plan viewer — activé uniquement par JS (.mob-plan-show) */
.mob-plan-ov{display:none!important;position:fixed;top:50px;left:0;right:0;bottom:62px;z-index:55;flex-direction:column;background:var(--bg2);pointer-events:none}
.mob-plan-ov.mob-plan-show{display:flex!important;pointer-events:auto}
/* Plein écran natif : l'overlay couvre tout l'écran (barres système cachées) */
.mob-plan-ov.mob-fs{top:0!important;bottom:0!important;z-index:9999}
.mob-plan-bar{display:flex;align-items:center;gap:8px;padding:10px 12px;background:var(--surf);border-bottom:1px solid var(--bdr2);flex-shrink:0}
.mob-plan-title{font-size:13px;font-weight:700;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mob-plan-hint{font-size:9.5px;font-family:var(--m);color:var(--muted);letter-spacing:.5px;background:var(--surf3);border:1px solid var(--bdr2);border-radius:5px;padding:3px 7px;white-space:nowrap;flex-shrink:0}
/* Canvas de navigation — overflow hidden, le zoom/pan est géré via transform JS */
.mob-plan-canvas{flex:1;overflow:hidden;position:relative;background:var(--bg);touch-action:none;cursor:grab}
.mob-plan-canvas:active{cursor:grabbing}
.mob-plan-canvas .mob-img{position:absolute;top:0;left:0;transform-origin:0 0;user-select:none;-webkit-user-drag:none;display:block;image-rendering:auto}
/* Zoom HUD — sibling du canvas, positionné en absolu par rapport à l'overlay */
.mob-zoom-hud{position:absolute;bottom:44px;right:12px;display:flex;flex-direction:column;gap:6px;z-index:20;pointer-events:auto}
.mob-plan-ov.mob-fs .mob-zoom-hud{bottom:12px}
.mob-zoom-btn{width:42px;height:42px;border-radius:50%;background:rgba(10,15,28,.9);border:1px solid rgba(255,255,255,.15);color:var(--txt);font-size:19px;display:flex;align-items:center;justify-content:center;cursor:pointer;backdrop-filter:blur(12px);box-shadow:0 2px 16px rgba(0,0,0,.6);-webkit-tap-highlight-color:transparent;touch-action:manipulation}
.mob-zoom-btn:active{background:var(--ora);color:#000;transform:scale(.9)}
.mob-plan-foot{padding:7px 14px;font-size:10px;color:var(--muted);font-family:var(--m);text-align:center;border-top:1px solid var(--bdr);flex-shrink:0;background:var(--surf)}
.mob-plan-loading{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:12px;padding:48px 24px;color:var(--muted);font-size:13px;position:absolute;inset:0}
/* Sélecteur de scènes (multi-scène) dans le visionneur mobile de plan */
.mob-scene-bar{display:none;align-items:center;gap:6px;padding:7px 12px;background:var(--surf);border-bottom:1px solid var(--bdr2);flex-shrink:0;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.mob-scene-bar::-webkit-scrollbar{display:none}
.mob-scene-chip{flex-shrink:0;background:var(--surf2);border:1px solid var(--bdr2);color:var(--txt2);font-size:12px;font-weight:600;padding:7px 13px;border-radius:8px;cursor:pointer;font-family:var(--f);white-space:nowrap;min-height:34px;display:inline-flex;align-items:center;gap:5px}
.mob-scene-chip.active{background:var(--ora);border-color:var(--ora);color:#000}
.mob-scene-chip.add{color:var(--ora);font-weight:700;font-size:15px;padding:6px 13px}
.mob-scene-chip.locked{color:var(--ora);background:var(--ora-d);border-color:var(--ora-g)}

/* ── IL patch tabs + Scene tabs (shared style) ── */
.il-patch-tabs{display:flex;align-items:center;gap:5px;margin-bottom:10px;flex-wrap:wrap}
.scene-tabs-bar{display:flex;align-items:center;gap:5px;padding:7px 14px 0;flex-wrap:wrap;flex-shrink:0}
.scene-tabs-bar.hidden{display:none}
.il-ptab{display:flex;align-items:center;gap:5px;padding:4px 11px;border-radius:6px;border:1px solid var(--bdr2);background:var(--surf2);color:var(--muted);font-size:11px;font-weight:600;cursor:pointer;white-space:nowrap;transition:all .15s;font-family:var(--f)}
.il-ptab:hover{border-color:var(--bdr3);color:var(--txt2)}
.il-ptab.active{background:var(--ora);border-color:var(--ora);color:#000}
.il-ptab-del{background:none;border:none;color:inherit;cursor:pointer;padding:0 0 0 4px;font-size:12px;opacity:.65;line-height:1}
.il-ptab-del:hover{opacity:1}
.il-ptab-dup{background:none;border:none;color:inherit;cursor:pointer;padding:0 0 0 4px;font-size:11px;opacity:.55;line-height:1;display:inline-flex;align-items:center}
.il-ptab-dup:hover{opacity:1;color:var(--ora)}
.il-ptab-add{background:none;border:1px dashed var(--bdr2);color:var(--muted);font-size:16px;width:26px;height:26px;border-radius:6px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:all .15s;line-height:1}
.il-ptab-add:hover{border-color:var(--ora);color:var(--ora)}

/* template dropdown */
.tpl-dd-wrap{position:relative;display:inline-flex}
.tpl-dd-menu{display:none;position:absolute;top:calc(100% + 5px);left:0;z-index:120;background:var(--surf2);border:1px solid var(--bdr2);border-radius:10px;padding:10px;min-width:260px;box-shadow:0 8px 30px rgba(0,0,0,.45)}
.tpl-dd-menu.open{display:block}
.tpl-dd-mode{display:flex;gap:0;border:1px solid var(--bdr2);border-radius:6px;overflow:hidden;margin-bottom:9px}
.tpl-dd-mode button{background:transparent;border:none;color:var(--muted);font-size:10px;font-weight:600;padding:4px 12px;cursor:pointer;font-family:var(--f);transition:all .12s;flex:1}
.tpl-dd-mode button.active{background:var(--ora);color:#000}
.tpl-dd-list{display:flex;flex-direction:column;gap:4px;max-height:320px;overflow-y:auto}
.tpl-dd-item{display:flex;align-items:center;gap:7px;background:var(--surf3);border:1px solid var(--bdr2);color:var(--txt2);font-size:11px;padding:6px 10px;border-radius:7px;cursor:pointer;font-family:var(--f);transition:all .13s;text-align:left;width:100%}
.tpl-dd-item:hover{border-color:var(--ora);color:var(--ora)}

/* col toggles */
.col-chip{display:flex;align-items:center;gap:5px;background:var(--surf3);border:1px solid var(--bdr2);border-radius:20px;padding:4px 11px;cursor:pointer;font-size:11px;font-family:var(--f);font-weight:500;color:var(--muted);transition:all .13s;user-select:none}
.col-chip:hover{border-color:var(--bdr3);color:var(--txt2)}
.col-chip.on{background:var(--ora-d);border-color:var(--ora-g);color:var(--ora)}
.col-chip .pip{width:6px;height:6px;border-radius:50%;background:var(--muted2);transition:background .12s;flex-shrink:0}
.col-chip.on .pip{background:var(--ora)}

/* ── SHOW FILES ── */
.sf-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.sf-card{background:var(--surf);border:1px solid var(--bdr2);border-radius:11px;overflow:hidden;transition:border-color .2s,box-shadow .2s}
.sf-card:hover{border-color:var(--bdr3);box-shadow:0 4px 20px rgba(0,0,0,.3)}
.sf-head{display:flex;align-items:center;gap:11px;padding:13px;border-bottom:1px solid var(--bdr);background:linear-gradient(135deg,var(--surf2),var(--surf))}
.sf-logo{width:40px;height:40px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-family:var(--m);font-size:9px;font-weight:500;flex-shrink:0;flex-direction:column;line-height:1.4}
.lg-y{background:rgba(0,100,220,.18);border:1px solid rgba(0,100,220,.4);color:#6db8ff}
.lg-w{background:rgba(255,60,80,.14);border:1px solid rgba(255,60,80,.35);color:#ff8899}
.lg-d{background:var(--grn-d);border:1px solid rgba(34,214,160,.3);color:var(--grn)}
.lg-s{background:rgba(155,106,255,.14);border:1px solid rgba(155,106,255,.35);color:#c4a0ff}
.lg-x{background:rgba(255,160,0,.14);border:1px solid rgba(255,160,0,.4);color:#ffb733}
.lg-g{background:rgba(0,200,180,.12);border:1px solid rgba(0,200,180,.35);color:#2ad6c0}
.lg-a{background:rgba(120,120,130,.18);border:1px solid rgba(160,160,170,.4);color:#c0c4cc}
.lg-r{background:rgba(0,100,220,.12);border:1px solid rgba(0,100,220,.3);color:#5aa0ff}
.lg-dm7{background:rgba(0,140,210,.16);border:1px solid rgba(0,140,210,.4);color:#4fc3f7}
.lg-sc{background:rgba(230,80,40,.14);border:1px solid rgba(230,80,40,.35);color:#ff8866}
.sf-name{font-size:13px;font-weight:600}.sf-sub{font-size:10px;color:var(--muted);font-family:var(--m)}
.sf-body{padding:13px}
.fmt-tag{display:inline-flex;align-items:center;gap:4px;background:var(--surf2);border:1px solid var(--bdr2);border-radius:4px;font-family:var(--m);font-size:9px;padding:2px 8px;margin-bottom:10px;color:var(--muted)}
.fmt-tag.real{border-color:rgba(34,214,160,.35);color:var(--grn);background:var(--grn-d)}.fmt-tag.real::before{content:'✓ ';font-weight:700}
.sf-steps{margin-bottom:12px}
.sf-step{display:flex;align-items:flex-start;gap:7px;margin-bottom:5px;font-size:10px;color:var(--muted2);line-height:1.5}
.sf-snum{background:var(--surf3);border:1px solid var(--bdr2);border-radius:50%;width:16px;height:16px;display:flex;align-items:center;justify-content:center;font-family:var(--m);font-size:8px;flex-shrink:0;margin-top:1px;color:var(--ora)}
.cb2{font-family:var(--m);font-size:9px;color:var(--ora);background:var(--ora-d);border-radius:3px;padding:1px 5px;border:1px solid rgba(255,107,26,.2)}
.gen-btn{width:100%;background:var(--surf2);border:1px solid var(--bdr2);color:var(--txt2);font-size:11px;font-weight:500;padding:8px;border-radius:6px;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:6px;text-transform:uppercase;letter-spacing:.4px;transition:all .15s;margin-bottom:5px;font-family:var(--f)}
.gen-btn:hover{background:var(--surf3);border-color:var(--bdr3);color:var(--txt)}
.gen-btn.y:hover{border-color:#6db8ff;color:#6db8ff;background:rgba(0,100,220,.07)}
.gen-btn.w:hover{border-color:#ff8899;color:#ff8899;background:rgba(255,60,80,.06)}
.gen-btn.d:hover{border-color:var(--grn);color:var(--grn);background:var(--grn-d)}
.gen-btn.s:hover{border-color:#c4a0ff;color:#c4a0ff;background:rgba(155,106,255,.07)}
.gen-btn.univ:hover{border-color:var(--ora);color:var(--ora);background:var(--ora-d)}
.sf-stat{font-size:9px;color:var(--muted);display:flex;align-items:center;gap:4px;margin-top:7px;font-family:var(--m)}
.dp{width:5px;height:5px;border-radius:50%;flex-shrink:0;display:inline-block}
.dg{background:var(--grn)}.dw{background:var(--warn)}
.ch-pills{display:flex;flex-wrap:wrap;gap:3px;margin-bottom:9px;max-height:40px;overflow:hidden}
.ch-pill{background:var(--surf2);border:1px solid rgba(255,107,26,.2);border-radius:3px;font-family:var(--m);font-size:8px;padding:1px 5px;color:var(--ora)}

/* ── FICHIERS CLOUD ── */
.fich-dropzone{border:2px dashed var(--bdr2);border-radius:10px;padding:40px 20px;text-align:center;color:var(--muted);transition:all .2s;cursor:pointer;margin:14px 18px;display:flex;flex-direction:column;align-items:center;gap:6px}
.fich-dropzone.drag-over,.fich-dropzone.has-files.drag-over{border-color:var(--ora);background:var(--ora-d);color:var(--ora)}
.fich-dropzone.has-files{padding:12px 20px;margin:0;border-radius:0;border:none;border-top:2px dashed var(--bdr);flex-direction:row;justify-content:center;gap:10px;background:transparent}
.fich-dropzone .fich-dz-ico{font-size:36px;color:var(--bdr3);transition:color .2s}
.fich-dropzone.drag-over .fich-dz-ico,.fich-dropzone.has-files.drag-over .fich-dz-ico{color:var(--ora)}
.fich-dropzone.has-files .fich-dz-txt{font-size:11px}
.fich-dropzone.has-files .fich-dz-ico{font-size:18px}
.fich-filter-bar{display:flex;align-items:center;gap:7px;padding:10px 14px;border-bottom:1px solid var(--bdr);overflow-x:auto;scrollbar-width:none;flex-shrink:0}
.fich-filter-bar::-webkit-scrollbar{display:none}
.fich-action-btn{display:flex;align-items:center;gap:5px;font-size:10px;font-family:var(--f);font-weight:600;padding:6px 13px;border-radius:7px;cursor:pointer;white-space:nowrap;transition:all .15s;border:none}
.fich-action-btn.upload{background:var(--ora);color:#000}
.fich-action-btn.upload:hover{background:var(--ora2)}
.fich-action-btn.folder{background:var(--surf2);border:1px solid var(--bdr2);color:var(--txt2)}
.fich-action-btn.folder:hover{background:var(--surf3);border-color:var(--bdr3);color:var(--txt)}
.fich-filter-sep{width:1px;height:20px;background:var(--bdr2);flex-shrink:0;margin:0 2px}
.fich-filter-chip{background:var(--surf2);border:1px solid var(--bdr2);color:var(--txt2);font-size:10px;font-family:var(--f);padding:5px 12px;border-radius:20px;cursor:pointer;white-space:nowrap;transition:all .13s}
.fich-filter-chip:hover{background:var(--surf3);border-color:var(--bdr3);color:var(--txt)}
.fich-filter-chip.active{background:var(--ora-d);border-color:var(--ora-g);color:var(--ora);font-weight:600}
.fich-list-wrap{flex:1;overflow-y:auto;padding:12px 14px}
.fich-section-lbl{font-family:var(--m);font-size:9px;text-transform:uppercase;letter-spacing:1.2px;color:var(--muted2);padding:10px 2px 5px;display:flex;align-items:center;gap:5px}
.fich-section-lbl:first-child{padding-top:2px}
.fich-file-card{display:flex;align-items:center;gap:11px;padding:10px 12px;background:var(--surf2);border:1px solid var(--bdr);border-radius:9px;margin-bottom:6px;cursor:pointer;transition:all .15s}
.fich-file-card:hover{background:var(--surf3);border-color:var(--bdr2)}
.fich-file-ico{width:38px;height:38px;border-radius:9px;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:20px}
.fich-file-ico.ico-pdf{background:rgba(239,68,68,.12)}
.fich-file-ico.ico-word{background:rgba(59,130,246,.12)}
.fich-file-ico.ico-excel{background:rgba(34,197,94,.12)}
.fich-file-ico.ico-ppt{background:rgba(249,115,22,.12)}
.fich-file-ico.ico-video{background:rgba(168,85,247,.12)}
.fich-file-ico.ico-audio{background:rgba(6,182,212,.12)}
.fich-file-ico.ico-folder{background:rgba(245,197,66,.12)}
.fich-file-ico.ico-image{background:rgba(236,72,153,.12)}
.fich-file-ico.ico-show{background:rgba(255,107,26,.12)}
.fich-file-ico.ico-daw{background:rgba(139,92,246,.12)}
.fich-file-ico.ico-archive{background:rgba(234,179,8,.12)}
.fich-file-ico.ico-other{background:var(--surf3)}
/* Search + sort toolbar */
.fich-search{flex:1;min-width:120px;display:flex;align-items:center;gap:6px;background:var(--surf2);border:1px solid var(--bdr2);border-radius:8px;padding:0 10px;height:30px}
.fich-search:focus-within{border-color:var(--ora-g)}
.fich-search i{font-size:13px;color:var(--muted);flex-shrink:0}
.fich-search input{flex:1;background:none;border:none;outline:none;color:var(--txt);font-family:var(--f);font-size:11px;min-width:0}
.fich-search input::placeholder{color:var(--muted)}
.fich-sort{background:var(--surf2);border:1px solid var(--bdr2);color:var(--txt2);font-family:var(--f);font-size:10px;border-radius:7px;padding:0 8px;height:30px;cursor:pointer;outline:none;flex-shrink:0}
.fich-sort:hover{border-color:var(--bdr3)}
/* Suggested folders (empty state) */
.fich-suggest{max-width:560px;margin:8px auto 0;padding:0 14px}
.fich-suggest-hd{font-family:var(--m);font-size:10px;text-transform:uppercase;letter-spacing:1.2px;color:var(--muted);margin-bottom:10px;display:flex;align-items:center;gap:6px}
.fich-suggest-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.fich-suggest-card{display:flex;align-items:center;gap:10px;padding:11px 13px;background:var(--surf2);border:1px solid var(--bdr2);border-radius:9px;cursor:pointer;transition:all .14s;text-align:left}
.fich-suggest-card:hover{border-color:var(--ora-g);background:var(--surf3);transform:translateY(-1px)}
.fich-suggest-ico{width:34px;height:34px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:17px;flex-shrink:0}
.fich-suggest-nm{font-size:12px;font-weight:600;color:var(--txt)}
.fich-suggest-sub{font-size:9.5px;color:var(--muted);font-family:var(--m);margin-top:1px}
.fich-suggest-all{margin-top:12px;width:100%;justify-content:center}
.fich-file-info{flex:1;min-width:0}
.fich-file-name{font-size:12px;font-weight:600;color:var(--txt);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-bottom:2px}
.fich-file-meta{font-size:10px;color:var(--muted);font-family:var(--m)}
.fich-file-actions{display:flex;align-items:center;gap:3px;flex-shrink:0;opacity:1}
.fich-file-btn{background:none;border:none;color:var(--muted);cursor:pointer;width:30px;height:30px;border-radius:6px;display:flex;align-items:center;justify-content:center;transition:all .12s;font-size:14px;padding:0}
.fich-file-btn:hover{color:var(--txt2);background:var(--surf3)}
.fich-file-btn.dl:hover{color:var(--ora);background:var(--ora-d)}
.fich-file-btn.del:hover{color:var(--err);background:rgba(255,70,70,.12)}
.fich-file-btn.mv:hover{color:#a78bfa;background:rgba(167,139,250,.12)}
.fich-file-card.verified{border-color:rgba(34,214,160,.32);background:rgba(34,214,160,.045)}
.fich-file-btn.vf:hover{color:var(--grn);background:rgba(34,214,160,.14)}
.fich-file-btn.vf.on{color:var(--grn)}
.fich-file-verified-tag{display:flex;align-items:center;gap:4px;font-size:9.5px;color:var(--grn);margin-top:2px;font-family:var(--m)}
/* Popover déplacer fichier */
#fich-move-pop{display:none;position:fixed;z-index:600;background:var(--surf2);border:1px solid var(--bdr2);border-radius:10px;box-shadow:0 8px 32px rgba(0,0,0,.5);padding:6px;min-width:180px;max-width:240px}
#fich-move-pop.show{display:block}
.fich-move-head{font-size:10px;font-family:var(--m);color:var(--muted);text-transform:uppercase;letter-spacing:.7px;padding:4px 8px 6px}
.fich-move-item{display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:7px;cursor:pointer;font-size:12px;color:var(--txt2);transition:background .1s;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fich-move-item:hover{background:var(--surf3);color:var(--txt)}
.fich-move-item i{font-size:14px;flex-shrink:0}
.fich-storage-row{display:flex;align-items:center;gap:10px;padding:9px 14px;border-top:1px solid var(--bdr);flex-shrink:0}
.fich-storage-track{flex:1;height:3px;background:var(--surf3);border-radius:2px;overflow:hidden}
.fich-storage-fill{height:100%;background:var(--ora);border-radius:2px;transition:width .6s}
.fich-storage-lbl{font-family:var(--m);font-size:9px;color:var(--muted);white-space:nowrap}
.fich-empty{text-align:center;padding:60px 20px;color:var(--muted)}
.fich-empty i{font-size:44px;display:block;margin-bottom:14px;color:var(--bdr3)}

/* ── PDF.js viewer ── */
.fich-pdf-loading{display:flex;align-items:center;justify-content:center;gap:10px;padding:60px 20px;color:var(--muted);font-size:13px;flex:1;height:100%}
.fich-pdf-nav{display:flex;align-items:center;gap:5px;padding:3px 10px;background:var(--surf2);border-bottom:1px solid var(--bdr);flex-shrink:0;flex-wrap:wrap}
.fich-pdf-pageinfo{font-family:var(--m);font-size:11px;color:var(--txt2);min-width:52px;text-align:center}
.fich-pdf-nav-sep{flex:1;min-width:6px}
.fich-pdf-wrap{flex:1;overflow-y:auto;overflow-x:auto;padding:10px;background:#1a1a2e;touch-action:pan-y}
.fich-pdf-inner{display:flex;flex-direction:column;align-items:center;gap:12px;width:100%;min-width:min-content}
.fich-pdf-page{position:relative;flex-shrink:0}
.fich-pdf-canvas{border-radius:4px;box-shadow:0 4px 24px rgba(0,0,0,.6);display:block;position:absolute;top:0;left:0;pointer-events:none}
.fich-pdf-text{position:absolute;top:0;left:0;overflow:hidden;line-height:1;user-select:text;-webkit-user-select:text}
.fich-pdf-text span{color:transparent;position:absolute;white-space:pre;cursor:text;transform-origin:0% 0%}
.fich-pdf-text span::selection,.fich-pdf-text span::-moz-selection{background:rgba(0,120,255,.3)}
.fich-pdf-text span.pdf-hit{background:rgba(255,213,0,.45);border-radius:2px}
.fich-pdf-text span.pdf-hit-cur{background:rgba(255,138,0,.8)}
.fich-pdf-search{display:flex;align-items:center;gap:4px;background:var(--surf3);border:1px solid var(--bdr2);border-radius:7px;padding:2px 4px 2px 8px}
.fich-pdf-search>i{font-size:13px;color:var(--muted);flex-shrink:0}
.fich-pdf-search input{background:transparent;border:none;outline:none;color:var(--txt);font-family:var(--f);font-size:12px;width:120px;padding:4px 2px}
.fich-pdf-search input::placeholder{color:var(--muted)}
.fich-pdf-search-count{font-family:var(--m);font-size:10px;color:var(--muted);min-width:30px;text-align:center;flex-shrink:0}
.fich-pdf-search-count.none{color:var(--err)}
.fich-pdf-text .markedContent{position:absolute;top:0;height:0}
.fich-pdf-text br{display:none}
.fich-pdf-zoom-badge{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:rgba(0,0,0,.8);color:#fff;font-size:22px;font-weight:700;padding:14px 28px;border-radius:14px;pointer-events:none;opacity:0;transition:opacity .15s;z-index:9999;white-space:nowrap}
.fich-pdf-zoom-badge.show{opacity:1}
#fich-viewer-content{display:flex;flex-direction:column}
#fich-viewer-modal{display:none;position:fixed;inset:0;z-index:1200}
.fich-viewer-ov{position:absolute;inset:0;background:rgba(0,0,0,.8);backdrop-filter:blur(4px)}
/* Fenêtre quasi plein écran : le chrome (marges + barres) doit laisser un
   maximum de place au document lui-même. */
.fich-viewer-win{position:absolute;top:10px;left:10px;right:10px;bottom:10px;background:var(--surf);border-radius:10px;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 24px 80px rgba(0,0,0,.8)}
.fich-viewer-bar{display:flex;align-items:center;justify-content:space-between;padding:4px 10px;border-bottom:1px solid var(--bdr);flex-shrink:0;background:var(--surf2);gap:10px}
.fich-viewer-title{font-size:12px;font-weight:600;color:var(--txt);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}
#fich-viewer-content{flex:1;overflow:auto;min-height:0;background:#08080f}
#fich-viewer-content video{width:100%;height:100%;display:block;object-fit:contain;background:#000}
.fich-audio-wrap{display:flex;align-items:center;justify-content:center;height:100%;padding:40px;background:var(--surf)}
/* PDF viewer — adaptations mobile */
@media(max-width:767px){
  .fich-viewer-win{top:0;left:0;right:0;bottom:0;border-radius:0}
  .fich-viewer-bar{padding:8px 10px}
  .fich-viewer-bar .fich-dl-txt{display:none}
  .fich-pdf-nav{order:1;border-bottom:none;border-top:1px solid var(--bdr);flex-wrap:nowrap;overflow-x:auto;padding:6px 8px;gap:2px}
  .fich-pdf-wrap{order:0;padding:6px 4px}
  .fich-pdf-inner{gap:8px}
  .fich-pdf-nav .btn.sm{min-height:44px;min-width:44px;display:flex;align-items:center;justify-content:center;padding:0 8px;font-size:15px}
  .fich-pdf-pageinfo{min-width:44px}
}
.fich-audio-wrap audio{width:100%;max-width:500px}
/* Word viewer */
.fich-docx-wrap{flex:1;overflow:auto;padding:32px;background:#f8fafc;min-height:0}
.fich-docx-body{max-width:780px;margin:0 auto;background:#fff;border-radius:8px;padding:40px 52px;box-shadow:0 2px 12px rgba(0,0,0,.08);font-family:Georgia,serif;font-size:14px;line-height:1.7;color:#1a1a2e}
.fich-docx-body h1,.fich-docx-body h2,.fich-docx-body h3{font-family:'Outfit',sans-serif;color:#1a1a2e;margin:1.2em 0 .4em}
.fich-docx-body h1{font-size:22px}.fich-docx-body h2{font-size:18px}.fich-docx-body h3{font-size:15px}
.fich-docx-body p{margin:0 0 .8em}
.fich-docx-body ul,.fich-docx-body ol{margin:0 0 .8em 1.4em;padding:0}
.fich-docx-body li{margin-bottom:.3em}
.fich-docx-body table{border-collapse:collapse;width:100%;margin:.8em 0}
.fich-docx-body td,.fich-docx-body th{border:1px solid #d1d5db;padding:6px 10px;font-size:12px}
.fich-docx-body th{background:#f1f5f9;font-weight:700}
.fich-docx-bar{display:flex;align-items:center;gap:8px;padding:8px 14px;background:var(--surf2);border-bottom:1px solid var(--bdr);flex-shrink:0}
.fich-docx-status{font-size:10px;font-family:var(--m);color:var(--muted);flex:1}
/* Excel viewer */
.fich-xlsx-wrap{flex:1;overflow:auto;min-height:0;background:var(--bg)}
.fich-xlsx-bar{display:flex;align-items:center;gap:8px;padding:8px 14px;background:var(--surf2);border-bottom:1px solid var(--bdr);flex-shrink:0;flex-wrap:wrap}
.fich-xlsx-tabs{display:flex;gap:2px;overflow-x:auto;flex:1}
.fich-xlsx-tab{font-size:11px;padding:4px 12px;border-radius:5px 5px 0 0;border:1px solid var(--bdr2);border-bottom:none;background:var(--surf3);color:var(--muted);cursor:pointer;white-space:nowrap;font-family:var(--m)}
.fich-xlsx-tab.on{background:var(--surf);color:var(--txt);border-color:var(--bdr3)}
.fich-xlsx-table-wrap{overflow:auto;padding:0}
.fich-xlsx-table{border-collapse:collapse;font-size:12px;font-family:var(--m);white-space:nowrap}
.fich-xlsx-table th{background:#1d3a5f;color:#e2e8f0;padding:5px 10px;position:sticky;top:0;z-index:2;font-weight:600;border:1px solid #2c4a6f;min-width:80px}
.fich-xlsx-table td{padding:4px 8px;border:1px solid var(--bdr);color:var(--txt2);min-width:80px;max-width:200px;overflow:hidden;text-overflow:ellipsis}
.fich-xlsx-table td[contenteditable=true]:focus{background:rgba(255,107,26,.08);outline:2px solid var(--ora);outline-offset:-2px;color:var(--txt)}
.fich-xlsx-table tr:nth-child(even) td{background:var(--surf2)}
.fich-xlsx-table tr:hover td{background:var(--surf3)}
.fich-breadcrumb{display:flex;align-items:center;gap:4px;padding:7px 14px;border-bottom:1px solid var(--bdr);font-size:11px;background:var(--surf2);flex-wrap:wrap}
.fich-bc-seg{color:var(--muted);cursor:pointer;padding:2px 5px;border-radius:4px;transition:all .12s}
.fich-bc-seg:hover{color:var(--txt);background:var(--surf3)}
.fich-bc-seg.cur{color:var(--txt);font-weight:600;cursor:default}
.fich-bc-sep{color:var(--muted2);font-size:9px}
.fich-folder-ico{font-size:20px;color:#f5c542}

/* ══════════════════════════════════════
   SYNOPTIQUE PRO — SynPro v1
   ══════════════════════════════════════ */
.sp-app{display:flex;flex-direction:column;gap:10px;height:calc(100vh - 70px);overflow:hidden}
.sp-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:8px 10px;background:var(--surf);border:1px solid var(--bdr2);border-radius:10px}
.sp-toolbar .ptitle{margin:0;flex:1;min-width:140px}
.sp-zoom-grp{display:flex;align-items:center;gap:1px;border:1px solid var(--bdr2);border-radius:7px;background:var(--surf2);overflow:hidden}
.sp-zoom-grp button{width:26px;height:26px;border:none;background:transparent;color:var(--muted);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:13px}
.sp-zoom-grp button:hover{color:var(--ora);background:var(--surf3)}
.sp-zoom-lbl{font-family:var(--m);font-size:10px;color:var(--txt2);min-width:44px;text-align:center;padding:0 4px;cursor:pointer;border-radius:4px;transition:background .12s,color .12s}
.sp-zoom-lbl:hover{background:var(--surf3);color:var(--ora)}
/* Zoom slider in bottom-right corner of canvas */
.sp-zoom-hud{position:absolute;bottom:14px;right:14px;display:flex;align-items:center;gap:7px;background:rgba(15,21,37,.82);border:1px solid var(--bdr2);border-radius:9px;padding:5px 10px;z-index:20;backdrop-filter:blur(8px);user-select:none}
.sp-zoom-hud-pct{font-family:var(--m);font-size:11px;font-weight:600;color:var(--txt);min-width:36px;text-align:center;cursor:pointer}
.sp-zoom-hud-pct:hover{color:var(--ora)}
.sp-zoom-slider{-webkit-appearance:none;appearance:none;width:90px;height:3px;border-radius:2px;background:var(--bdr2);outline:none;cursor:pointer}
.sp-zoom-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:13px;height:13px;border-radius:50%;background:var(--ora);cursor:pointer;box-shadow:0 0 4px rgba(255,102,0,.4)}
.sp-zoom-slider::-moz-range-thumb{width:13px;height:13px;border-radius:50%;background:var(--ora);cursor:pointer;border:none}
.sp-zoom-slider:hover::-webkit-slider-thumb{box-shadow:0 0 8px rgba(255,102,0,.7)}
.sp-zoom-hud-btn{width:22px;height:22px;border:none;background:transparent;color:var(--muted);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:12px;border-radius:4px;padding:0}
.sp-zoom-hud-btn:hover{color:var(--ora);background:var(--surf3)}
/* Export dropdown */
/* Export dropdown — partagé entre synoptique, plans et input list */
.sp-export-menu,.exp-menu{display:none;position:absolute;top:calc(100% + 5px);right:0;background:var(--surf);border:1px solid var(--bdr2);border-radius:9px;padding:5px;z-index:200;min-width:170px;box-shadow:0 8px 32px rgba(0,0,0,.5)}
.sp-export-menu.open,.exp-menu.open{display:block}
.sp-exp-item,.exp-item{width:100%;display:flex;align-items:center;gap:8px;padding:7px 10px;border:none;background:transparent;color:var(--txt2);font-size:12px;border-radius:6px;cursor:pointer;text-align:left;font-family:var(--f)}
.sp-exp-item:hover,.exp-item:hover{background:var(--surf2);color:var(--txt)}
.sp-exp-item i,.exp-item i{font-size:14px;color:var(--muted)}
.sp-exp-item:hover i,.exp-item:hover i{color:var(--ora)}
.sp-ctx-menu{position:fixed;z-index:9000;background:var(--surf);border:1px solid var(--bdr2);border-radius:9px;padding:5px;min-width:160px;box-shadow:0 8px 32px rgba(0,0,0,.5)}
.sp-ctx-menu .sp-exp-item[data-act="del"]:hover{background:rgba(255,77,106,.12)}
.sp-ctx-menu .sp-exp-item[data-act="del"]:hover i{color:var(--err)}
.sp-exp-sep,.exp-sep{height:1px;background:var(--bdr2);margin:4px 0}
.exp-pro{margin-left:auto;font-family:var(--m);font-size:8px;font-weight:700;padding:1px 5px;border-radius:8px;background:var(--ora-d);color:var(--ora);border:1px solid var(--ora-g)}
.exp-wrap{position:relative;display:inline-block}

.sp-body{display:grid;grid-template-columns:200px 1fr 240px;gap:10px;flex:1;min-height:0;overflow:hidden;align-items:stretch}
.sp-palette{background:var(--surf);border:1px solid var(--bdr2);border-radius:11px;display:flex;flex-direction:column;overflow:hidden}
.sp-pal-hd{font-family:var(--m);font-size:9px;text-transform:uppercase;letter-spacing:1.4px;color:var(--ora);padding:9px 11px 5px;display:flex;align-items:center;gap:6px;background:var(--surf2)}
.sp-pal-cat{padding:4px 8px 0}
.sp-pal-cat-name{font-family:var(--m);font-size:9px;letter-spacing:1.2px;color:var(--txt2);margin:6px 0 5px;text-transform:uppercase;cursor:pointer;user-select:none;display:flex;align-items:center;gap:6px;padding:5px 6px;border-radius:5px;transition:background .12s;background:var(--surf2)}
.sp-pal-cat-name:hover{background:var(--surf3);color:var(--txt)}
.sp-pal-cat-chevron{font-size:9px;transition:transform .15s ease;color:var(--ora);display:inline-block;width:8px}
.sp-pal-cat.collapsed .sp-pal-cat-chevron{transform:rotate(-90deg)}
.sp-pal-cat.collapsed .sp-pal-cat-items{display:none}
.sp-pal-cat-count{margin-left:auto;font-size:9px;color:var(--muted);font-weight:400}
.sp-pal-cat-items{padding-top:2px}
/* Niveau 2 : sous-catégories (marques) à l'intérieur d'une catégorie principale */
.sp-pal-subcat{margin:2px 0}
.sp-pal-subcat.collapsed .sp-pal-subcat-items{display:none}
.sp-pal-subcat.collapsed .sp-pal-sub-chevron{transform:rotate(-90deg)}
.sp-pal-subcat-name{font-family:var(--m);font-size:8.5px;letter-spacing:1px;color:var(--muted);cursor:pointer;user-select:none;display:flex;align-items:center;gap:5px;padding:4px 8px 4px 14px;border-radius:4px;transition:background .12s;text-transform:uppercase}
.sp-pal-subcat-name:hover{background:var(--surf2);color:var(--txt2)}
.sp-pal-sub-chevron{font-size:8px;transition:transform .15s ease;display:inline-block;width:7px;flex-shrink:0}
.sp-pal-subcat-count{margin-left:auto;font-size:8px;color:var(--muted);font-weight:400}
.sp-pal-subcat-items{padding:1px 0}
.sp-pal-cat-add{padding:5px 7px;border-radius:5px;font-size:9px;color:var(--ora);background:rgba(255,107,26,.08);border:1px dashed rgba(255,107,26,.35);cursor:pointer;text-align:center;font-family:var(--m);letter-spacing:.5px;margin-bottom:4px;transition:all .12s}
.sp-pal-cat-add:hover{background:rgba(255,107,26,.18);border-style:solid}
.sp-pal-item-rem{margin-left:auto;background:transparent;border:none;color:var(--muted);cursor:pointer;font-size:11px;padding:2px 4px;border-radius:3px}
.sp-pal-item-rem:hover{color:var(--err);background:rgba(248,113,113,.1)}
.sp-pal-item{display:flex;align-items:center;gap:8px;padding:7px 8px;border-radius:6px;cursor:grab;font-size:10.5px;margin-bottom:3px;border:1px solid var(--bdr);background:var(--surf2);user-select:none;transition:all .12s;color:var(--txt2)}
.sp-pal-item:hover{border-color:var(--ora);color:var(--txt);background:var(--surf3)}
.sp-pal-item:active{cursor:grabbing}
.sp-pal-icon{width:26px;height:26px;flex-shrink:0;display:flex;align-items:center;justify-content:center;color:var(--txt)}
.sp-pal-icon svg{width:100%;height:100%}

.sp-cable-item{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:6px;cursor:pointer;font-size:10.5px;margin-bottom:4px;border:1px solid var(--bdr);background:var(--surf2);user-select:none;transition:all .12s;color:var(--txt2)}
.sp-cable-item:hover{border-color:var(--txt2);color:var(--txt)}
.sp-cable-item.active{border-color:var(--ora);background:rgba(255,107,26,.12);color:var(--ora);box-shadow:0 0 0 1px var(--ora) inset}
.sp-cable-swatch{width:24px;height:3px;border-radius:2px;flex-shrink:0}

.sp-canvas-wrap{background:#fff;border:1px solid var(--bdr2);border-radius:11px;display:flex;flex-direction:column;overflow:hidden;min-height:540px}
.sp-doc-head{display:flex;align-items:center;justify-content:center;padding:12px 18px;background:#1d9bf0;color:#fff;border-bottom:1px solid rgba(0,0,0,.1)}
.sp-doc-title-h{font-family:Outfit,sans-serif;font-weight:700;font-size:19px;letter-spacing:.3px;text-align:center;cursor:text;width:100%;outline:none}
.sp-doc-title-h:hover{text-decoration:underline;text-decoration-style:dotted;text-underline-offset:4px}
.sp-viewport{position:relative;flex:1;background:#f7f9fc;overflow:hidden;cursor:grab;touch-action:none;min-height:440px}
.sp-grid{position:absolute;inset:0;background-image:linear-gradient(rgba(0,0,0,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(0,0,0,.05) 1px,transparent 1px);background-size:24px 24px;pointer-events:none}
.sp-world{position:absolute;left:0;top:0;transform-origin:0 0}
#sp-edges{position:absolute;left:0;top:0;pointer-events:none;z-index:1;overflow:visible}
.sp-edge{cursor:pointer;pointer-events:stroke}
.sp-edge-hit{pointer-events:stroke;opacity:0;cursor:pointer}
.sp-edge.sel{filter:drop-shadow(0 0 4px rgba(255,107,26,.6))}
#sp-nodes{position:absolute;left:0;top:0;z-index:2;pointer-events:none}
.sp-node{position:absolute;pointer-events:auto;touch-action:none;user-select:none;-webkit-user-drag:none;cursor:grab;display:flex;flex-direction:column;align-items:center;text-align:center}
.sp-node:active{cursor:grabbing}
.sp-node.sel .sp-node-card{outline:2px solid #ff6b1a;outline-offset:2px}
.sp-node.target-hint .sp-node-card{outline:2px dashed rgba(255,107,26,.7);outline-offset:2px}
/* Inner content does not intercept pointer events ; only the .sp-node itself
   and the explicit delete button receive clicks. This guarantees drag works
   no matter where inside the card the user grabs. */
.sp-node-card{background:#fff;border:1px solid #c8d4e0;border-radius:9px;padding:10px 12px 14px;box-shadow:0 2px 10px rgba(0,0,0,.07);display:flex;flex-direction:column;align-items:center;gap:6px;min-width:120px;pointer-events:none}
.sp-node-card *{pointer-events:none}
.sp-node-icon{width:64px;height:64px;display:flex;align-items:center;justify-content:center;color:#1d3a5f}
.sp-node-icon.img{width:var(--sp-img-sz,90px);height:var(--sp-img-sz,90px)}
.sp-node-icon svg{width:100%;height:100%;-webkit-user-drag:none}
.sp-node-label{font-family:Outfit,sans-serif;font-weight:700;font-size:12.5px;color:#1d3a5f;line-height:1.2;margin-top:2px}
.sp-node-sub{font-family:Outfit,sans-serif;font-size:10px;color:#5a6a80;line-height:1.3;font-weight:400}
/* Delete button INSIDE the card corner ; only visible when node is selected */
.sp-node-del{position:absolute;top:4px;right:4px;width:20px;height:20px;border:none;border-radius:50%;background:rgba(255,77,106,.92);color:#fff;cursor:pointer;display:none;align-items:center;justify-content:center;font-size:12px;line-height:1;box-shadow:0 1px 4px rgba(0,0,0,.3);z-index:5;pointer-events:auto}
.sp-node.sel .sp-node-del{display:flex}
.sp-node-del:hover{background:#ff4d6a;transform:scale(1.1)}
/* Poignées de redimensionnement des images (image_frame) du synoptique */
.sp-rsz{position:absolute;width:14px;height:14px;background:#ff6b1a;border:2px solid #fff;border-radius:3px;box-shadow:0 1px 5px rgba(0,0,0,.45);z-index:30;pointer-events:auto;touch-action:none}
.sp-rsz-nw,.sp-rsz-se{cursor:nwse-resize}
.sp-rsz-ne,.sp-rsz-sw{cursor:nesw-resize}
.sp-node[data-type="image_frame"] .sp-node-del{top:-10px;right:auto;left:50%;transform:translateX(-50%);z-index:31}

.sp-doc-foot{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:8px 18px;background:#fff;border-top:1px solid #e1e8f0;font-family:Outfit,sans-serif;font-size:11px;color:#5a6a80;min-height:36px}
.sp-legend{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.sp-legend-item{display:flex;align-items:center;gap:6px;font-size:11px}
.sp-legend-line{width:24px;height:3px;border-radius:2px}
.sp-footer-url{font-weight:600;color:#1d9bf0;cursor:text}

.sp-inspector{background:var(--surf);border:1px solid var(--bdr2);border-radius:11px;display:flex;flex-direction:column;overflow:hidden}
.sp-insp-hd{font-family:var(--m);font-size:9px;text-transform:uppercase;letter-spacing:1.4px;color:var(--ora);padding:9px 11px;background:var(--surf2);display:flex;align-items:center;gap:6px}
.sp-insp-empty{font-size:10px;color:var(--muted);padding:14px;line-height:1.55}
.sp-insp-title{font-size:11px;font-weight:700;color:var(--ora);margin-bottom:8px;display:flex;align-items:center;gap:6px}
.sp-insp-lbl{font-family:var(--m);font-size:8px;text-transform:uppercase;letter-spacing:.7px;color:var(--muted);display:block;margin:8px 0 4px}
.sp-insp-inp{width:100%;background:var(--surf2);border:1px solid var(--bdr2);color:var(--txt);font-size:11px;padding:6px 8px;border-radius:5px;font-family:var(--f);outline:none}
.sp-insp-inp:focus{border-color:var(--ora)}
/* Direction selector */
.sp-dir-grp{display:flex;gap:4px;margin-bottom:4px}
.sp-dir-btn{flex:1;height:30px;border:1px solid var(--bdr2);background:var(--surf2);color:var(--muted);border-radius:5px;cursor:pointer;font-size:16px;line-height:1;display:flex;align-items:center;justify-content:center;transition:background .12s,color .12s,border-color .12s}
.sp-dir-btn:hover{background:var(--surf3);color:var(--txt)}
.sp-dir-btn.active{background:var(--ora);color:#fff;border-color:var(--ora)}
.sp-insp-tx{width:100%;background:var(--surf2);border:1px solid var(--bdr2);color:var(--txt);font-size:11px;padding:6px 8px;border-radius:5px;font-family:var(--f);outline:none;resize:vertical;min-height:48px;line-height:1.4}
.sp-insp-row{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.sp-insp-color-grid{display:grid;grid-template-columns:repeat(8,1fr);gap:4px;margin-top:4px}
.sp-insp-color-swatch{height:22px;border-radius:4px;cursor:pointer;border:2px solid transparent;transition:all .1s}
.sp-insp-color-swatch.sel{border-color:#fff;box-shadow:0 0 0 2px var(--ora)}
.sp-insp-net-list{display:flex;flex-direction:column;gap:4px;margin-top:6px}
.sp-insp-net-row{display:flex;align-items:center;gap:6px}
.sp-insp-net-row .sp-cable-swatch{width:30px;height:6px}

.sp-hintbar{background:var(--surf);border:1px solid var(--bdr2);border-radius:9px;padding:7px 14px;font-size:10px;color:var(--muted);display:flex;align-items:center;gap:7px;font-family:var(--m);letter-spacing:.3px}

.sp-banner{position:fixed;left:50%;top:60px;transform:translateX(-50%);z-index:300;background:rgba(255,107,26,.95);color:#000;padding:7px 16px;border-radius:9px;font-size:11px;font-family:var(--m);font-weight:600;display:none;align-items:center;gap:10px;box-shadow:0 4px 16px rgba(0,0,0,.4)}
.sp-banner.show{display:flex}
.sp-banner button{background:#000;color:#fff;border:none;border-radius:5px;padding:3px 9px;font-size:10px;cursor:pointer;font-family:var(--m)}

/* Modal for brand/networks */
.sp-modal{display:none;position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:200;align-items:center;justify-content:center;padding:24px}
.sp-modal.show{display:flex}
.sp-modal-card{background:var(--surf);border:1px solid var(--bdr2);border-radius:13px;padding:22px;max-width:520px;width:100%;max-height:80vh;overflow-y:auto}
.sp-modal-title{font-size:14px;font-weight:700;margin-bottom:14px;display:flex;align-items:center;gap:7px;color:var(--ora)}
.sp-modal-section{margin-bottom:18px}
.sp-modal-section-title{font-family:var(--m);font-size:9px;text-transform:uppercase;letter-spacing:1px;color:var(--muted);margin-bottom:7px}
.sp-net-row{display:flex;align-items:center;gap:8px;padding:6px 8px;background:var(--surf2);border:1px solid var(--bdr);border-radius:7px;margin-bottom:5px}
.sp-net-row input[type=text]{flex:1;background:transparent;border:none;color:var(--txt);font-size:11px;outline:none;font-family:var(--f)}
.sp-net-row input[type=color]{width:32px;height:24px;border:none;background:transparent;cursor:pointer;border-radius:4px}
.sp-net-row .btn{padding:2px 7px;font-size:10px}

/* Icon grid for "new equipment" modal */
.sp-icon-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:6px;margin-top:4px}
.sp-icon-radio{cursor:pointer;display:block}
.sp-icon-radio input{display:none}
.sp-icon-radio-box{display:flex;align-items:center;justify-content:center;background:var(--surf2);border:1px solid var(--bdr2);border-radius:6px;height:44px;color:var(--txt2);transition:all .12s;padding:6px}
.sp-icon-radio-box svg{width:100%;height:100%}
.sp-icon-radio:hover .sp-icon-radio-box{border-color:var(--ora)}
.sp-icon-radio input:checked + .sp-icon-radio-box{border-color:var(--ora);background:rgba(255,107,26,.12);color:var(--ora);box-shadow:0 0 0 1px var(--ora) inset}

/* ── STAGE ── */
.stage-wrap{display:grid;grid-template-columns:180px 1fr;gap:14px}
.stage-pal{background:var(--surf);border:1px solid var(--bdr2);border-radius:11px;padding:10px;max-height:520px;overflow-y:auto}
.stage-pal-title{font-family:var(--m);font-size:9px;text-transform:uppercase;letter-spacing:1.5px;color:var(--muted);margin-bottom:9px}
.pal-item{display:flex;align-items:center;gap:7px;padding:6px 8px;border-radius:6px;cursor:grab;font-size:11px;margin-bottom:3px;border:1px solid var(--bdr);background:var(--surf2);user-select:none;transition:all .13s;color:var(--txt2)}
.pal-item:hover{border-color:var(--bdr3);background:var(--surf3);color:var(--txt)}
.pal-icon{width:22px;height:22px;border-radius:4px;display:flex;align-items:center;justify-content:center;font-size:13px;flex-shrink:0}
.stage-canvas{background:var(--surf);border:1px solid var(--bdr2);border-radius:11px;position:relative;overflow:hidden;min-height:480px}
.s-el{position:absolute;cursor:move;user-select:none;display:flex;flex-direction:column;align-items:center;gap:2px}
.s-el-body{display:flex;align-items:center;justify-content:center;border-radius:5px;border:1px solid rgba(255,255,255,.12);transition:box-shadow .12s}
.s-el.sel .s-el-body{box-shadow:0 0 0 2px var(--ora),0 0 10px var(--ora-g)}
.s-el input{background:transparent;border:none;color:var(--muted);font-size:8px;font-family:var(--m);text-align:center;outline:none;width:66px}
.s-del{position:absolute;top:-6px;right:-6px;background:var(--err);border:none;color:#fff;border-radius:50%;width:14px;height:14px;font-size:9px;cursor:pointer;display:none;align-items:center;justify-content:center;line-height:1}

/* ── PLANS (mode toggle) ── */
.plan-mode-bar{display:flex;gap:3px;background:var(--surf2);border:1px solid var(--bdr2);border-radius:8px;padding:3px}
.pmb{background:transparent;border:none;color:var(--muted);font-size:11px;font-weight:600;padding:5px 14px;border-radius:6px;cursor:pointer;font-family:var(--f);display:flex;align-items:center;gap:5px;transition:all .15s;white-space:nowrap}
.pmb.on{background:var(--ora);color:#000}
.pmb:not(.on):hover{color:var(--txt);background:var(--surf3)}
/* ── SITE PLAN — redesign inspired by SynPro ── */
.site-layout{display:grid;grid-template-columns:200px 1fr 240px;gap:10px;flex:1;min-height:0;overflow:hidden;align-items:stretch;padding:10px;height:100%}
.site-pal-wrap{background:var(--surf);border:1px solid var(--bdr2);border-radius:11px;display:flex;flex-direction:column;overflow:hidden}
.site-pal-hd{font-family:var(--m);font-size:9px;text-transform:uppercase;letter-spacing:1.4px;color:var(--ora);padding:9px 11px 5px;display:flex;align-items:center;gap:6px;background:var(--surf2)}
.site-pal-items{flex:1;overflow-y:auto;padding:4px 6px}
.spl-cat-sec{padding:2px 4px 0}
.spl-cat-sec:first-child{margin-top:0}
.spl-cat-lbl{font-family:var(--m);font-size:9px;letter-spacing:1.2px;color:var(--txt2);text-transform:uppercase;cursor:pointer;user-select:none;display:flex;align-items:center;gap:6px;padding:5px 8px;border-radius:5px;background:var(--surf2);transition:background .12s;justify-content:space-between;margin:6px 0 5px}
.spl-cat-lbl:hover{background:var(--surf3);color:var(--txt)}
.spl-cat-arrow{font-size:9px;opacity:.85;transition:transform .18s;flex-shrink:0;color:var(--ora);width:8px}
.spl-cat-items{overflow:hidden;padding:1px 0 3px}
.spl-item{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:6px;cursor:grab;font-size:10.5px;margin-bottom:3px;border:1px solid var(--bdr);user-select:none;transition:all .12s;color:var(--txt2);width:100%;background:var(--surf2);text-align:left;font-family:var(--f)}
.spl-item:hover{border-color:var(--ora-g);background:var(--surf3);color:var(--txt);transform:translateY(-1px)}
.spl-item-ic{width:30px;height:30px;border-radius:6px;display:flex;align-items:center;justify-content:center;flex-shrink:0;background:#fff;border:1px solid var(--bdr);overflow:hidden}
.spl-item-ic svg{width:100%;height:100%;display:block}
.spl-item-ic-emoji{width:30px;height:30px;border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:15px;flex-shrink:0;border:1px solid}
.site-canvas-wrap{position:relative;overflow:hidden;background:#ffffff;border:1px solid var(--bdr2);border-radius:11px}
.site-canvas-wrap.link-mode{cursor:crosshair}
#site-viewport{position:absolute;inset:0;background-color:#f7f9fc;background-image:linear-gradient(rgba(0,0,0,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(0,0,0,.05) 1px,transparent 1px);background-size:24px 24px;background-position:0 0}
#site-bg-img{position:absolute;top:0;left:0;transform-origin:0 0;display:none;pointer-events:none;max-width:none}
#site-nodes{position:absolute;top:0;left:0;transform-origin:0 0;width:5000px;height:4000px}
#site-cables{position:absolute;top:0;left:0;transform-origin:0 0;width:5000px;height:4000px;overflow:visible;pointer-events:none}
#site-cables .sp-cable-hit{pointer-events:stroke;cursor:pointer}
.spl-node{position:absolute;display:flex;flex-direction:column;align-items:center;gap:4px;cursor:move;user-select:none;z-index:10}
.spl-body{width:72px;height:72px;border-radius:13px;display:flex;align-items:center;justify-content:center;border:1.5px solid;background:#fff;transition:box-shadow .14s,border-color .14s;position:relative;box-shadow:0 1px 6px rgba(0,0,0,.08);padding:8px;box-sizing:border-box}
.spl-body svg{width:100%;height:100%;display:block}
.spl-body-emoji{font-size:32px;display:flex;align-items:center;justify-content:center}
.spl-node.sel .spl-body{box-shadow:0 0 0 3px var(--ora),0 2px 14px rgba(255,107,26,.30);border-color:var(--ora)!important}
.spl-node.link-src .spl-body{animation:pulse .7s infinite;box-shadow:0 0 0 3px var(--grn),0 0 20px rgba(34,214,160,.4)}
.spl-lbl{font-family:var(--m);font-size:calc(11px * var(--spl-ts,1) * var(--el-ts,1));color:#1d3a5f;text-align:center;max-width:calc(120px * var(--spl-ts,1) * var(--el-ts,1));white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:#ffffff;padding:3px 9px;border-radius:5px;pointer-events:none;font-weight:600;border:1px solid rgba(29,58,95,.18);box-shadow:0 1px 3px rgba(0,0,0,.08)}
.spl-note{font-size:calc(10px * var(--spl-ts,1) * var(--el-ts,1));color:#64748b;text-align:center;max-width:calc(110px * var(--spl-ts,1) * var(--el-ts,1));white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none;font-family:var(--m)}
.spl-text-node{padding:9px 13px;border-radius:8px;border:1px solid rgba(29,58,95,.20);background:#ffffff;color:#1d3a5f;text-align:center;white-space:pre-wrap;word-break:break-word;pointer-events:none;line-height:1.4;min-width:60px;box-shadow:0 1px 4px rgba(0,0,0,.06)}
.spl-del{position:absolute;top:-7px;right:-7px;background:var(--err);border:none;color:#fff;border-radius:50%;width:18px;height:18px;font-size:11px;cursor:pointer;display:none;align-items:center;justify-content:center;line-height:1;z-index:20}
.spl-node:hover .spl-del,.spl-node.sel .spl-del{display:flex}
.spl-conn{position:absolute;bottom:-9px;left:50%;transform:translateX(-50%);background:#fff;border:1.5px solid var(--ora);color:var(--ora);border-radius:50%;width:20px;height:20px;font-size:11px;cursor:pointer;display:none;align-items:center;justify-content:center;z-index:20;transition:all .11s;box-shadow:0 1px 4px rgba(0,0,0,.10)}
.spl-node:hover .spl-conn,.spl-node.sel .spl-conn{display:flex}
.spl-conn:hover{background:var(--grn);border-color:var(--grn);color:#fff}
/* Nœuds « carte » — alignés sur le synoptique (.sp-node-card) : icône + label
   dans une carte blanche à ombre. Appliqué aux équipements (pas texte/image). */
.spl-card{background:#fff;border:1px solid #c8d4e0;border-radius:11px;padding:9px 12px 12px;box-shadow:0 2px 10px rgba(0,0,0,.07);gap:5px}
.spl-card .spl-body{border:none!important;background:transparent!important;box-shadow:none!important;padding:0}
.spl-card .spl-lbl{background:transparent;border:none;box-shadow:none;color:#1d3a5f;font-weight:700;padding:0;margin-top:1px}
.spl-card.sel{border-color:var(--ora);box-shadow:0 0 0 2px var(--ora),0 4px 16px rgba(255,107,26,.28)}
.spl-card.sel .spl-body{box-shadow:none!important;border:none!important}
.spl-card.link-src{animation:pulse .7s infinite;border-color:var(--grn);box-shadow:0 0 0 3px var(--grn),0 0 20px rgba(34,214,160,.4)}
.spl-card.link-src .spl-body{animation:none;box-shadow:none!important}
.spl-card .spl-del{top:5px;right:5px}
/* Poignées de redimensionnement des images (image_frame) */
.spl-rsz{position:absolute;width:14px;height:14px;background:var(--ora);border:2px solid #fff;border-radius:3px;box-shadow:0 1px 5px rgba(0,0,0,.45);z-index:30;pointer-events:auto;touch-action:none}
.spl-rsz-nw{cursor:nwse-resize}.spl-rsz-se{cursor:nwse-resize}
.spl-rsz-ne{cursor:nesw-resize}.spl-rsz-sw{cursor:nesw-resize}
/* Croix de suppression au centre-haut pour les images (évite les poignées de coin) */
.spl-img .spl-del{left:50%;right:auto;top:-10px;transform:translateX(-50%);z-index:31}
/* Fond transparent (retirer le fond blanc d'un élément) */
.spl-card.no-bg{background:transparent!important;border-color:transparent!important;box-shadow:none!important}
.spl-card.no-bg.sel{box-shadow:0 0 0 2px var(--ora)!important}
.spl-node.no-bg .spl-text-node{background:transparent!important;border-color:transparent!important;box-shadow:none!important}
.spl-node.no-bg .spl-lbl{background:transparent!important;border:none!important;box-shadow:none!important}
/* Points de routage (waypoints) des câbles */
#site-cables .sp-wp,#sp-edges .sp-wp{fill:#fff;stroke:var(--ora);stroke-width:2;pointer-events:auto;cursor:grab}
#site-cables .sp-wp:hover,#sp-edges .sp-wp:hover{fill:var(--ora);r:9}
/* Mode « placer un point » : curseur crosshair sur tout le plan */
.sp-wp-add,.sp-wp-add *{cursor:crosshair!important}
.site-link-banner{display:none;position:absolute;top:14px;left:50%;transform:translateX(-50%);background:rgba(255,255,255,.96);border:1px solid var(--ora);border-radius:8px;padding:7px 18px;font-size:11px;color:var(--ora);z-index:50;backdrop-filter:blur(6px);white-space:nowrap;pointer-events:none;font-family:var(--m);font-weight:600;box-shadow:0 4px 14px rgba(0,0,0,.10)}
.site-link-banner.show{display:block}
.site-zoom-bar{position:absolute;bottom:14px;right:14px;display:flex;align-items:center;gap:7px;background:rgba(15,21,37,.82);border:1px solid var(--bdr2);border-radius:9px;padding:5px 10px;z-index:40;backdrop-filter:blur(8px);user-select:none;flex-direction:row}
.site-zoom-bar button{width:22px;height:22px;padding:0;display:flex;align-items:center;justify-content:center;font-size:12px;background:transparent;border:none;color:var(--muted);cursor:pointer;border-radius:4px;transition:all .12s}
.site-zoom-bar button:hover{color:var(--ora);background:var(--surf3)}
#site-zoom-lbl{font-size:11px;font-family:var(--m);font-weight:600;color:var(--txt);min-width:36px;text-align:center;background:transparent!important;display:inline-flex;align-items:center;justify-content:center;border-radius:4px;transition:background .12s,color .12s;padding:0 4px}
#site-zoom-lbl:hover{background:var(--surf3);color:var(--ora)}
.site-zoom-slider{-webkit-appearance:none;appearance:none;width:90px;height:3px;border-radius:2px;background:var(--bdr2);outline:none;cursor:pointer}
.site-zoom-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:13px;height:13px;border-radius:50%;background:var(--ora);cursor:pointer;box-shadow:0 0 4px rgba(255,102,0,.4)}
.site-zoom-slider::-moz-range-thumb{width:13px;height:13px;border-radius:50%;background:var(--ora);cursor:pointer;border:none}
.site-zoom-slider:hover::-webkit-slider-thumb{box-shadow:0 0 8px rgba(255,102,0,.7)}
.site-insp-col{display:flex;flex-direction:column;background:var(--surf);border:1px solid var(--bdr2);border-radius:11px;overflow:hidden}
.site-insp-hd{font-family:var(--m);font-size:9px;text-transform:uppercase;letter-spacing:1.4px;color:var(--ora);padding:9px 11px 5px;display:flex;align-items:center;gap:6px;background:var(--surf2)}
.site-insp{flex:1;padding:12px;overflow-y:auto;min-height:0}
/* Inspector form labels / inputs — used by site plan, synoptique rider, etc. */
.syn-insp-title{font-family:var(--f);font-size:12px;font-weight:600;margin-bottom:9px;line-height:1.2;display:flex;align-items:center;gap:7px}
.syn-insp-lbl{font-family:var(--m);font-size:8.5px;text-transform:uppercase;letter-spacing:1.1px;color:var(--muted);display:block;margin:8px 0 4px}
.syn-insp-inp{width:100%;background:var(--surf2);border:1px solid var(--bdr2);color:var(--txt);font-family:var(--f);font-size:11px;padding:6px 8px;border-radius:6px;outline:none;box-sizing:border-box}
.syn-insp-inp:focus{border-color:var(--ora-g)}
.syn-insp-empty{color:var(--muted);font-size:11px;text-align:center;padding:20px 12px;line-height:1.5;font-family:var(--f)}
.site-insp-footer{flex-shrink:0;border-top:1px solid var(--bdr2);padding:8px 10px;background:var(--surf2);display:flex;flex-direction:column;gap:5px}
.site-insp-footer-row{display:flex;align-items:center;justify-content:space-between;font-size:9px;font-family:var(--m);text-transform:uppercase;letter-spacing:1.1px;color:var(--muted)}
.site-insp-footer-row .spl-ts-btn{width:22px;height:22px;font-size:11px}
.spl-cable-legend{display:flex;align-items:center;gap:5px;font-size:10px;color:var(--txt2);margin-bottom:3px}
.spl-cable-dot{width:20px;height:3px;border-radius:2px;flex-shrink:0}
.spl-cable-btn{display:flex;align-items:center;gap:7px;padding:5px 8px;border-radius:6px;border:1px solid transparent;background:transparent;color:var(--txt2);font-size:11px;cursor:pointer;width:100%;text-align:left;transition:all .12s;font-family:var(--f)}
.spl-cable-btn:hover{background:var(--surf2);border-color:var(--bdr2);color:var(--txt)}
.spl-cable-btn.active{border-color:var(--c,var(--bdr3));background:color-mix(in srgb,var(--c,var(--ora)) 12%,transparent);color:var(--txt)}
.spl-cable-dot-sm{width:22px;height:3px;border-radius:2px;flex-shrink:0}
.spl-cable-del{background:none;border:none;color:var(--muted);cursor:pointer;font-size:10px;padding:3px 5px;border-radius:4px;line-height:1;flex-shrink:0;transition:all .12s}
.spl-cable-del:hover{background:rgba(255,77,106,.15);color:var(--err)}
.spl-ts-bar{display:flex;align-items:center;justify-content:space-between;padding:5px 8px;border-bottom:1px solid var(--bdr2);flex-shrink:0}
.spl-ts-btn{width:26px;height:26px;border-radius:5px;border:1px solid var(--bdr2);background:var(--surf2);color:var(--txt2);font-size:12px;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .12s}
.spl-ts-btn:hover{background:var(--surf3);color:var(--txt);border-color:var(--bdr3)}
.spl-dir-bar{display:flex;gap:3px;background:var(--surf2);border:1px solid var(--bdr2);border-radius:7px;padding:3px;margin-bottom:8px}
.spl-dir-btn{flex:1;padding:5px 4px;border:1px solid transparent;border-radius:5px;background:transparent;color:var(--muted);font-size:15px;cursor:pointer;transition:all .12s;font-family:var(--f)}
.spl-dir-btn:hover{background:var(--surf3);color:var(--txt)}
.spl-dir-btn.on{background:var(--ora);color:#000;border-color:transparent}

/* ── BAND PLAN ── */
/* ── BandPlan : redesign inspired by SynPro ── */
.bp-layout{display:grid;grid-template-columns:210px 1fr 250px;gap:10px;flex:1;min-height:0;overflow:hidden;align-items:stretch;padding:10px}
#panel-stage.on{display:flex!important;flex-direction:column;padding:0;overflow:hidden;height:calc(100vh - 70px)}
.bp-pal{background:var(--surf);border:1px solid var(--bdr2);border-radius:11px;display:flex;flex-direction:column;overflow:hidden}
.bp-pal-hd{font-family:var(--m);font-size:9px;text-transform:uppercase;letter-spacing:1.4px;color:var(--ora);padding:9px 11px 5px;display:flex;align-items:center;gap:6px;background:var(--surf2)}
.bp-pal-head{padding:7px 8px 6px;border-bottom:1px solid var(--bdr2);flex-shrink:0;background:var(--surf2)}
.bp-search{width:100%;background:var(--surf);border:1px solid var(--bdr2);color:var(--txt);font-family:var(--f);font-size:11px;padding:6px 9px;border-radius:7px;outline:none;box-sizing:border-box}
.bp-search:focus{border-color:var(--ora-g)}
.bp-pal-list{flex:1;overflow-y:auto;padding:4px 0}
.bp-cat{padding:4px 8px 0}
.bp-cat-hd{font-family:var(--m);font-size:9px;letter-spacing:1.2px;color:var(--txt2);margin:6px 0 5px;text-transform:uppercase;cursor:pointer;user-select:none;display:flex;align-items:center;gap:6px;padding:5px 6px;border-radius:5px;transition:background .12s;background:var(--surf2);justify-content:space-between}
.bp-cat-hd:hover{background:var(--surf3);color:var(--txt)}
.bp-cat-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;box-shadow:0 0 6px rgba(0,0,0,.3)}
.bp-cat-count{margin-left:auto;font-size:9px;color:var(--muted);font-weight:400;background:var(--surf);padding:1px 6px;border-radius:7px}
.bp-cat-items{display:grid;grid-template-columns:1fr 1fr;gap:5px;padding:4px 4px 8px}
.bp-item{display:flex;flex-direction:column;align-items:center;gap:5px;padding:7px 4px;border-radius:7px;border:1px solid var(--bdr);background:var(--surf2);cursor:grab;user-select:none;transition:all .12s;color:var(--txt2)}
.bp-item:hover{background:var(--surf3);border-color:var(--ora-g);color:var(--txt);transform:translateY(-1px)}
.bp-item-ic{width:40px;height:40px;border-radius:8px;display:flex;align-items:center;justify-content:center;border:1px solid;flex-shrink:0;font-size:19px;overflow:hidden;box-sizing:border-box}
.bp-item-ic svg{width:100%;height:100%;display:block}
.bp-item-nm{font-size:9.5px;color:inherit;text-align:center;line-height:1.25;font-family:var(--m);letter-spacing:.2px}
.bp-item-add{grid-column:1/-1;display:flex;align-items:center;justify-content:center;gap:5px;padding:5px 8px;border-radius:7px;border:1px dashed var(--bdr2);background:none;color:var(--muted);font-size:10px;font-family:var(--f);cursor:pointer;transition:all .13s;width:100%;box-sizing:border-box;margin-top:2px}
.bp-item-add:hover{border-color:var(--ora);color:var(--ora)}
.bp-item-custom{position:relative}
.bp-item-del-ci{position:absolute;top:2px;right:2px;background:rgba(220,60,60,.8);border:none;color:#fff;border-radius:3px;width:14px;height:14px;font-size:9px;cursor:pointer;display:none;align-items:center;justify-content:center;padding:0;line-height:1;z-index:5}
.bp-item-custom:hover .bp-item-del-ci{display:flex}
.bp-kit-ch-row{display:flex;align-items:center;gap:4px;margin-bottom:4px;background:var(--surf2);border:1px solid var(--bdr2);border-radius:6px;padding:5px 8px;font-size:10px;color:var(--txt2)}
.bp-kit-ch-row span{flex:1;font-family:var(--m)}
.bp-kit-ch-del{background:none;border:none;color:var(--muted);cursor:pointer;font-size:13px;padding:0 2px;line-height:1;transition:color .1s}
.bp-kit-ch-del:hover{color:var(--err)}
/* canvas — always white background (vintage mode only, no toggle) */
.bp-canvas-wrap{position:relative;overflow:hidden;background:#ffffff;cursor:default;border:1px solid var(--bdr2);border-radius:11px}
#bp-canvas{position:absolute;width:2400px;height:1600px;transform-origin:0 0}
.bp-node{position:absolute;display:flex;flex-direction:column;align-items:center;gap:4px;cursor:move;user-select:none;transform-origin:0 0}
.bp-node-body{width:calc(120px * var(--bp-ns,1));height:calc(120px * var(--bp-ns,1));border-radius:calc(18px * var(--bp-ns,1));display:flex;align-items:center;justify-content:center;font-size:calc(50px * var(--bp-ns,1));border:2px solid;background:#fff;box-shadow:0 1px 8px rgba(0,0,0,.14);transition:box-shadow .12s;position:relative;flex-shrink:0}
.bp-node.sel .bp-node-body{box-shadow:0 0 0 3px var(--ora),0 2px 14px rgba(255,107,26,.35)}
.bp-node.sel .bp-riser-body{box-shadow:0 0 0 3px var(--ora),0 2px 14px rgba(255,107,26,.35)}
.bp-node.sel .bp-kit-block{box-shadow:0 0 0 3px var(--ora),0 2px 14px rgba(255,107,26,.35)}
.bp-node-lbl{font-family:var(--m);font-size:calc(30px * var(--bp-ts,1));color:#111;text-align:center;max-width:calc(200px * var(--bp-ts,1));white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:rgba(255,255,255,.92);padding:5px 14px;border-radius:8px;font-weight:600;pointer-events:none}
.bp-node-ch{position:absolute;top:-18px;right:-18px;background:var(--ora);color:#000;font-family:var(--m);font-size:33px;font-weight:900;padding:6px 14px;border-radius:20px;line-height:1.1;z-index:2;white-space:nowrap;box-shadow:0 2px 10px rgba(0,0,0,.5);letter-spacing:-.3px}
.bp-node-del{position:absolute;top:-11px;left:-11px;background:var(--err);border:2px solid #fff;color:#fff;border-radius:50%;width:30px;height:30px;font-size:20px;font-weight:700;cursor:pointer;display:none;align-items:center;justify-content:center;line-height:1;z-index:20;padding:0;box-shadow:0 2px 8px rgba(0,0,0,.35);transition:transform .12s,background .12s}
.bp-node:hover .bp-node-del,.bp-node.sel .bp-node-del{display:flex}
.bp-node-del:hover{background:#ff4d6a;transform:scale(1.12)}
/* Poignées de redimensionnement pour image_frame dans le plan de scène */
.bp-rsz{position:absolute;width:14px;height:14px;background:var(--ora);border:2px solid #fff;border-radius:3px;box-shadow:0 1px 5px rgba(0,0,0,.45);z-index:30;pointer-events:auto;touch-action:none}
.bp-rsz-nw{cursor:nwse-resize}.bp-rsz-se{cursor:nwse-resize}
.bp-rsz-ne{cursor:nesw-resize}.bp-rsz-sw{cursor:nesw-resize}
.bp-img-frame{position:relative;flex-shrink:0}
.bp-node.sel .bp-img-frame img{outline:2.5px solid var(--ora);outline-offset:3px;border-radius:4px}
/* inspector footer + buttons */
.bp-insp-footer{flex-shrink:0;border-top:1px solid var(--bdr2);padding:8px 10px;background:var(--surf2);display:flex;flex-direction:column;gap:5px}
.bp-insp-footer-row{display:flex;align-items:center;justify-content:space-between;font-size:9px;font-family:var(--m);text-transform:uppercase;letter-spacing:1.1px;color:var(--muted)}
.bp-insp-footer-row .spl-ts-btn{width:22px;height:22px;font-size:11px;background:var(--surf);border:1px solid var(--bdr2);color:var(--txt2);border-radius:5px;cursor:pointer;font-family:var(--m);transition:all .12s}
.bp-insp-footer-row .spl-ts-btn:hover{background:var(--ora-d);border-color:var(--ora-g);color:var(--ora)}
/* Vintage SVG instruments — light theme card */
.bp-vnode-wrap{position:relative;flex-shrink:0}
.bp-vnode-body{width:calc(120px * var(--bp-ns,1));height:calc(120px * var(--bp-ns,1));position:relative;border-radius:calc(18px * var(--bp-ns,1));overflow:hidden;filter:drop-shadow(0 2px 8px rgba(0,0,0,.18));transition:filter .12s}
.bp-node.sel .bp-vnode-body{outline:2.5px solid var(--ora);outline-offset:3px}
.bp-vnode-lbl{font-family:var(--m);font-size:calc(13px * var(--bp-ts,1));color:#1d3a5f;text-align:center;max-width:calc(130px * var(--bp-ts,1));white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:rgba(255,255,255,.98);padding:3px 10px;border-radius:5px;font-weight:600;pointer-events:none;border:1px solid rgba(29,58,95,.18);letter-spacing:.25px;margin-top:2px;box-shadow:0 1px 3px rgba(0,0,0,.08)}
/* Floating zoom HUD — copied from SynPro */
.bp-zoom-bar{position:absolute;bottom:14px;right:14px;display:flex;align-items:center;gap:7px;background:rgba(15,21,37,.82);border:1px solid var(--bdr2);border-radius:9px;padding:5px 10px;z-index:20;backdrop-filter:blur(8px);user-select:none}
.bp-zb{background:transparent;border:none;color:var(--muted);cursor:pointer;font-size:14px;width:22px;height:22px;border-radius:4px;display:flex;align-items:center;justify-content:center;transition:all .12s;font-family:var(--f);padding:0}
.bp-zb:hover{color:var(--ora);background:var(--surf3)}
.bp-zl{font-family:var(--m);font-size:11px;font-weight:600;color:var(--txt);min-width:36px;text-align:center;border-radius:4px;transition:background .12s,color .12s}
.bp-zl:hover{background:var(--surf3);color:var(--ora)}
.bp-zoom-slider{-webkit-appearance:none;appearance:none;width:90px;height:3px;border-radius:2px;background:var(--bdr2);outline:none;cursor:pointer}
.bp-zoom-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:13px;height:13px;border-radius:50%;background:var(--ora);cursor:pointer;box-shadow:0 0 4px rgba(255,102,0,.4)}
.bp-zoom-slider::-moz-range-thumb{width:13px;height:13px;border-radius:50%;background:var(--ora);cursor:pointer;border:none}
.bp-zoom-slider:hover::-webkit-slider-thumb{box-shadow:0 0 8px rgba(255,102,0,.7)}
/* inspector — SynPro look */
.bp-insp{background:var(--surf);border:1px solid var(--bdr2);border-radius:11px;overflow:hidden;display:flex;flex-direction:column;gap:0}
.bp-insp-hd{font-family:var(--m);font-size:9px;text-transform:uppercase;letter-spacing:1.4px;color:var(--ora);padding:9px 11px 5px;display:flex;align-items:center;gap:6px;background:var(--surf2)}
#bp-insp-body{flex:1;display:flex;flex-direction:column;overflow-y:auto}
.bp-insp-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;color:var(--muted);font-size:11px;text-align:center;padding:24px 16px;min-height:200px}
.bp-insp-sec{border-bottom:1px solid var(--bdr2);padding:12px 14px}
.bp-insp-title{font-family:var(--m);font-size:9px;text-transform:uppercase;letter-spacing:1.5px;color:var(--muted);margin-bottom:10px;display:flex;align-items:center;gap:6px}
.bp-inp{background:var(--surf2);border:1px solid var(--bdr2);color:var(--txt);font-family:var(--f);font-size:11px;padding:6px 9px;border-radius:7px;outline:none;width:100%;box-sizing:border-box}
.bp-inp:focus{border-color:var(--ora-g)}
.bp-xy-inp{background:var(--surf2);border:1px solid var(--bdr2);color:var(--txt);font-family:var(--m);font-size:11px;padding:5px 8px;border-radius:6px;outline:none;width:100%;box-sizing:border-box;text-align:right}
.bp-xy-inp:focus{border-color:var(--ora-g)}
.bp-sc-btn{background:var(--surf2);border:1px solid var(--bdr2);color:var(--txt2);font-family:var(--m);font-size:13px;width:24px;height:24px;border-radius:5px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .1s;flex-shrink:0}
.bp-sc-btn:hover{background:var(--surf3);color:var(--txt);border-color:var(--bdr3)}
.bp-rot-grp{display:flex;gap:3px}
.bp-rot-btn{flex:1;background:var(--surf2);border:1px solid var(--bdr2);color:var(--muted);font-size:10px;font-family:var(--m);padding:5px 0;border-radius:5px;cursor:pointer;transition:all .11s}
.bp-rot-btn:hover{border-color:var(--bdr3);color:var(--txt)}
.bp-rot-btn.on{background:var(--ora-d);border-color:var(--ora-g);color:var(--ora)}
.bp-il-sel{width:100%;background:var(--surf2);border:1px solid var(--bdr2);color:var(--txt2);font-size:11px;font-family:var(--f);padding:6px 8px;border-radius:7px;cursor:pointer;margin-bottom:7px;box-sizing:border-box}
.bp-il-badge{display:flex;align-items:center;gap:7px;background:var(--ora-d);border:1px solid var(--ora-g);border-radius:7px;padding:6px 10px;font-size:11px;color:var(--ora);margin-bottom:7px}
.bp-il-unlink{background:none;border:1px solid var(--err);color:var(--err);font-size:10px;font-family:var(--f);padding:3px 10px;border-radius:5px;cursor:pointer;transition:all .12s;display:block;margin-bottom:7px}
.bp-il-unlink:hover{background:rgba(255,77,106,.1)}
.bp-il-create{width:100%;background:none;border:1px dashed var(--ora-g);color:var(--ora);font-size:11px;font-family:var(--f);padding:7px;border-radius:7px;cursor:pointer;transition:all .12s;display:flex;align-items:center;justify-content:center;gap:6px;box-sizing:border-box}
.bp-il-create:hover{background:var(--ora-d)}
@media(max-width:900px){.bp-layout{grid-template-columns:1fr;height:auto}.bp-pal,.bp-insp{max-height:180px}}
.site-cable-legend-ov{position:absolute;bottom:52px;left:10px;background:rgba(10,15,28,0.88);border:1px solid var(--bdr2);border-radius:8px;padding:8px 10px;z-index:10;min-width:140px;pointer-events:none}
.site-cable-legend-ov .scl-title{font-size:calc(9px * var(--leg-ts,1));font-family:var(--m);color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:6px}
.site-cable-legend-ov .scl-row{display:flex;align-items:center;gap:7px;margin-bottom:4px;font-size:calc(11px * var(--leg-ts,1));color:var(--txt2)}
.site-cable-legend-ov .scl-line{width:26px;height:3px;border-radius:2px;flex-shrink:0}

/* ── TEAM ── */
.team-grid{display:grid;grid-template-columns:1fr 1fr;gap:13px}
.team-quota{display:none;align-items:center;gap:7px;flex-wrap:wrap;font-size:11px;font-family:var(--m);color:var(--muted);background:var(--surf2);border:1px solid var(--bdr2);border-radius:8px;padding:8px 12px;margin-top:12px}
.tc{background:var(--surf);border:1px solid var(--bdr2);border-radius:11px;padding:14px;transition:border-color .18s}
.tc:hover{border-color:var(--bdr3)}
.tc-head{display:flex;align-items:center;gap:10px;margin-bottom:9px}
.tc-av{width:38px;height:38px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;flex-shrink:0;overflow:hidden}
.tc-av img{width:100%;height:100%;object-fit:cover;border-radius:50%;display:block}
.user-av{overflow:hidden}
.user-av img{width:100%;height:100%;object-fit:cover;border-radius:50%;display:block}
.tc-name{font-size:13px;font-weight:600}.tc-role{font-size:10px;color:var(--muted);font-family:var(--m);margin-top:1px}
.tc-perms{display:flex;flex-wrap:wrap;gap:4px}
.tc-status{display:flex;align-items:center;gap:6px;font-size:10px;color:var(--muted);margin-top:9px;border-top:1px solid var(--bdr);padding-top:9px}
.tag{display:inline-block;font-size:8px;padding:2px 7px;border-radius:6px;font-weight:600;font-family:var(--m)}
.t-ora{background:var(--ora-d);color:var(--ora);border:1px solid var(--ora-g)}
.t-foh{background:rgba(26,143,255,.16);color:var(--blu2);border:1px solid rgba(26,143,255,.3)}
.t-mon{background:rgba(245,197,66,.13);color:var(--warn);border:1px solid rgba(245,197,66,.3)}
.t-iem{background:var(--grn-d);color:var(--grn);border:1px solid rgba(34,214,160,.3)}
.t-bc{background:rgba(155,106,255,.13);color:#c4a0ff;border:1px solid rgba(155,106,255,.3)}
.on-dot{width:6px;height:6px;border-radius:50%;background:var(--grn);box-shadow:0 0 5px var(--grn);flex-shrink:0}
.off-dot{width:6px;height:6px;border-radius:50%;background:var(--muted2);flex-shrink:0}
.invite-box{background:var(--surf2);border:1px solid var(--bdr2);border-radius:9px;padding:12px;display:flex;gap:8px;align-items:center;margin-top:14px}
.inv-inp{background:transparent;border:none;color:var(--txt);font-size:12px;flex:1;outline:none;font-family:var(--f)}
.inv-inp::placeholder{color:var(--muted)}
.contacts-bar{display:flex;flex-wrap:wrap;gap:5px;padding:8px 0 2px}
.contacts-bar:empty{display:none}
.contacts-bar-label{font-size:10px;color:var(--muted);font-family:var(--m);width:100%;display:flex;align-items:center;gap:4px;margin-bottom:1px}
.contact-pill{display:inline-flex;align-items:center;gap:4px;background:var(--surf2);border:1px solid var(--bdr2);border-radius:20px;padding:3px 6px 3px 10px;cursor:pointer;font-size:11px;color:var(--txt2);font-family:var(--m);transition:border-color .15s,background .15s;max-width:220px}
.contact-pill:hover{border-color:var(--ora);background:rgba(255,107,26,.07);color:var(--ora)}
.contact-pill>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.contact-pill-del{background:none;border:none;padding:2px 3px;cursor:pointer;color:var(--muted);font-size:10px;line-height:1;display:flex;flex-shrink:0;transition:color .15s;border-radius:3px}
.contact-pill-del:hover{color:var(--err)}
/* ── SESSIONS REDESIGN ── */
.sess-section-title{font-family:var(--m);font-size:9px;text-transform:uppercase;letter-spacing:1.5px;color:var(--muted);padding:4px 2px 8px;display:flex;align-items:center;gap:7px;grid-column:1/-1}
.sess-card{background:linear-gradient(180deg,var(--surf),var(--bg2,var(--surf)));border:1px solid var(--bdr2);border-radius:14px;cursor:pointer;transition:border-color .18s,transform .18s,box-shadow .18s;position:relative;overflow:hidden;display:flex;flex-direction:column}
.sess-card:hover{border-color:var(--bdr3);transform:translateY(-2px);box-shadow:0 10px 28px rgba(0,0,0,.28)}
.sess-card.active{border-color:var(--ora-g);box-shadow:0 0 0 1px var(--ora-g),0 8px 26px rgba(255,107,26,.08)}
.sess-card.active:hover{border-color:var(--ora)}
.sess-stripe{position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--ora),var(--ora2));border-radius:14px 14px 0 0}
.sess-body{padding:16px 16px 11px;flex:1}
.sess-top{display:flex;align-items:flex-start;gap:12px;margin-bottom:11px}
.sess-icon-wrap{width:46px;height:46px;border-radius:13px;background:var(--surf3);border:1px solid var(--bdr2);display:flex;align-items:center;justify-content:center;font-size:20px;flex-shrink:0;transition:all .18s}
.sess-live-pill{display:flex;align-items:center;gap:4px;font-size:9px;color:var(--grn);font-family:var(--m);font-weight:700;flex-shrink:0;margin-top:2px;background:rgba(34,214,160,.09);border:1px solid rgba(34,214,160,.25);border-radius:20px;padding:3px 9px}
.sess-storage{display:flex;align-items:center;gap:8px;margin:1px 0 11px}
.sess-storage>i{font-size:12px;color:var(--blu2,#4ca5ff);flex-shrink:0}
.sess-storage-track{flex:1;height:4px;background:var(--surf3);border-radius:3px;overflow:hidden}
.sess-storage-fill{height:100%;border-radius:3px;background:linear-gradient(90deg,#1a8fff,#4ca5ff);transition:width .5s ease}
.sess-storage-lbl{font-family:var(--m);font-size:9px;color:var(--txt2);white-space:nowrap;flex-shrink:0}
.sess-storage-fc{color:var(--muted2)}
.sess-tag.date{border-color:rgba(255,107,26,.25);color:var(--ora)}
.sess-card.active .sess-icon-wrap{background:var(--ora-d);border-color:var(--ora-g)}
.sess-title-wrap{flex:1;min-width:0;padding-top:2px}
.sess-name{font-size:13px;font-weight:600;color:var(--txt);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:color .15s}
.sess-card.active .sess-name{color:var(--ora)}
.sess-venue{font-size:10px;color:var(--muted);font-family:var(--m);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sess-tags{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:10px}
.sess-tag{font-family:var(--m);font-size:9px;background:var(--surf2);border:1px solid var(--bdr2);border-radius:4px;padding:2px 7px;color:var(--muted);display:inline-flex;align-items:center;gap:4px}
.sess-tag.active{background:var(--ora-d);border-color:var(--ora-g);color:var(--ora)}
.sess-members-row{display:flex;align-items:flex-start;gap:8px;flex-wrap:wrap;margin-bottom:4px;min-height:46px;padding-top:2px;border-top:1px solid var(--bdr);padding-top:9px}
.sess-member-wrap{display:flex;flex-direction:column;align-items:center;gap:3px}
.sess-av{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:11px;flex-shrink:0}
.sess-plan-chip{font-family:var(--m);font-size:7px;font-weight:700;text-transform:uppercase;letter-spacing:.3px;padding:1px 4px;border-radius:3px;white-space:nowrap}
.sess-plan-chip.free{background:var(--surf3);color:var(--muted2);border:1px solid var(--bdr2)}
.sess-plan-chip.pro{background:var(--ora-d);color:var(--ora);border:1px solid var(--ora-g)}
.sess-plan-chip.studio{background:rgba(155,106,255,.12);color:#c084fc;border:1px solid rgba(155,106,255,.25)}
.sess-more-av{width:32px;height:32px;border-radius:50%;background:var(--surf3);border:1px solid var(--bdr2);display:flex;align-items:center;justify-content:center;font-size:9px;color:var(--muted);font-family:var(--m);font-weight:600}
.sess-no-members{font-size:10px;color:var(--muted2);font-family:var(--m);font-style:italic;align-self:center}
.sess-footer{padding:0 15px 13px;display:flex;gap:6px}
.sess-open-btn{flex:1;background:var(--surf2);border:1px solid var(--bdr2);color:var(--txt2);font-size:10px;font-weight:600;padding:7px;border-radius:7px;cursor:pointer;font-family:var(--f);text-transform:uppercase;letter-spacing:.4px;transition:all .15s;display:flex;align-items:center;justify-content:center;gap:5px}
.sess-open-btn:hover{background:var(--surf3);border-color:var(--bdr3);color:var(--txt)}
.sess-card.active .sess-open-btn{background:var(--ora-d);border-color:var(--ora-g);color:var(--ora)}
.sess-card.active .sess-open-btn:hover{background:rgba(255,107,26,.22)}
.sess-icon-btn{background:var(--surf2);border:1px solid var(--bdr2);color:var(--muted);font-size:13px;padding:7px 10px;border-radius:7px;cursor:pointer;transition:all .15s;display:flex;align-items:center;justify-content:center}
.sess-icon-btn:hover{background:var(--surf3);border-color:var(--bdr3);color:var(--txt)}
.sess-icon-btn.danger{background:rgba(255,77,106,.07);border-color:rgba(255,77,106,.18);color:var(--err)}
.sess-icon-btn.danger:hover{background:rgba(255,77,106,.18);border-color:var(--err)}
.sess-member-name{font-size:8px;color:var(--muted2);font-family:var(--m);max-width:38px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center}
/* Monogramme pro (remplace les emojis) */
.sess-mono{font-family:var(--m);font-weight:700;font-size:16px;letter-spacing:.5px;text-shadow:0 1px 2px rgba(0,0,0,.35)}
/* Barre d'organisation des sessions */
.sess-toolbar{display:flex;align-items:center;gap:9px;margin-left:auto;flex-wrap:wrap}
.sess-search{display:flex;align-items:center;gap:7px;background:var(--surf2);border:1px solid var(--bdr2);border-radius:8px;padding:0 10px;height:34px;transition:border-color .15s}
.sess-search:focus-within{border-color:var(--ora-g)}
.sess-search i{font-size:14px;color:var(--muted)}
.sess-search input{background:none;border:none;outline:none;color:var(--txt);font-size:12px;font-family:var(--f);width:150px}
.sess-search input::placeholder{color:var(--muted2)}
.sess-sort{height:34px;background:var(--surf2);border:1px solid var(--bdr2);border-radius:8px;color:var(--txt2);font-size:11px;font-family:var(--f);padding:0 28px 0 11px;cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236a7a94' stroke-width='2.5'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 9px center;transition:border-color .15s}
.sess-sort:hover{border-color:var(--bdr3)}
.sess-sort:focus{outline:none;border-color:var(--ora-g)}
.sess-empty-search{grid-column:1/-1;padding:34px 20px;text-align:center;color:var(--muted);font-size:12px}
@media(max-width:560px){.sess-search input{width:100px}.sess-toolbar{width:100%;margin-left:0}}
/* Corbeille « Supprimés récemment » */
.sess-trash-count{background:var(--ora);color:#000;font-family:var(--m);font-size:9px;font-weight:700;border-radius:9px;padding:1px 6px;margin-left:4px}
.trash-row{display:flex;align-items:center;gap:12px;padding:11px 12px;background:var(--surf2);border:1px solid var(--bdr2);border-radius:9px;margin-bottom:9px}
.trash-row:last-child{margin-bottom:0}
.trash-info{flex:1;min-width:0}
.trash-name{font-size:13px;font-weight:600;color:var(--txt);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.trash-meta{font-size:11px;color:var(--muted);font-family:var(--m);margin-top:3px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.trash-dot{color:var(--muted2)}
.trash-actions{display:flex;align-items:center;gap:6px;flex-shrink:0}
/* ── Dossiers de sessions ── */
.sess-folder-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:2px 0 12px}
.sess-folder-bar:empty{display:none}
.sess-fchip{display:inline-flex;align-items:center;gap:7px;height:32px;padding:0 12px;background:var(--surf2);border:1px solid var(--bdr2);border-radius:18px;color:var(--txt2);font-size:11.5px;font-family:var(--f);cursor:pointer;transition:all .15s;white-space:nowrap;user-select:none}
.sess-fchip:hover{border-color:var(--bdr3);background:var(--surf3)}
.sess-fchip.on{background:var(--ora-d);border-color:var(--ora-g);color:var(--ora);font-weight:600}
.sess-fchip .sess-fcount{font-family:var(--m);font-size:9px;background:var(--surf3);border-radius:9px;padding:1px 6px;color:var(--muted)}
.sess-fchip.on .sess-fcount{background:rgba(255,107,26,.18);color:var(--ora)}
.sess-fchip.drag-over{border-color:var(--ora);background:var(--ora-d);box-shadow:0 0 0 2px var(--ora-g)}
.sess-fdot{width:9px;height:9px;border-radius:50%;flex-shrink:0;display:inline-block}
.sess-fchip-new{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 13px;background:transparent;border:1px dashed var(--bdr3);border-radius:18px;color:var(--muted);font-size:11px;font-family:var(--f);cursor:pointer;transition:all .15s}
.sess-fchip-new:hover{border-color:var(--ora-g);color:var(--ora)}
.sess-fbar-tools{display:flex;align-items:center;gap:4px;margin-left:2px}
.sess-fbar-tools button{background:var(--surf2);border:1px solid var(--bdr2);color:var(--muted);width:30px;height:30px;border-radius:8px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;font-size:13px;transition:all .15s}
.sess-fbar-tools button:hover{border-color:var(--bdr3);color:var(--txt)}
.sess-fbar-tools button.danger:hover{color:var(--err);border-color:rgba(255,77,106,.3)}
.sess-fbar-colors{display:inline-flex;align-items:center;gap:5px;margin-left:4px}
.sess-fcolor{width:16px;height:16px;border-radius:50%;cursor:pointer;border:2px solid transparent;transition:transform .12s}
.sess-fcolor:hover{transform:scale(1.18)}
.sess-card .sess-folder-pill{display:inline-flex;align-items:center;gap:5px;font-family:var(--m);font-size:9px;color:var(--muted);background:var(--surf2);border:1px solid var(--bdr2);border-radius:4px;padding:2px 7px}
/* Popover déplacer vers dossier */
.sess-move-menu{position:fixed;z-index:9000;min-width:200px;max-width:240px;background:var(--surf);border:1px solid var(--bdr3);border-radius:10px;box-shadow:0 10px 34px rgba(0,0,0,.4);padding:6px;max-height:60vh;overflow:auto}
.sess-mm-hd{font-family:var(--m);font-size:9px;text-transform:uppercase;letter-spacing:1px;color:var(--muted);padding:5px 9px 7px}
.sess-mm-item{display:flex;align-items:center;gap:9px;width:100%;background:none;border:none;color:var(--txt2);font-size:12px;font-family:var(--f);padding:8px 9px;border-radius:7px;cursor:pointer;text-align:left;transition:background .12s}
.sess-mm-item:hover{background:var(--surf2);color:var(--txt)}
.sess-mm-item.on{color:var(--ora)}
.sess-mm-item i:first-child{font-size:14px;width:15px;text-align:center;flex-shrink:0}
.sess-mm-ck{margin-left:auto;color:var(--ora);font-size:13px}
.sess-mm-sep{height:1px;background:var(--bdr);margin:5px 4px}
.sess-card.sess-dragging{opacity:.5}
.slink-box{background:var(--surf);border:1px solid var(--bdr2);border-radius:12px;padding:16px;margin-top:12px}
.slink-title{font-family:var(--m);font-size:9px;text-transform:uppercase;letter-spacing:1.5px;color:var(--muted);margin-bottom:12px;display:flex;align-items:center;gap:5px}
.slink-row{display:flex;gap:7px;align-items:center;margin-top:12px;flex-wrap:wrap}
.slink-url{flex:1;background:var(--surf2);border:1px solid var(--bdr2);border-radius:5px;font-family:var(--m);font-size:10px;color:var(--ora);padding:6px 9px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:text}
.slink-sections{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-bottom:4px}
.slink-check{display:flex;align-items:center;justify-content:center;gap:7px;padding:9px 12px;background:var(--surf2);border:1px solid var(--bdr2);border-radius:8px;cursor:pointer;transition:all .15s;font-size:11px;font-weight:500;color:var(--txt2);font-family:var(--f)}
.slink-check:hover{border-color:var(--bdr3);background:var(--surf3)}
.slink-check i{font-size:13px;color:var(--muted)}
.slink-check.checked{border-color:var(--ora-g);background:var(--ora-d);color:var(--ora);font-weight:700}
.slink-check.checked i{color:var(--ora)}
.slink-pro-gate{display:flex;align-items:center;gap:10px;padding:10px 14px;background:rgba(255,107,26,.06);border:1px dashed rgba(255,107,26,.3);border-radius:9px;font-size:11px;color:var(--muted)}
.slink-pro-gate i{color:var(--ora);font-size:15px;flex-shrink:0}
.slink-sep{display:flex;align-items:center;gap:8px;margin:14px 0 10px;font-size:9px;font-family:var(--m);text-transform:uppercase;letter-spacing:1.2px;color:var(--muted)}
.slink-sep::before,.slink-sep::after{content:'';flex:1;height:1px;background:var(--bdr)}
.rider-meta-field{margin-bottom:9px}
.rider-meta-field label{display:block;font-size:9px;font-family:var(--m);text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:4px}
.rider-meta-inp,.rider-meta-ta{width:100%;background:var(--surf2);border:1px solid var(--bdr2);border-radius:7px;color:var(--txt);font-size:12px;font-family:inherit;padding:7px 10px;box-sizing:border-box;outline:none;transition:border .15s;resize:none}
.rider-meta-inp:focus,.rider-meta-ta:focus{border-color:var(--ora)}
.rider-file-item{display:flex;align-items:center;gap:8px;padding:7px 10px;background:var(--surf2);border:1px solid var(--bdr2);border-radius:7px;cursor:pointer;transition:all .15s;margin-bottom:6px;font-size:11px}
.rider-file-item:hover{border-color:var(--bdr3)}
.rider-file-item.picked{border-color:var(--ora-g);background:var(--ora-d)}
.rider-file-item.picked .rfi-name{color:var(--ora);font-weight:600}
.rider-file-item i{font-size:15px;flex-shrink:0}
.rfi-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--txt2)}
.rfi-size{font-family:var(--m);font-size:9px;color:var(--muted);flex-shrink:0}
.rider-studio-gate{display:flex;align-items:center;gap:10px;padding:10px 14px;background:rgba(192,132,252,.06);border:1px dashed rgba(192,132,252,.3);border-radius:9px;font-size:11px;color:var(--muted)}
.rider-studio-gate i{color:#c084fc;font-size:15px;flex-shrink:0}
/* ── Gestionnaire de liens Pro ── */
.links-mgr{display:flex;flex-direction:column;gap:8px}
.link-card{background:var(--surf2);border:1px solid var(--bdr2);border-radius:10px;overflow:hidden;transition:border-color .15s}
.link-card:hover{border-color:var(--bdr3)}
.link-card-head{display:flex;align-items:center;gap:8px;padding:10px 12px;cursor:pointer}
.link-card-name{font-size:12px;font-weight:700;color:var(--txt);flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.link-card-secs{display:flex;flex-wrap:wrap;gap:3px;padding:0 12px 10px}
.link-sec-badge{font-size:9px;font-family:var(--m);padding:2px 7px;border-radius:5px;background:var(--surf3);color:var(--muted);border:1px solid var(--bdr)}
.link-card-url{display:flex;align-items:center;gap:6px;padding:8px 12px;background:var(--bg);border-top:1px solid var(--bdr)}
.link-card-url-text{font-size:10px;font-family:var(--m);color:var(--ora);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.link-card-btn{flex-shrink:0;background:none;border:1px solid var(--bdr2);color:var(--muted);font-size:10px;padding:3px 8px;border-radius:5px;cursor:pointer;font-family:var(--f);display:flex;align-items:center;gap:4px;transition:all .1s}
.link-card-btn:hover{border-color:var(--bdr3);color:var(--txt2)}
.link-card-btn.del:hover{border-color:var(--err);color:var(--err)}
.link-card-btn.wa{border-color:rgba(37,211,102,.45);color:#25d366}
.link-card-btn.wa:hover{border-color:#25d366;background:rgba(37,211,102,.12);color:#25d366}
.slink-wa{background:#25d366!important;border-color:#25d366!important;color:#06210f!important}
.slink-wa:hover{background:#1fc15c!important}
.link-new-btn{display:flex;align-items:center;justify-content:center;gap:7px;padding:10px;background:none;border:1px dashed var(--bdr2);border-radius:10px;color:var(--muted);font-size:11px;font-weight:600;cursor:pointer;width:100%;transition:all .15s;font-family:var(--f)}
.link-new-btn:hover{border-color:var(--ora);color:var(--ora);background:var(--ora-d)}
/* Formulaire nouveau lien */
.link-form{background:var(--surf2);border:1px solid var(--ora-g);border-radius:10px;padding:12px;margin-top:4px}
.link-form-title{font-size:11px;font-weight:700;color:var(--ora);margin-bottom:10px;display:flex;align-items:center;gap:6px}
.link-form input{width:100%;background:var(--surf3);border:1px solid var(--bdr2);border-radius:7px;color:var(--txt);font-size:12px;padding:7px 10px;font-family:var(--f);margin-bottom:8px}
.link-form input:focus{outline:none;border-color:var(--ora)}

/* ── SIDE PANEL ── */
.sp-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:150;backdrop-filter:blur(2px)}
.sp-overlay.show{display:block}
.side-panel{position:fixed;top:0;right:0;bottom:0;width:360px;background:var(--surf);border-left:1px solid var(--bdr2);z-index:160;display:flex;flex-direction:column;transform:translateX(100%);transition:transform .25s cubic-bezier(.4,0,.2,1);box-shadow:-8px 0 32px rgba(0,0,0,.4)}
.side-panel.show{transform:translateX(0)}
.sp-head{display:flex;align-items:center;gap:9px;padding:14px;border-bottom:1px solid var(--bdr2);flex-shrink:0;background:linear-gradient(135deg,var(--surf2),var(--surf))}
.sp-head-title{font-size:13px;font-weight:600;flex:1;display:flex;align-items:center;gap:7px}
.sp-body{flex:1;overflow-y:auto}
/* IMPORTANT : .sp-body est partagée par le SYNOPTIQUE (grille 3 colonnes,
   règle plus haut) ET le drawer « Mon espace ». On ne touche donc PAS la
   règle globale : on neutralise la grille UNIQUEMENT dans le drawer via un
   sélecteur plus spécifique, sinon le synoptique casse. */
.side-panel .sp-body{display:block;grid-template-columns:none;gap:0;overflow-x:hidden}
.sp-sec{padding:12px 13px}
.sp-sec-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:9px}
.sp-sec-title{font-family:var(--m);font-size:9px;text-transform:uppercase;letter-spacing:1.5px;color:var(--muted);display:flex;align-items:center;gap:5px}
.sp-div{height:1px;background:var(--bdr);margin:0 13px}
/* Notifications */
.tb-notif-dot{position:absolute;top:-6px;right:-6px;min-width:16px;height:16px;border-radius:8px;background:var(--err);color:#fff;font-size:9px;font-weight:700;font-family:var(--m);display:flex;align-items:center;justify-content:center;padding:0 4px;border:2px solid #0a0f1c;z-index:2}
.sp-notif-count{font-size:9px;font-family:var(--m);font-weight:700;background:var(--err);color:#fff;min-width:16px;height:16px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;padding:0 5px}
.sp-notif-card{background:var(--surf2);border:1px solid var(--bdr2);border-radius:10px;padding:11px 12px;margin-bottom:8px;position:relative;overflow:hidden}
.sp-notif-card.invite{border-color:rgba(255,107,26,.25)}
.sp-notif-card.invite::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--ora)}
.sp-notif-top{display:flex;align-items:flex-start;gap:9px;margin-bottom:9px}
.sp-notif-ic{width:30px;height:30px;border-radius:8px;background:var(--ora-d);border:1px solid var(--ora-g);color:var(--ora);display:flex;align-items:center;justify-content:center;font-size:14px;flex-shrink:0}
.sp-notif-txt{flex:1;min-width:0}
.sp-notif-title{font-size:12px;font-weight:600;color:var(--txt);line-height:1.3}
.sp-notif-sub{font-size:10px;color:var(--muted);font-family:var(--m);margin-top:2px}
.sp-notif-acts{display:flex;gap:6px}
.sp-notif-acts .btn,.sp-notif-acts .btn-decline{flex:1;justify-content:center}
.btn-decline{background:var(--surf3);border:1px solid var(--bdr2);color:var(--muted);font-size:11px;font-weight:600;padding:7px;border-radius:7px;cursor:pointer;font-family:var(--f);display:flex;align-items:center;justify-content:center;gap:5px;transition:all .15s}
.btn-decline:hover{border-color:rgba(255,77,106,.3);color:var(--err)}
/* show cards */
.sp-show{display:flex;align-items:center;gap:9px;padding:9px 11px;border-radius:8px;cursor:pointer;border:1px solid var(--bdr);background:var(--surf2);margin-bottom:5px;transition:all .13s;position:relative}
.sp-show:hover{border-color:var(--bdr3);background:var(--surf3)}
.sp-show.active{border-color:var(--ora-g);background:var(--ora-d)}
.sp-show.active::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--ora);border-radius:2px 0 0 2px}
.sp-show-ico{width:30px;height:30px;border-radius:6px;background:var(--surf3);border:1px solid var(--bdr2);display:flex;align-items:center;justify-content:center;font-size:14px;flex-shrink:0}
.sp-show.active .sp-show-ico{background:var(--ora-d);border-color:var(--ora-g)}
.sp-show-name{font-size:12px;font-weight:600;color:var(--txt);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sp-show-meta{font-size:9px;color:var(--muted);font-family:var(--m);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sp-show-del{position:absolute;right:7px;top:50%;transform:translateY(-50%);background:transparent;border:none;color:var(--muted2);cursor:pointer;padding:3px;border-radius:3px;font-size:12px;display:none;align-items:center;transition:all .12s}
.sp-show:hover .sp-show-del{display:flex}
.sp-show-del:hover{color:var(--err);background:rgba(255,77,106,.1)}
/* template cards in sp */
.sp-tpl{display:flex;align-items:center;gap:7px;padding:6px 9px;border-radius:6px;cursor:pointer;border:1px solid transparent;margin-bottom:2px;transition:all .12s;font-size:11px;color:var(--txt2)}
.sp-tpl:hover{background:var(--surf2);border-color:var(--bdr);color:var(--txt)}
.sp-tpl.active{background:var(--ora-d);border-color:var(--ora-g);color:var(--ora)}
.sp-tpl.usr.active{background:var(--blu-d);border-color:var(--blu-g);color:var(--blu2)}
.sp-tpl-del{background:transparent;border:none;color:var(--muted2);cursor:pointer;font-size:11px;padding:2px 4px;margin-left:auto;display:none}
.sp-tpl:hover .sp-tpl-del{display:block}
.sp-tpl-del:hover{color:var(--err)}
.sp-save-btn{width:100%;background:var(--blu-d);border:1px dashed rgba(90,176,255,.3);color:var(--blu2);font-size:10px;font-weight:500;padding:8px;border-radius:7px;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:6px;font-family:var(--f);transition:all .15s;margin-top:6px}
.sp-save-btn:hover{background:var(--blu);color:#000;border-style:solid}
/* template preview slide */
.sp-preview{position:absolute;inset:0;background:var(--surf);display:flex;flex-direction:column;transform:translateX(100%);transition:transform .2s ease;z-index:10}
.sp-preview.show{transform:translateX(0)}
.sp-preview-head{display:flex;align-items:center;gap:8px;padding:11px 13px;border-bottom:1px solid var(--bdr2);flex-shrink:0;background:var(--surf2)}
.sp-preview-title{font-size:12px;font-weight:600;flex:1}
.import-mode{display:flex;border:1px solid var(--bdr2);border-radius:6px;overflow:hidden}
.im-btn{flex:1;background:transparent;border:none;color:var(--muted);font-size:10px;font-weight:500;padding:5px 10px;cursor:pointer;font-family:var(--f);transition:all .13s}
.im-btn.on{background:var(--ora);color:#000}
.sp-preview-tbl{flex:1;overflow-y:auto}
.sp-preview-tbl table{width:100%;border-collapse:collapse;font-size:10px}
.sp-preview-tbl th{background:var(--surf2);color:var(--muted);font-family:var(--m);font-size:8px;text-transform:uppercase;letter-spacing:.8px;padding:6px 8px;border-bottom:1px solid var(--bdr2);border-right:1px solid var(--bdr);text-align:left;position:sticky;top:0}
.sp-preview-tbl th:last-child{border-right:none}
.sp-preview-tbl td{padding:4px 8px;border-bottom:1px solid var(--bdr);border-right:1px solid var(--bdr);color:var(--txt2)}
.sp-preview-tbl td:last-child{border-right:none}
.sp-preview-actions{display:flex;gap:7px;padding:10px 13px;border-top:1px solid var(--bdr);flex-shrink:0;flex-wrap:wrap}

/* ── MODALS ── */
.modal-ov{display:none;position:fixed;inset:0;background:rgba(0,0,0,.85);z-index:300;align-items:center;justify-content:center;padding:20px;backdrop-filter:blur(4px)}
.modal-ov.show{display:flex;animation:fadeIn .18s ease}
.modal-box{background:var(--surf);border:1px solid var(--bdr2);border-radius:13px;max-width:100%;max-height:88vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 24px 80px rgba(0,0,0,.7)}
.modal-head{display:flex;align-items:center;gap:10px;padding:15px 17px;border-bottom:1px solid var(--bdr2);flex-shrink:0;background:linear-gradient(135deg,var(--surf2),var(--surf))}
.modal-title{font-size:13px;font-weight:600;flex:1;font-family:var(--f)}
.modal-body{flex:1;overflow-y:auto;padding:15px 17px}
.modal-foot{padding:11px 17px;border-top:1px solid var(--bdr);display:flex;gap:8px;justify-content:flex-end;flex-shrink:0;background:var(--surf2)}
.pre-code{font-family:var(--m);font-size:10px;color:#8fa8c8;line-height:1.8;white-space:pre;background:var(--surf2);border:1px solid var(--bdr2);border-radius:7px;padding:12px;overflow-x:auto}

/* Input List Assistant modal */
.ila-types{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:4px}
.ila-type-btn{display:flex;flex-direction:column;align-items:center;gap:5px;padding:11px 14px;background:var(--surf2);border:2px solid var(--bdr2);border-radius:10px;cursor:pointer;font-family:var(--f);font-size:11px;font-weight:600;color:var(--txt2);transition:all .13s;min-width:80px}
.ila-type-btn i{font-size:20px;color:var(--muted)}
.ila-type-btn:hover{border-color:var(--ora-g);color:var(--txt)}
.ila-type-btn:hover i{color:var(--ora)}
.ila-type-btn.sel{border-color:var(--ora);color:var(--ora);background:rgba(255,140,60,.08)}
.ila-type-btn.sel i{color:var(--ora)}
.ila-sections{display:flex;flex-direction:column;gap:6px;margin-top:14px}
.ila-sec{background:var(--surf2);border:1px solid var(--bdr2);border-radius:9px;padding:9px 12px;display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.ila-sec-icon{font-size:17px;color:var(--ora);width:20px;text-align:center;flex-shrink:0}
.ila-sec-lbl{font-size:12px;font-weight:600}
.ila-sec-sub{font-size:10px;color:var(--muted);margin-top:1px}
.ila-sec-opts{display:flex;align-items:center;gap:6px;margin-left:auto;flex-shrink:0;flex-wrap:wrap}
.ila-hf-btn{display:flex;align-items:center;gap:4px;padding:4px 9px;background:var(--surf);border:1px solid var(--bdr2);border-radius:6px;cursor:pointer;font-family:var(--f);font-size:10px;font-weight:600;color:var(--muted);transition:all .13s;white-space:nowrap}
.ila-hf-btn:hover{border-color:var(--ora-g);color:var(--txt)}
.ila-hf-btn.on{background:rgba(255,140,60,.12);border-color:var(--ora);color:var(--ora)}
.ila-hf-btn i{font-size:11px}
.ila-stand-sel{background:var(--surf);border:1px solid var(--bdr2);color:var(--txt2);font-size:10px;font-family:var(--f);padding:4px 7px;border-radius:6px;cursor:pointer;outline:none;transition:border-color .13s}
.ila-stand-sel:focus,.ila-stand-sel:hover{border-color:var(--ora-g);color:var(--txt)}
.ila-spinner{display:flex;align-items:center;background:var(--surf);border:1px solid var(--bdr2);border-radius:7px;overflow:hidden;flex-shrink:0}
.ila-spin-btn{background:none;border:none;color:var(--txt2);font-size:15px;width:28px;height:28px;cursor:pointer;font-family:var(--f);font-weight:700;transition:background .1s;display:flex;align-items:center;justify-content:center}
.ila-spin-btn:hover{background:var(--bdr2);color:var(--txt)}
.ila-spin-btn:disabled{opacity:.25;cursor:default}
.ila-spin-btn:disabled:hover{background:none}
.ila-spin-val{font-family:var(--m);font-size:12px;font-weight:700;color:var(--txt);min-width:22px;text-align:center}
.ila-sec.ila-sec-off{opacity:.35;transition:opacity .15s}
.ila-sec.ila-sec-off:hover{opacity:.7}
.ila-total{font-family:var(--m);font-size:10px;text-transform:uppercase;letter-spacing:1px;color:var(--muted);margin-top:12px;text-align:right}
.ila-total span{color:var(--ora);font-size:13px;font-weight:700}
.ila-add-after-btn{background:none;border:none;color:var(--muted);font-size:12px;width:22px;height:22px;cursor:pointer;border-radius:4px;display:flex;align-items:center;justify-content:center;transition:all .12s;flex-shrink:0;padding:0}
.ila-add-after-btn:hover{background:var(--ora-d);color:var(--ora)}
.ila-custom-row{border-color:var(--blu-g) !important;background:rgba(26,143,255,.04) !important}
.ila-saved-row{border-color:var(--ora-g) !important;background:rgba(255,107,26,.04) !important}
.ila-add-form{background:var(--surf3);border:1px dashed var(--ora-g);border-radius:9px;padding:11px 13px;margin:4px 0 2px}
.ila-af-inp{background:var(--surf2);border:1px solid var(--bdr2);color:var(--txt);font-size:11px;font-family:var(--f);padding:5px 8px;border-radius:6px;outline:none;width:100%;box-sizing:border-box;transition:border-color .13s}
.ila-af-inp:focus{border-color:var(--ora-g)}
.ila-saved-sec{margin-top:12px;padding-top:10px;border-top:1px solid var(--bdr)}
.ila-saved-title{font-family:var(--m);font-size:9px;text-transform:uppercase;letter-spacing:1.5px;color:var(--muted);margin-bottom:8px;display:flex;align-items:center;gap:6px}
.ila-new-btn{display:flex;align-items:center;justify-content:center;gap:6px;padding:7px 12px;background:transparent;border:1px dashed var(--bdr2);border-radius:8px;cursor:pointer;font-family:var(--f);font-size:11px;color:var(--muted);transition:all .13s;width:100%;margin-top:6px}
.ila-new-btn:hover{border-color:var(--ora-g);color:var(--ora)}
/* ── OUT LIST ── */
.out-tbl td{padding:5px 6px}
.out-tbl td:first-child{text-align:center;font-family:var(--m);font-size:11px;font-weight:700;color:var(--muted);width:38px}
.out-type-sel{background:var(--surf2);border:1px solid var(--bdr2);color:var(--txt2);font-size:10px;font-family:var(--m);padding:3px 6px;border-radius:5px;cursor:pointer;outline:none;transition:border-color .13s;width:100%}
.out-type-sel:focus{border-color:var(--ora-g)}
/* ── OLA ── */
.ola-cat-row{display:flex;align-items:center;gap:9px;padding:10px 13px;background:var(--surf2);border:1px solid var(--bdr2);border-radius:9px;margin-bottom:5px;transition:border-color .15s}
.ola-cat-row.ola-active{border-color:var(--ora-g);background:rgba(255,107,26,.05)}
.ola-cat-icon{font-size:17px;width:22px;text-align:center;flex-shrink:0}
.ola-cat-info{flex:1;min-width:0}
.ola-cat-lbl{font-size:12px;font-weight:600}
.ola-cat-sub{font-size:9px;color:var(--muted);font-family:var(--m);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ola-spinner{display:flex;align-items:center;background:var(--surf);border:1px solid var(--bdr2);border-radius:7px;overflow:hidden;flex-shrink:0}
.ola-spin-btn{background:none;border:none;color:var(--txt2);font-size:15px;width:28px;height:28px;cursor:pointer;font-weight:700;font-family:var(--f);display:flex;align-items:center;justify-content:center;transition:background .1s}
.ola-spin-btn:hover{background:var(--bdr2);color:var(--txt)}
.ola-spin-btn:disabled{opacity:.25;cursor:default}.ola-spin-btn:disabled:hover{background:none}
.ola-spin-val{font-family:var(--m);font-size:12px;font-weight:700;color:var(--txt);min-width:24px;text-align:center}
.ola-total{font-family:var(--m);font-size:10px;text-transform:uppercase;letter-spacing:1px;color:var(--muted);margin-top:12px;text-align:right}
.ola-total-pill{color:var(--ora);font-size:13px;font-weight:700;margin-left:5px}
.ila-intro{display:flex;gap:10px;align-items:flex-start;font-size:11px;color:var(--txt2);line-height:1.65;padding:11px 14px;background:linear-gradient(135deg,var(--surf2),var(--surf3));border:1px solid var(--bdr2);border-left:3px solid var(--ora);border-radius:0 10px 10px 0;margin-bottom:14px}
.ila-intro-icon{font-size:15px;color:var(--ora);flex-shrink:0;margin-top:1px}
.ila-intro strong{color:var(--ora);font-weight:600}
.ila-cat{margin-bottom:6px;border:1px solid var(--bdr2);border-radius:11px;overflow:hidden;transition:border-color .2s}
.ila-cat.open{border-color:var(--bdr3)}
.ila-cat-hd{display:flex;align-items:center;gap:10px;padding:11px 14px;cursor:pointer;user-select:none;background:var(--surf2);transition:background .12s}
.ila-cat-hd:hover{background:var(--surf3)}
.ila-cat-hd-icon{font-size:16px;color:var(--ora);flex-shrink:0;width:20px;text-align:center}
.ila-cat-hd-label{font-size:12px;font-weight:600;letter-spacing:.15px;flex:1}
.ila-cat-hd-badge{background:var(--ora);color:#000;font-size:9px;font-family:var(--m);font-weight:700;padding:2px 7px;border-radius:20px;opacity:0;transition:opacity .18s;flex-shrink:0}
.ila-cat-hd-badge.show{opacity:1}
.ila-cat-hd-arr{font-size:12px;color:var(--muted);transition:transform .2s;flex-shrink:0;margin-left:2px}
.ila-cat-body{border-top:1px solid var(--bdr)}
.ila-cb-row{display:flex;align-items:center;gap:11px;padding:8px 14px;border-bottom:1px solid var(--bdr);cursor:pointer;transition:background .12s;position:relative}
.ila-cb-row:last-child{border-bottom:none}
.ila-cb-row::before{content:'';position:absolute;left:0;top:4px;bottom:4px;width:2px;border-radius:2px;background:var(--ora);opacity:0;transition:opacity .18s}
.ila-cb-row:hover{background:rgba(255,255,255,.018)}
.ila-cb-row.checked{background:rgba(255,107,26,.07)}
.ila-cb-row.checked::before{opacity:1}
.ila-cb-box{width:16px;height:16px;border-radius:4px;border:1.5px solid var(--bdr3);background:var(--surf);flex-shrink:0;display:flex;align-items:center;justify-content:center;transition:all .18s}
.ila-cb-row.checked .ila-cb-box{background:var(--ora);border-color:var(--ora)}
.ila-cb-box-chk{width:5px;height:9px;border-right:2px solid #000;border-bottom:2px solid #000;transform:rotate(40deg) translate(0px,-1px);opacity:0;transition:opacity .15s}
.ila-cb-row.checked .ila-cb-box-chk{opacity:1}
.ila-cb-lbl{flex:1;font-size:12px;color:var(--txt);font-weight:500}
.ila-cb-mic{font-size:9px;color:var(--muted);font-family:var(--m);background:var(--surf2);border:1px solid var(--bdr2);padding:2px 6px;border-radius:4px;white-space:nowrap}
.ila-cb-stand{font-size:9px;color:var(--txt2);font-family:var(--m);background:var(--surf3);border:1px solid var(--bdr3);padding:2px 6px;border-radius:4px;white-space:nowrap;margin-left:3px}
.ila-item-del{background:none;border:none;color:var(--muted2);font-size:10px;width:18px;height:18px;cursor:pointer;border-radius:3px;display:flex;align-items:center;justify-content:center;flex-shrink:0;padding:0;transition:all .12s;margin-left:3px}
.ila-item-del:hover{background:rgba(255,60,60,.15);color:#ff5050}
.ila-cat-del{background:none;border:none;color:var(--muted);font-size:11px;width:22px;height:22px;cursor:pointer;border-radius:5px;display:flex;align-items:center;justify-content:center;flex-shrink:0;padding:0;margin-right:2px;transition:all .12s}
.ila-cat-del:hover{background:rgba(255,60,60,.15);color:#ff5050}
.ila-add-item-btn{display:flex;align-items:center;gap:7px;padding:7px 14px;font-size:10px;color:var(--muted);cursor:pointer;transition:all .13s;font-family:var(--f);border-top:1px dashed var(--bdr2)}
.ila-add-item-btn:hover{background:rgba(255,107,26,.04);color:var(--ora)}
.ila-add-item-btn i{font-size:10px}
.ila-add-form-inline{padding:11px 14px;border-top:1px solid var(--bdr2);background:var(--surf3)}
.ila-af-sel{background:var(--surf2);border:1px solid var(--bdr2);color:var(--txt2);font-size:10px;font-family:var(--f);padding:5px 7px;border-radius:6px;cursor:pointer;outline:none;flex-shrink:0;transition:border-color .13s}
.ila-af-sel:focus{border-color:var(--ora-g)}
.ila-af-ok{display:flex;align-items:center;gap:5px;background:var(--ora-d);border:1px solid var(--ora-g);color:var(--ora);font-size:10px;font-weight:600;padding:5px 10px;border-radius:6px;cursor:pointer;font-family:var(--f);white-space:nowrap;transition:all .13s}
.ila-af-ok:hover{background:var(--ora);color:#000}
.ila-af-cancel{display:flex;align-items:center;justify-content:center;background:transparent;border:1px solid var(--bdr2);color:var(--muted);font-size:12px;width:28px;height:28px;border-radius:6px;cursor:pointer;flex-shrink:0;padding:0;transition:all .13s}
.ila-af-cancel:hover{border-color:var(--bdr3);color:var(--txt)}
.ila-add-cat-btn{display:flex;align-items:center;justify-content:center;gap:7px;width:100%;padding:10px;background:transparent;border:1px dashed var(--bdr2);border-radius:10px;color:var(--muted);font-size:11px;font-family:var(--f);cursor:pointer;margin-top:6px;transition:all .13s}
.ila-add-cat-btn:hover{border-color:var(--ora-g);color:var(--ora);background:var(--ora-d)}
.ila-add-cat-form{margin-top:6px;padding:12px 14px;background:var(--surf2);border:1px solid var(--bdr2);border-radius:10px}
.ila-cb-spinner{display:flex;align-items:center;background:var(--surf);border:1px solid var(--bdr2);border-radius:7px;overflow:hidden;flex-shrink:0;margin-left:6px}
.ila-sp-btn{background:none;border:none;color:var(--txt2);font-size:14px;width:24px;height:26px;cursor:pointer;font-family:var(--f);font-weight:700;display:flex;align-items:center;justify-content:center;transition:background .1s;line-height:1}
.ila-sp-btn:hover:not(:disabled){background:var(--surf3);color:var(--txt)}
.ila-sp-btn:disabled{opacity:.22;cursor:default}
.ila-sp-val{font-family:var(--m);font-size:11px;font-weight:700;color:var(--muted);min-width:22px;text-align:center;transition:color .15s}
.ila-cb-row.checked .ila-sp-val{color:var(--ora)}
.ila-total{display:flex;align-items:center;justify-content:flex-end;gap:10px;margin-top:14px;padding-top:12px;border-top:1px solid var(--bdr)}
.ila-total-label{font-family:var(--m);font-size:9px;text-transform:uppercase;letter-spacing:1.2px;color:var(--muted)}
.ila-total-pill{background:var(--ora);color:#000;font-size:12px;font-family:var(--m);font-weight:700;padding:3px 11px;border-radius:20px;min-width:28px;text-align:center}

/* CSV Import modal */
.csv-info-bar{display:flex;gap:10px;align-items:flex-start;font-size:11px;color:var(--txt2);line-height:1.65;padding:11px 14px;background:linear-gradient(135deg,var(--surf2),var(--surf3));border:1px solid var(--bdr2);border-left:3px solid var(--ora);border-radius:0 10px 10px 0;margin-bottom:14px}
.csv-info-icon{font-size:15px;color:var(--ora);flex-shrink:0;margin-top:1px}
.csv-sec-hd{font-family:var(--m);font-size:9px;text-transform:uppercase;letter-spacing:1.4px;color:var(--muted);margin-bottom:9px;display:flex;align-items:center;gap:6px}
.csv-map-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:16px}
.csv-map-field{display:flex;flex-direction:column;gap:4px}
.csv-map-lbl{font-size:10px;font-family:var(--m);color:var(--txt2);letter-spacing:.3px}
.csv-map-sel{background:var(--surf2);border:1px solid var(--bdr2);color:var(--txt);font-size:11px;font-family:var(--f);padding:6px 8px;border-radius:7px;cursor:pointer;outline:none;width:100%;transition:border-color .13s}
.csv-map-sel:focus{border-color:var(--ora)}
.csv-preview-wrap{overflow-x:auto;border:1px solid var(--bdr2);border-radius:9px;margin-bottom:14px;max-height:220px;overflow-y:auto}
.csv-preview-tbl{width:100%;border-collapse:collapse;font-size:11px}
.csv-preview-tbl th{font-family:var(--m);font-size:9px;text-transform:uppercase;letter-spacing:1px;color:var(--muted);padding:7px 10px;text-align:left;border-bottom:1px solid var(--bdr2);background:var(--surf2);white-space:nowrap;position:sticky;top:0;z-index:1}
.csv-preview-tbl td{padding:6px 10px;border-bottom:1px solid var(--bdr);color:var(--txt2);white-space:nowrap;max-width:120px;overflow:hidden;text-overflow:ellipsis}
.csv-preview-tbl tr:last-child td{border-bottom:none}
.csv-td-ch{font-family:var(--m);color:var(--ora)!important;font-weight:700}
.csv-mode-row{display:flex;gap:8px;margin-bottom:4px}
.csv-mode-btn{flex:1;padding:9px 12px;border-radius:8px;border:1px solid var(--bdr2);background:var(--surf2);color:var(--txt2);font-size:11px;font-family:var(--f);cursor:pointer;transition:all .15s;display:flex;align-items:center;justify-content:center;gap:7px}
.csv-mode-btn.active{background:var(--ora-d);border-color:var(--ora-g);color:var(--ora);font-weight:600}
.csv-mode-btn:hover:not(.active){background:var(--surf3)}
.csv-stat-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:9px}
.csv-stat-pill{background:var(--ora);color:#000;font-size:9px;font-family:var(--m);font-weight:700;padding:2px 9px;border-radius:20px}

/* PDF modal fields */
.pdf-sec{margin-bottom:18px}
.pdf-sec-title{font-family:var(--m);font-size:9px;text-transform:uppercase;letter-spacing:1.5px;color:var(--muted);margin-bottom:9px;display:flex;align-items:center;gap:6px;padding-bottom:6px;border-bottom:1px solid var(--bdr)}
.pdf-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.pdf-grid.c3{grid-template-columns:1fr 1fr 1fr}
.pdf-fld{display:flex;flex-direction:column;gap:4px}
.pdf-fld.full{grid-column:1/-1}
.pdf-lbl{font-family:var(--m);font-size:9px;text-transform:uppercase;letter-spacing:1px;color:var(--muted)}
.pdf-inp{background:var(--surf2);border:1px solid var(--bdr2);color:var(--txt);font-size:12px;padding:7px 10px;border-radius:6px;outline:none;font-family:var(--f);width:100%;transition:border-color .13s}
.pdf-inp:focus{border-color:var(--ora)}
.pdf-inp::placeholder{color:var(--muted2)}
textarea.pdf-inp{resize:vertical;min-height:54px;line-height:1.5}

/* profile modal */
.profile-box{width:520px;max-width:96vw}
.prof-avatar-wrap{display:flex;flex-direction:column;align-items:center;gap:10px;padding:20px 0 4px}
.prof-avatar{width:72px;height:72px;border-radius:50%;background:var(--ora);color:#000;font-size:26px;font-weight:800;font-family:var(--m);display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden;position:relative;cursor:pointer;transition:filter .15s}
.prof-avatar:hover{filter:brightness(.75)}
.prof-avatar img{width:100%;height:100%;object-fit:cover;border-radius:50%;display:block}
.prof-avatar-camera{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s;font-size:20px;color:#fff}
.prof-avatar:hover .prof-avatar-camera{opacity:1}
/* Plan ring on any avatar — wraps the element */
.av-ring{display:inline-flex;border-radius:50%;padding:2px;flex-shrink:0}
.av-ring.pro   {background:conic-gradient(#ff4d6a,#ff6b1a,#ff4d6a)}
.av-ring.studio{background:conic-gradient(#9b6aff,#c084fc,#9b6aff)}
.prof-email-lbl{font-size:11px;color:var(--muted);font-family:var(--m)}
.prof-section{border-top:1px solid var(--bdr);margin-top:16px;padding-top:14px}
.prof-section-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--muted);margin-bottom:12px;display:flex;align-items:center;gap:6px}
.prof-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.prof-fld{display:flex;flex-direction:column;gap:4px}
.prof-fld.full{grid-column:1/-1}
.prof-lbl{font-size:10px;font-weight:600;color:var(--muted);letter-spacing:.3px}
.prof-inp{background:var(--surf2);border:1px solid var(--bdr2);color:var(--txt);font-family:var(--f);font-size:12px;padding:7px 10px;border-radius:7px;outline:none;width:100%;box-sizing:border-box;transition:border-color .15s}
.prof-inp:focus{border-color:var(--ora-g)}
.prof-inp:disabled{opacity:.5;cursor:default}
.prof-action-row{display:flex;justify-content:flex-end;margin-top:10px}
.prof-msg{font-size:10px;font-family:var(--m);padding:5px 10px;border-radius:6px;display:none}
.prof-msg.ok{background:rgba(34,214,160,.12);color:var(--grn);border:1px solid rgba(34,214,160,.2)}
.prof-msg.err{background:rgba(255,70,70,.1);color:var(--err);border:1px solid rgba(255,70,70,.2)}

/* ── PLANS & SUBSCRIPTION ── */
.plan-badge-pill{display:inline-flex;align-items:center;gap:3px;font-family:var(--m);font-size:8px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;padding:2px 7px;border-radius:10px}
.plan-badge-pill.free{background:var(--surf3);color:var(--muted);border:1px solid var(--bdr2)}
.plan-badge-pill.pro{background:var(--ora-d);color:var(--ora);border:1px solid var(--ora-g)}
.plan-badge-pill.studio{background:rgba(155,106,255,.12);color:#c084fc;border:1px solid rgba(155,106,255,.25)}
.user-dd-plan{display:flex;align-items:center;justify-content:space-between;padding:6px 9px 2px;font-size:10px;color:var(--muted);font-family:var(--m)}
/* gate modal */
.gate-modal-box{width:460px}
.gate-icon-wrap{width:56px;height:56px;border-radius:14px;display:flex;align-items:center;justify-content:center;font-size:22px;margin:0 auto 14px;background:rgba(255,107,26,.1)}
.gate-title{font-size:15px;font-weight:700;text-align:center;margin-bottom:8px}
.gate-desc{font-size:12px;color:var(--txt2);text-align:center;line-height:1.65;margin-bottom:16px;padding:0 8px}
.gate-plan-needed{display:flex;align-items:center;justify-content:center;gap:8px;padding:10px 14px;background:var(--surf2);border:1px solid var(--bdr2);border-radius:9px;margin-bottom:16px;font-size:11px;color:var(--muted)}
.gate-plan-pill{font-family:var(--m);font-size:10px;font-weight:700;padding:3px 10px;border-radius:20px}
.gate-feats{display:flex;flex-direction:column;gap:7px}
.gate-feat-row{display:flex;align-items:flex-start;gap:9px;font-size:11px;color:var(--txt2)}
.gate-feat-row i{color:var(--grn);font-size:12px;flex-shrink:0;margin-top:1px}
/* plan modal */
.plan-modal-box{width:720px;max-width:96vw}
.plan-current-bar{display:flex;align-items:center;gap:14px;background:var(--surf2);border:1px solid var(--bdr2);border-radius:10px;padding:14px 16px;margin-bottom:16px}
.plan-cur-icon{width:40px;height:40px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:20px;flex-shrink:0}
.plan-cur-meta{flex:1;min-width:0}
.plan-cur-name{font-size:14px;font-weight:700;margin-bottom:2px}
.plan-cur-desc{font-size:11px;color:var(--muted)}
.plan-billing-chip{font-family:var(--m);font-size:9px;padding:3px 9px;border-radius:8px;background:var(--surf3);border:1px solid var(--bdr2);color:var(--muted);white-space:nowrap}
.bp-toggle-btn.on{background:var(--ora);color:#000}
.plan-footer-links{display:flex;align-items:center;justify-content:center;gap:20px;margin-top:12px;font-size:10px;color:var(--muted);font-family:var(--m)}
.plan-footer-links a,.plan-footer-links button{color:var(--muted);background:none;border:none;cursor:pointer;font-family:var(--m);font-size:10px;text-decoration:underline;padding:0}
.plan-footer-links a:hover,.plan-footer-links button:hover{color:var(--txt)}
/* ── Portal (facturation) modal ── */
.portal-box{width:540px;max-width:97vw}
.portal-invoice-empty{text-align:center;padding:36px 20px;color:var(--muted)}
.portal-invoice-empty i{font-size:36px;display:block;margin-bottom:8px;color:var(--bdr3)}
.portal-invoice-empty p{font-size:12px;margin:0}
.portal-invoice-row{display:flex;align-items:center;gap:12px;padding:10px 14px;border:1px solid var(--bdr2);border-radius:9px;margin-bottom:8px;font-size:12px}
.portal-invoice-row .pi-date{flex:1;color:var(--muted);font-family:var(--m)}
.portal-invoice-row .pi-desc{flex:2;font-weight:600}
.portal-invoice-row .pi-amt{font-family:var(--m);color:var(--grn);font-weight:700}
.portal-invoice-row .pi-dl{color:var(--ora);cursor:pointer;font-family:var(--m);font-size:10px;text-decoration:underline;white-space:nowrap}
.portal-pay-btn{display:flex;align-items:center;gap:8px;padding:10px 16px;background:var(--surf2);border:1px solid var(--bdr2);border-radius:9px;cursor:pointer;font-size:12px;font-weight:600;color:var(--txt);width:100%;margin-top:12px;transition:all .15s}
.portal-pay-btn:hover{border-color:var(--bdr3);background:var(--surf3)}
/* ── Support modal ── */
.support-box{width:500px;max-width:97vw}
.support-field{margin-bottom:14px}
.support-field label{display:block;font-size:10px;font-family:var(--m);color:var(--muted);margin-bottom:5px;letter-spacing:.04em;text-transform:uppercase}
.support-sel,.support-txt{width:100%;background:var(--surf2);border:1px solid var(--bdr2);border-radius:8px;color:var(--txt);font-size:13px;font-family:inherit;padding:9px 12px;box-sizing:border-box;outline:none;transition:border .15s}
.support-sel:focus,.support-txt:focus{border-color:var(--ora)}
.support-txt{resize:vertical;min-height:120px}
.support-note{font-size:10px;font-family:var(--m);color:var(--muted);margin-top:8px;text-align:center}
.support-note a{color:var(--ora);text-decoration:none}
.sub-current-bar{display:flex;align-items:center;gap:11px;padding:11px 14px;background:var(--surf2);border:1px solid var(--bdr2);border-radius:9px;margin-bottom:16px}
.sub-plans-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.sub-plan-card{border:1px solid var(--bdr2);border-radius:12px;padding:18px 16px;position:relative;transition:all .15s}
.sub-plan-card:hover:not(.current){border-color:var(--bdr3);background:var(--surf2)}
.sub-plan-card.current{border-color:var(--ora-g);background:var(--ora-d)}
.sub-plan-card.popular:not(.current){border-color:var(--ora)}
.sub-storage-opt{border:1px solid var(--bdr2);border-radius:9px;padding:12px;cursor:pointer;transition:all .15s;text-align:center}
.sub-storage-opt:hover{border-color:#a78bfa;background:rgba(167,139,250,.07)}
.sub-storage-opt.popular{border-color:#a78bfa;background:rgba(167,139,250,.06)}
.sub-plan-name{font-family:var(--m);font-size:9px;text-transform:uppercase;letter-spacing:1.2px;color:var(--muted);margin-bottom:6px}
.sub-plan-price{font-size:22px;font-weight:800;letter-spacing:-1px;line-height:1;margin-bottom:2px}
.sub-plan-period{font-size:9px;color:var(--muted);font-family:var(--m);margin-bottom:12px}
.sub-plan-feats{list-style:none;display:flex;flex-direction:column;gap:5px;margin-bottom:14px}
.sub-plan-feats li{display:flex;align-items:flex-start;gap:7px;font-size:10px;color:var(--txt2);line-height:1.4}
.sub-plan-feats li i{font-size:11px;flex-shrink:0;margin-top:1px}
.sub-plan-feats li i.ok{color:var(--grn)}
.sub-plan-feats li i.off{color:var(--bdr3)}
.sub-plan-cta{width:100%;padding:8px;border-radius:7px;border:1px solid var(--bdr2);background:var(--surf2);color:var(--txt2);font-size:11px;font-weight:600;font-family:var(--f);cursor:pointer;transition:all .15s;display:flex;align-items:center;justify-content:center;gap:5px}
.sub-plan-cta:hover:not(:disabled){background:var(--surf3);border-color:var(--bdr3)}
.sub-plan-cta:disabled{opacity:.5;cursor:default}
.sub-plan-cta.upgrade-cta{background:var(--ora);border-color:var(--ora);color:#000}
.sub-plan-cta.upgrade-cta:hover{background:var(--ora2)}
.sub-current-badge{position:absolute;top:-10px;left:50%;transform:translateX(-50%);background:var(--ora);color:#000;font-size:8px;font-weight:800;font-family:var(--m);padding:2px 10px;border-radius:20px;letter-spacing:.8px;text-transform:uppercase;white-space:nowrap}

/* ── LOADING ── */
.loading{display:flex;align-items:center;justify-content:center;gap:9px;padding:32px;color:var(--muted);font-size:12px;font-family:var(--f)}
.spinner{width:15px;height:15px;border:2px solid rgba(255,107,26,.3);border-top-color:var(--ora);border-radius:50%;animation:spin .7s linear infinite;flex-shrink:0}
.error-row{display:flex;align-items:center;justify-content:center;gap:8px;padding:24px;color:var(--err);font-size:12px}

/* ── TOAST ── */
#toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%) translateY(80px);background:var(--ora);color:#000;font-family:var(--f);font-size:12px;font-weight:600;padding:9px 18px;border-radius:8px;z-index:500;transition:transform .3s cubic-bezier(.34,1.56,.64,1),opacity .3s;opacity:0;box-shadow:0 4px 18px var(--ora-g);pointer-events:none;white-space:nowrap}