:root{
  --bg:#f4f4f2; --panel:#ffffff; --panel-2:#fafafa; --panel-3:#f0f0ee;
  --line:#ececea; --line-2:#dcdcd6;
  --ink:#1d1d1b; --muted:#6f6f68; --muted-2:#9c9c94;
  --gold:#b06a00; --acc:#1d1d1b; --red:#ef2b1f; --green:#1a7f4b;
  --shadow-sm:0 1px 2px rgba(20,20,18,.05);
  --shadow:0 1px 3px rgba(20,20,18,.06),0 12px 30px -16px rgba(20,20,18,.22);
  --ui:"Hanken Grotesk","Inter","Helvetica Neue",Helvetica,Arial,"Segoe UI",sans-serif;
}
*{box-sizing:border-box}
[hidden]{display:none!important}   /* garde le <video> masqué caché (sinon bloc noir sur le cadre vide) */
.warnflag{display:inline-block;background:rgba(176,106,0,.1);color:var(--gold);border:1px solid rgba(176,106,0,.28);border-radius:6px;padding:3px 9px;font-size:11.5px;font-weight:600;line-height:1.4;margin-left:4px}
html,body{height:100%;margin:0}
body{background:var(--bg);color:var(--ink);font-family:var(--ui);font-size:14px;font-weight:400;-webkit-font-smoothing:antialiased;overflow:hidden}
.app{display:flex;flex-direction:column;height:100vh;height:100dvh}
button{font-family:inherit}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.btn{background:var(--panel);color:var(--ink);border:1px solid var(--line-2);border-radius:8px;padding:8px 14px;font-weight:700;cursor:pointer;font-size:13px;display:inline-flex;align-items:center;gap:7px;transition:border-color .12s,background .12s,box-shadow .12s,transform .12s;line-height:1.15}
.btn:hover{border-color:var(--ink);box-shadow:var(--shadow-sm)}
.btn.primary{background:var(--ink);border-color:var(--ink);color:var(--panel)}
.btn.primary:hover{opacity:.9;box-shadow:var(--shadow)}
.btn.ghost{background:transparent;border-color:var(--line-2)}
.btn:disabled{opacity:.4;cursor:not-allowed;box-shadow:none}
.btn:disabled:hover{border-color:var(--line-2)}
/* top bar */
.top{display:flex;align-items:center;gap:10px;padding:12px 20px;border-bottom:1px solid var(--line);background:var(--panel);flex:0 0 auto}
.logo{height:30px;width:auto;display:block;flex:0 0 auto}
/* logo adaptatif au thème : noir (éclair) en clair, blanc en sombre — piloté par data-theme (sans flash) */
.logo-dark{display:none}
:root[data-theme="dark"] .logo-light{display:none}
:root[data-theme="dark"] .logo-dark{display:block}
.brand{font-weight:800;letter-spacing:0;font-size:16px}.brand small{color:var(--muted);font-weight:400;margin-left:8px;letter-spacing:0}
.grow{flex:1}
.hint{font-size:11px;color:var(--muted-2)}
.creditwrap{position:relative}
.top-credit{height:38px;min-width:104px;border:1px solid var(--line-2);border-radius:8px;background:var(--panel-2);display:flex;align-items:center;justify-content:center;gap:8px;padding:0 12px;color:var(--ink);font-weight:800;font-size:13px;cursor:pointer}
.top-credit span{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted-2);font-weight:800}
.top-credit b{font-size:16px;font-variant-numeric:tabular-nums}
.top-credit i{display:block;width:7px;height:7px;border-right:1.5px solid var(--muted-2);border-bottom:1.5px solid var(--muted-2);transform:rotate(45deg);margin-top:-3px}
.creditmenu{position:absolute;right:0;top:calc(100% + 6px);z-index:35;width:240px;background:var(--panel);border:1px solid var(--line-2);border-radius:8px;padding:10px;box-shadow:var(--shadow)}
.creditmenu-row{display:flex;justify-content:space-between;gap:12px;font-size:12.5px;color:var(--muted);padding:7px 4px}
.creditmenu-row b{color:var(--ink);font-variant-numeric:tabular-nums}
.creditmenu .btn{width:100%;justify-content:center;margin-top:8px}
/* main split */
.main{display:grid;grid-template-columns:minmax(0,1fr) 420px;min-height:0;flex:1}
/* ── TABLETTE / TÉLÉPHONE : on empile (lecteur en haut, panneau dessous) et on défile ── */
@media (max-width:900px){
  .main{display:block;overflow-y:auto;-webkit-overflow-scrolling:touch}
  .stageWrap{padding:16px}
  .stageArea{height:min(48vh,520px);min-height:320px}                 /* le lecteur garde une taille confortable */
  .side{border-left:none;border-top:1px solid var(--line)}
  .tabs{overflow-x:auto;flex-wrap:nowrap;-webkit-overflow-scrolling:touch;scrollbar-width:none}
  .tabs::-webkit-scrollbar{display:none}
  .tab{white-space:nowrap;flex:0 0 auto}
  #panel-style,#panel-set{overflow:visible}   /* le défilement est porté par .main sur mobile */
}
@media (max-width:560px){
  .top{flex-wrap:wrap;gap:8px;padding:10px 12px}
  .brand{font-size:15px}.brand small{display:none}
  .top .btn{padding:7px 11px;font-size:12.5px}
  .stageArea{height:min(44vh,460px);min-height:280px}
  .styles{grid-template-columns:1fr 1fr}
  .expmenu{position:fixed;left:12px;right:12px;top:auto;min-width:0}
}
.stageWrap{min-width:0;display:flex;flex-direction:column;align-items:center;padding:24px;gap:14px;background:var(--stage,radial-gradient(130% 100% at 50% 0%,#fbfbfa,#efefec))}
/* zone qui contient UNIQUEMENT le lecteur : c'est SA taille réelle qu'on mesure (plus de nombres magiques) */
.stageArea{flex:1;min-height:0;width:100%;display:flex;align-items:center;justify-content:center}
@media (max-width:900px){
  .stageArea{height:48vh;max-height:520px;min-height:320px;flex:none}
}
@media (max-width:560px){
  .stageArea{height:44vh;max-height:460px;min-height:280px}
}
.player{position:relative;background:#111;border-radius:12px;overflow:hidden;box-shadow:var(--shadow);max-height:100%;max-width:100%}
/* vide : dimensionné par CSS (hauteur dispo, largeur déduite du ratio, jamais plus large que la zone) */
.player.empty{height:100%;aspect-ratio:9/16;width:auto;max-width:100%;background:var(--panel);border:1.5px dashed var(--line-2);box-shadow:var(--shadow-sm)}
.player.empty .drop{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:88%}
/* la vidéo REMPLIT le lecteur en absolu : avec overflow:hidden, elle ne peut PHYSIQUEMENT pas déborder */
.player video{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:#111;transform-origin:center center;will-change:transform,filter}
.overlay{position:absolute;inset:0;pointer-events:none}
.drop{color:var(--muted);text-align:center;padding:26px;font-size:13px;line-height:1.6}
.drop b{color:var(--ink)}
.transport{display:flex;align-items:center;gap:12px;width:100%;max-width:min(520px,92vw)}
.pp{width:42px;height:42px;border-radius:50%;border:none;background:var(--ink);color:var(--panel);display:grid;place-items:center;cursor:pointer;flex:0 0 auto;box-shadow:var(--shadow-sm)}
.pp:hover{opacity:.9}
.pp svg{width:20px;height:20px}
.seekbox{min-width:0;flex:1;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px}
.seek{width:100%;height:28px;margin:0;appearance:none;-webkit-appearance:none;background:transparent;cursor:pointer;accent-color:var(--ink)}
.seek:disabled{opacity:.45;cursor:not-allowed}
.seek::-webkit-slider-runnable-track{height:6px;border-radius:99px;background:linear-gradient(90deg,var(--ink) 0 var(--seek-pct,0%),var(--panel-3) var(--seek-pct,0%) 100%)}
.seek::-webkit-slider-thumb{-webkit-appearance:none;width:17px;height:17px;border-radius:50%;background:var(--panel);border:2px solid var(--ink);box-shadow:var(--shadow-sm);margin-top:-5.5px}
.seek:focus-visible{outline:none}
.seek:focus-visible::-webkit-slider-thumb{box-shadow:0 0 0 4px rgba(29,29,27,.14),var(--shadow-sm)}
.seek::-moz-range-track{height:6px;border-radius:99px;background:var(--panel-3)}
.seek::-moz-range-progress{height:6px;border-radius:99px;background:var(--ink)}
.seek::-moz-range-thumb{width:15px;height:15px;border-radius:50%;background:var(--panel);border:2px solid var(--ink);box-shadow:var(--shadow-sm)}
.time{font-variant-numeric:tabular-nums;color:var(--muted);font-size:12px;white-space:nowrap}
@media (max-width:560px){
  .transport{max-width:100%;display:grid;grid-template-columns:42px minmax(0,1fr) auto;gap:10px}
  .seekbox{display:contents}
  .seek{min-width:0}
  .time{justify-self:end;font-size:11.5px}
}
/* sidebar */
.side{border-left:1px solid var(--line);background:var(--panel);display:flex;flex-direction:column;min-height:0}
.tabs{display:flex;gap:4px;padding:10px 10px 0;border-bottom:1px solid var(--line);background:var(--panel);flex:0 0 auto}
.tab{background:transparent;border:none;color:var(--muted);font-weight:700;font-size:12.5px;padding:9px 10px;cursor:pointer;border-radius:8px 8px 0 0;border-bottom:2px solid transparent;margin-bottom:-1px;min-width:0}
.tab:hover{color:var(--ink)}
.tab.on{color:var(--ink);border-bottom-color:var(--ink)}
.panel{flex:1;min-height:0;display:flex;flex-direction:column}
.panel[hidden]{display:none}
/* Style & Réglages : contenu défilable (la Transcription garde son scroll interne via .tx) */
#panel-style,#panel-set{overflow-y:auto;overscroll-behavior:contain}
#panel-set{padding-bottom:22px}
/* barre de défilement discrète (thème clair) */
#panel-style::-webkit-scrollbar,#panel-set::-webkit-scrollbar,.tx::-webkit-scrollbar{width:10px}
#panel-style::-webkit-scrollbar-thumb,#panel-set::-webkit-scrollbar-thumb,.tx::-webkit-scrollbar-thumb{background:var(--line-2);border-radius:99px;border:2px solid var(--panel)}
#panel-style::-webkit-scrollbar-thumb:hover,#panel-set::-webkit-scrollbar-thumb:hover,.tx::-webkit-scrollbar-thumb:hover{background:var(--muted-2)}
#panel-style,#panel-set{scrollbar-width:thin;scrollbar-color:var(--line-2) transparent}
.side .sec{padding:16px 18px;border-bottom:1px solid var(--line)}
.lab{font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted-2);margin-bottom:11px;font-weight:800}
.styles{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.sty{border:1px solid var(--line);background:var(--panel);border-radius:8px;padding:6px;cursor:pointer;transition:border-color .12s,box-shadow .12s}
.sty:hover{border-color:var(--line-2);box-shadow:var(--shadow-sm)}
.sty.on{border-color:var(--ink);box-shadow:0 0 0 1px var(--ink)}
.pv{position:relative;width:100%;aspect-ratio:16/10;border-radius:6px;overflow:hidden;background:radial-gradient(120% 95% at 50% 15%,#39393a,#1d1d1b)}
.pvcap{position:absolute;inset:0}
.nm{text-align:center;font-size:11px;color:var(--muted);padding:6px 0 2px;font-weight:700}
.sty.on .nm{color:var(--ink)}
.mystyle-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:2px 0 10px}
.mystyle-t{font-size:12px;font-weight:700;color:var(--ink)}
.btn.sm{font-size:12px;padding:6px 10px}
.sty{position:relative}
.sty .del{position:absolute;top:4px;right:4px;z-index:2;width:20px;height:20px;line-height:18px;text-align:center;border-radius:6px;border:1px solid var(--line);background:var(--panel);color:var(--muted);font-size:13px;cursor:pointer;opacity:0;transition:opacity .12s,color .12s,border-color .12s}
.sty:hover .del{opacity:1}
.sty .del:hover{color:#f5301c;border-color:#f5301c}
#customStyles:empty{display:none}
#customStyles:not(:empty)+#customStylesHint{display:none}
/* transcript editor */
.tx{flex:1;overflow-y:auto;padding:16px 18px}
.txhelp{font-size:12px;color:var(--muted);line-height:1.5;margin-bottom:12px}
.txhelp b{color:var(--ink)}
.seg{margin-bottom:9px;padding:10px 11px;border:1px solid var(--line);border-radius:8px;background:var(--panel);line-height:2.1;box-shadow:var(--shadow-sm)}
.tok{display:inline;border-radius:6px;padding:2px 5px;cursor:text;white-space:nowrap}
.tok:hover{background:var(--panel-3)}
.tok.det{color:var(--gold)}                     /* déterminant/article collé */
.tok.hero{color:var(--red);font-weight:700}
.tok.sel{outline:2px solid var(--ink);outline-offset:1px}
.tokw{position:relative;display:inline-block}
.tacts{position:absolute;left:50%;bottom:100%;margin-bottom:7px;transform:translateX(-50%);display:none;flex-wrap:nowrap;width:max-content;max-width:min(330px,88vw);gap:3px;background:var(--panel);border:1px solid var(--line-2);border-radius:8px;padding:4px;z-index:8;box-shadow:var(--shadow)}
.tokw:hover .tacts,.tokw:focus-within .tacts{display:flex}  /* survol OU focus (clic/tactile/clavier) */
.tact{width:25px;height:25px;border:0;background:transparent;cursor:pointer;line-height:1;padding:0;border-radius:6px;color:var(--muted);display:grid;place-items:center;flex:0 0 auto}
.tact svg,.sact svg,.addbtn svg{width:15px;height:15px;display:block;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.tact:hover{background:var(--panel-3);color:var(--ink)}
.tact.del:hover{color:var(--red)} .tact.lnk:hover{color:var(--ink)}
.tact.add:hover{color:var(--ink)} .tact.nl:hover{color:var(--gold)}
.tact.on{color:var(--gold)}
/* cartes-séquences (éditeur type Submagic) */
.scard{border:1px solid var(--line);background:var(--panel);border-radius:8px;padding:12px 13px;margin-bottom:6px;box-shadow:var(--shadow-sm)}
.scard.hidden{opacity:.5}
.scard-h{display:flex;align-items:flex-start;gap:12px}
.swords{flex:1;min-width:0;line-height:2.2}
.sacts{display:flex;gap:5px;align-items:center;justify-content:flex-end;flex:0 0 auto;padding-top:1px;flex-wrap:wrap;max-width:70px}
.sact{width:30px;height:30px;cursor:pointer;color:var(--muted);background:var(--panel-2);border:1px solid var(--line);border-radius:7px;padding:0;line-height:1;user-select:none;display:grid;place-items:center}
.sact:hover{color:var(--ink);border-color:var(--line-2);background:var(--panel)}
.sact.on{color:var(--ink);border-color:var(--ink);background:var(--panel)}
.sact.danger:hover{color:var(--red);border-color:rgba(239,43,31,.5)}
.stime{display:flex;gap:18px;margin-top:9px;padding-top:8px;border-top:1px solid var(--line)}
.tcell{display:flex;align-items:center;gap:6px;font-size:12px}
.tlab{color:var(--muted-2);text-transform:uppercase;letter-spacing:.08em;font-size:10px;font-weight:700}
.tval{font-variant-numeric:tabular-nums;color:var(--ink);cursor:text;border-radius:6px;padding:1px 7px;background:var(--panel-3)}
.tval:focus{outline:1px solid var(--ink)}
.blockpos2{border-top:1px solid var(--line);padding:8px 10px 10px}
.blockpos2 summary{cursor:pointer;color:var(--muted);font-size:11.5px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;list-style:none}
.blockpos2 summary::-webkit-details-marker{display:none}
.blockpos2 summary::after{content:"";float:right;width:7px;height:7px;border-right:1.5px solid var(--muted-2);border-bottom:1.5px solid var(--muted-2);transform:rotate(45deg);margin-top:2px}
.posrow{display:grid;grid-template-columns:72px 1fr 32px;gap:8px;align-items:center;margin-top:9px;font-size:12px;color:var(--muted)}
.posrow input{width:100%;accent-color:var(--ink)}
.posrow b{text-align:right;color:var(--ink);font-variant-numeric:tabular-nums}
.posreset{margin-top:8px;width:100%;justify-content:center}
.addseq{display:flex;justify-content:center;align-items:center;margin:8px 0;position:relative}
.addseq::before{content:"";position:absolute;left:0;right:0;top:50%;height:1px;background:var(--line);z-index:0}
.addbtn{width:30px;height:30px;border-radius:8px;background:var(--panel);border:1px solid var(--line-2);color:var(--muted);display:grid;place-items:center;cursor:pointer;font-weight:800;line-height:1;padding:0;position:relative;z-index:1;box-shadow:0 0 0 6px var(--panel)}
.addbtn:hover{border-color:var(--ink);color:var(--ink);background:var(--panel)}
.tact.locked{opacity:.3;cursor:not-allowed} .tact.locked:hover{background:none;color:var(--muted)}
.nlmark{display:inline-block;color:var(--gold);font-weight:700;cursor:pointer;padding:0 3px;user-select:none;border-radius:5px}
.nlmark:hover{background:var(--panel-3)}
/* onglet réglages */
.rng{width:100%;accent-color:var(--ink);cursor:pointer}
.rowlab{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:8px}
.rowlab b{font-variant-numeric:tabular-nums;color:var(--ink);font-size:13px}
.seg2{display:flex;gap:6px}
.seg2 .opt{flex:1;background:var(--panel);border:1px solid var(--line);border-radius:9px;padding:8px;color:var(--muted);cursor:pointer;font-weight:600;font-size:12px}
.seg2 .opt.on{border-color:var(--ink);color:var(--ink)}
.colrow{display:flex;align-items:center;gap:9px;margin-bottom:8px}
.colrow .cnm{flex:1;font-size:12px;color:var(--muted)}
.autobtn{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:4px 10px;color:var(--muted);cursor:pointer;font-weight:600;font-size:11px}
.autobtn.on{border-color:var(--ink);color:var(--ink)}
input[type=color]{width:34px;height:26px;padding:0;border:1px solid var(--line-2);border-radius:6px;background:var(--panel);cursor:pointer}
input[type=color]::-webkit-color-swatch-wrapper{padding:2px}
input[type=color]::-webkit-color-swatch{border:none;border-radius:4px}
.sel{background:var(--panel);color:var(--ink);border:1px solid var(--line-2);border-radius:8px;padding:5px 9px;font-size:12px;font-weight:600;cursor:pointer;font-family:inherit}
.sel:hover{border-color:var(--ink)}
.seg3{display:flex;gap:5px}
.seg3 .opt{width:34px;background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:5px 0;color:var(--muted);cursor:pointer;font-weight:700;font-size:12px}
.seg3 .opt.on{border-color:var(--ink);color:var(--ink)}
.dgoff{opacity:.4;pointer-events:none}
.sfxoff{opacity:.4;pointer-events:none}
.sfxrow{display:flex;align-items:center;gap:9px;padding:7px 0;cursor:pointer;font-size:12.5px;color:var(--ink)}
.sfxrow input{width:15px;height:15px;accent-color:var(--red);flex:0 0 auto;cursor:pointer}
.sfxrow span{line-height:1.35}
.sfxrow b{font-weight:700}
/* bibliothèque musique : liste visible (pas de menu déroulant) */
.mus-list{max-height:230px;overflow-y:auto;border:1px solid var(--line);border-radius:10px;background:var(--panel-2);margin-top:6px}
.mus-row{display:flex;align-items:center;gap:10px;padding:7px 9px;border-bottom:1px solid var(--line);cursor:pointer;transition:background .12s}
.mus-row:last-child{border-bottom:none}
.mus-row:hover{background:var(--panel-3)}
.mus-row.sel{background:rgba(239,43,31,.07)}
.mus-play{width:28px;height:28px;flex:0 0 auto;border:1px solid var(--line-2);border-radius:50%;background:var(--panel);color:var(--ink);display:grid;place-items:center;cursor:pointer}
.mus-play:hover{border-color:var(--red);color:var(--red)}
.mus-play svg{width:12px;height:12px}
.mus-nm{flex:1;min-width:0;font-size:12.5px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mus-check{width:18px;flex:0 0 auto;color:var(--red);opacity:0}
.mus-check svg{width:16px;height:16px}
.mus-row.sel .mus-check{opacity:1}
.mus-row.sel .mus-nm{font-weight:700}
/* light sweep : segment 3 choix */
.seg3w{display:flex;gap:6px}
.seg3w .opt{flex:1;background:var(--panel);border:1px solid var(--line);border-radius:9px;padding:8px;color:var(--muted);cursor:pointer;font-weight:600;font-size:12px}
.seg3w .opt.on{border-color:var(--ink);color:var(--ink)}
/* éditeur de dégradé */
.grad-block{margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}
.grow{display:flex;align-items:center;gap:8px;margin-bottom:7px}
.grow .gc{width:40px;height:30px;padding:0;border:1px solid var(--line-2);border-radius:8px;background:none;cursor:pointer}
.grow .gp{width:74px;background:var(--panel);border:1px solid var(--line-2);border-radius:8px;padding:6px 8px;color:var(--ink);font-family:inherit;font-size:12px}
.grow .gu{font-size:12px;color:var(--muted)}
.grad-prev{height:20px;border-radius:8px;margin-top:10px;border:1px solid var(--line-2)}
.grad-save-row{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:14px}
.grad-presets{display:grid;grid-template-columns:1fr;gap:7px;margin-top:9px}
.grad-preset{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center;border:1px solid var(--line);background:var(--panel);border-radius:8px;padding:7px;cursor:pointer}
.grad-preset:hover{border-color:var(--line-2);box-shadow:var(--shadow-sm)}
.grad-preset.on{border-color:var(--ink);box-shadow:0 0 0 1px var(--ink)}
.grad-chip{height:28px;border-radius:7px;border:1px solid var(--line-2);min-width:0}
.grad-del{width:28px;height:28px;border:1px solid var(--line);border-radius:7px;background:var(--panel-2);color:var(--muted);cursor:pointer;display:grid;place-items:center;font-weight:800;line-height:1}
.grad-del:hover{color:var(--red);border-color:rgba(239,43,31,.45)}
.autobtn.on{border-color:var(--ink);color:var(--ink)}
/* accordéon (sections repliables des Réglages) */
.acc{border-bottom:1px solid var(--line)}
.acch{width:100%;display:flex;justify-content:space-between;align-items:center;background:transparent;border:none;color:var(--ink);font-weight:700;font-size:12px;text-transform:uppercase;letter-spacing:.08em;padding:13px 18px;cursor:pointer;font-family:inherit}
.acch:hover{color:var(--red)}
.acch .caret{color:var(--muted-2);font-size:11px;transition:transform .15s}
.acc.open .acch{color:var(--ink)}
.acc.open .acch .caret{transform:rotate(90deg);color:var(--ink)}
.accb{padding:0 18px 16px;display:none}
.acc.open .accb{display:block}
.brk{display:inline-block;width:16px;text-align:center;color:var(--muted-2);cursor:pointer;user-select:none;border-radius:5px}
.brk:hover{background:var(--panel-3);color:var(--ink)}
.brk.locked{opacity:.35;cursor:not-allowed}
.brk.locked:hover{background:none;color:var(--muted-2)}
.brk.softlock{color:var(--gold);opacity:.6}          /* déterminant collé mais coupure forçable */
.brk.softlock:hover{background:var(--panel-3);color:var(--red);opacity:1}
.tok.hidden-word{opacity:.35;text-decoration:line-through}
.tok.svj-word{box-shadow:inset 0 -2px 0 rgba(255,149,0,.7)}
.tok.no-keyword{box-shadow:inset 0 -2px 0 rgba(111,111,104,.35)}
.txbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;padding:12px 18px 8px;border-bottom:1px solid var(--line);flex:0 0 auto}
.txbar .btn{min-height:34px;padding:7px 12px;font-size:12.5px;font-weight:600;line-height:1;white-space:nowrap}
.toolgroup{display:flex;gap:6px;align-items:center;padding-right:8px;border-right:1px solid var(--line);flex-wrap:nowrap}
.toolgroup:last-of-type{border-right:none}
.replacebar{display:grid;grid-template-columns:minmax(92px,1fr) minmax(92px,1fr) auto auto;gap:6px;align-items:center;min-width:min(100%,390px);flex:1 1 390px}
.txtin.mini{font-size:12.5px;padding:7px 9px;min-height:34px}
.replacebar .btn{justify-content:center;padding-left:10px;padding-right:10px}
@media (max-width:560px){
  .txbar{padding:10px 12px;gap:8px}
  .toolgroup{width:100%;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;padding-right:0;border-right:none}
  .txbar .btn{width:100%;justify-content:center;min-width:0;padding:8px 8px;font-size:12px}
  .replacebar{width:100%;flex-basis:100%;grid-template-columns:1fr 1fr}
  .replacebar .btn{width:100%}
  .txbar .hint{width:100%;font-size:11px;line-height:1.35}
}
.empty-tx{color:var(--muted-2);font-size:13px;text-align:center;padding:30px 10px;line-height:1.6}
/* caption render (réutilise le moteur) */
.cap.ts{position:absolute;inset:0}
.cap.ts .capblk{position:absolute;left:0;right:0;display:flex;flex-direction:column;align-items:center}
.cap.ts .capline{display:block;text-align:center;white-space:nowrap;letter-spacing:-.01em}
.cap.ts .w{display:inline-block;will-change:transform,opacity}
.cap.ts .rw{position:relative;display:inline-block}
.cap.ts .rw .lay{display:block;white-space:nowrap}
.cap.ts .rw .face,.cap.ts .rw .swp{position:absolute;left:0;top:0;-webkit-background-clip:text;background-clip:text;color:transparent}
.cap.ts .rw .facef{position:absolute;left:0;top:0}   /* couche aplat (couleur pleine) posée sur la porteuse d'ombre */
.cap.ts .rw .swp{background-size:300% 100%;background-repeat:no-repeat;animation:tswp var(--tsswdur,2.8s) linear infinite}
.cap.ts.sw-static .rw .swp{animation:none}   /* sweep STATIQUE : reflet figé (position posée en inline) */
.cap.ts.sw-off .rw .swp{display:none}                                 /* sweep DÉSACTIVÉ */
@keyframes tswp{0%{background-position-x:125%}100%{background-position-x:-25%}}
@media (prefers-reduced-motion:reduce){.cap.ts .rw .swp{animation:none}}
.spin{width:15px;height:15px;border:2px solid rgba(127,127,127,.35);border-top-color:currentColor;border-radius:50%;animation:sp .7s linear infinite;display:inline-block}
@keyframes sp{to{transform:rotate(360deg)}}
/* onglet Shorts */
.txtin{flex:1;background:var(--panel);border:1px solid var(--line-2);border-radius:9px;padding:8px 11px;color:var(--ink);font-family:inherit;font-size:13px;min-width:0}
.txtin:focus{outline:none;border-color:var(--ink)}
.txtin::placeholder{color:var(--muted-2)}
.sgcard{border:1px solid var(--line);background:var(--panel);border-radius:12px;padding:11px 12px;margin-bottom:10px;box-shadow:var(--shadow-sm)}
.sgh{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted);flex-wrap:wrap}
.sgh b{color:var(--ink)}
.sgtime{font-variant-numeric:tabular-nums}
.sgdur{color:var(--muted-2)}
.sgbadge{background:rgba(29,29,27,.07);color:var(--ink);border-radius:6px;padding:1px 7px;font-size:10px;font-weight:700;text-transform:uppercase}
.sgbar{height:6px;border-radius:99px;background:var(--panel-3);margin:9px 0;overflow:hidden}
.sgbar i{display:block;height:100%;background:linear-gradient(90deg,var(--ink),var(--red));border-radius:99px}
.sgtext{font-size:12px;color:var(--muted);line-height:1.5;margin-bottom:9px}
.sgacts{display:flex;gap:8px}
.sgacts .btn{flex:1;justify-content:center;padding:8px}
.dl{color:var(--ink);font-weight:700;text-decoration:underline;margin-left:4px}
/* bannière backend */
.be-banner{background:#fff5f4;color:#8a1a10;font-size:12.5px;padding:10px 16px;border-bottom:1px solid rgba(239,43,31,.28);flex:0 0 auto}
.be-banner code{background:rgba(29,29,27,.07);padding:1px 5px;border-radius:4px;font-size:12px}
/* panneau Historique */
#panel-hist{overflow-y:auto}
.labrow{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.histcard{display:flex;gap:11px;align-items:center;padding:9px;border:1px solid var(--line);border-radius:12px;margin-bottom:9px;background:var(--panel)}
.histthumb{width:52px;height:70px;border-radius:8px;overflow:hidden;flex:0 0 auto;background:var(--panel-3);display:grid;place-items:center}
.histthumb img{width:100%;height:100%;object-fit:cover;display:block}
.histph{color:var(--muted-2);font-size:18px}
.histmain{flex:1;min-width:0}
.histname{font-size:13px;color:var(--ink);font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.histmeta{font-size:11px;color:var(--muted);margin-top:2px}
.histact{display:flex;flex-direction:column;gap:6px;flex:0 0 auto}
.histact .btn{padding:6px 10px;justify-content:center;font-size:13px;text-decoration:none}
.hist-del:hover{border-color:var(--red);color:var(--red)}
.sgbadge.cat{background:rgba(176,106,0,.12);color:var(--gold)}
.sgbadge.th{background:rgba(239,43,31,.1);color:var(--red)}
.sgtitle{font-size:14px;font-weight:800;color:var(--ink);margin:6px 0 2px;line-height:1.3}
.sgreason{font-size:11px;color:var(--muted);font-style:italic;margin-top:-3px;margin-bottom:2px}
.sghook{font-size:11.5px;color:var(--red);font-weight:600;margin-top:6px;padding-top:6px;border-top:1px dashed var(--line)}
/* menu export */
.expwrap{position:relative}
.expmenu{position:absolute;right:0;top:calc(100% + 6px);background:var(--panel);border:1px solid var(--line-2);border-radius:12px;padding:6px;z-index:30;min-width:260px;box-shadow:var(--shadow)}
.expmenu-lab{font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted-2);font-weight:700;padding:5px 9px}
.expmenu button{display:block;width:100%;text-align:left;background:transparent;border:none;color:var(--ink);padding:9px 10px;border-radius:8px;cursor:pointer;font-size:12.5px;font-family:inherit}
.expmenu button small{color:var(--muted-2)}
.expmenu button:hover{background:var(--panel-3)}
.expmenu.exporting button[data-mode]{opacity:.45;pointer-events:none}
.export-progress{border-top:1px solid var(--line);margin:6px 4px 2px;padding:10px 5px 5px}
.export-progress-top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:7px;font-size:11.5px;color:var(--muted)}
.export-progress-top b{color:var(--ink);font-variant-numeric:tabular-nums;font-size:12px}
.export-progress-track{height:6px;background:var(--panel-3);border-radius:99px;overflow:hidden}
.export-progress-track i{display:block;width:0;height:100%;background:var(--ink);border-radius:inherit;transition:width .25s ease}
.expwm{display:flex;align-items:center;gap:8px;padding:8px 9px;font-size:12.5px;color:var(--ink);cursor:pointer;border-bottom:1px solid var(--line);margin-bottom:4px}
.expwm input{accent-color:var(--ink);width:15px;height:15px;cursor:pointer}
.expwm small{color:var(--muted-2)}
/* barre de format de présentation */
.fmtbar{display:flex;align-items:center;gap:6px;flex:0 0 auto}
.fmtlab{font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted-2);font-weight:700;margin-right:4px}
.fmt{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:5px 12px;color:var(--muted);cursor:pointer;font-weight:600;font-size:12px}
.fmt:hover{border-color:var(--line-2);color:var(--ink)}
.fmt.on{border-color:var(--ink);color:var(--ink)}

/* ══ MODE SOMBRE (bascule via data-theme sur <html>) ══
   On ne redéfinit que les tokens : tout le reste suit automatiquement. */
:root[data-theme="dark"]{
  --bg:#0c0e14; --panel:#12141c; --panel-2:#191c26; --panel-3:#242838;
  --line:rgba(255,255,255,.09); --line-2:rgba(255,255,255,.17);
  --ink:#e9ebf2; --muted:#9aa0b2; --muted-2:#6a7080;
  --gold:#e8a84c; --acc:#e9ebf2; --red:#ff6a4d; --green:#3fd07f;
  --shadow-sm:0 1px 2px rgba(0,0,0,.4);
  --shadow:0 1px 3px rgba(0,0,0,.5),0 16px 40px -18px rgba(0,0,0,.72);
  --stage:radial-gradient(130% 100% at 50% 0%,#161a26,#0c0e14);
}
:root[data-theme="dark"] .be-banner{background:linear-gradient(180deg,#3a1414,#2e1010);color:#ffd9d3;border-bottom-color:rgba(255,106,77,.35)}
:root[data-theme="dark"] .be-banner code{background:rgba(0,0,0,.35)}
:root[data-theme="dark"] .be-link{border-color:rgba(255,217,211,.4);color:#ffd9d3}
:root[data-theme="dark"] .be-link:hover{background:rgba(255,255,255,.1)}
/* bouton bascule thème */
.themebtn{width:38px;height:38px;padding:0;justify-content:center;border-radius:10px}
.themebtn svg{width:18px;height:18px}
