/**
 * LOOKITSGRAPHIC — PDF Reader & Studio
 * styles/studio.css — complément de main.css (à charger après lui)
 * Docbar enrichie, dialogues, menus, éditeur, règles, gestionnaire de
 * pages, assistant de fusion, thème sombre complet, responsive.
 */

:root{--mint:#6fe3b4;--sand:#e9d8b4;--rule:22px;--focus:0 0 0 3px #7457ff66}

/* ------------------------------------------------------------ Boutons */
.btn{min-height:38px;padding:0 14px;border:2px solid var(--ink);background:var(--white);color:var(--ink);display:inline-flex;align-items:center;justify-content:center;gap:7px;font:700 10px/1.2 SpaceMono,monospace;letter-spacing:.03em;cursor:pointer;text-transform:uppercase}
.btn:hover:not(:disabled){transform:translate(-1px,-1px);box-shadow:3px 3px 0 var(--ink)}
.btn:disabled{opacity:.4;cursor:not-allowed}
.btn.primary{background:var(--acid)}
.btn.danger{background:var(--red);color:#fff}
.btn.ghost{background:transparent}
.btn.small{min-height:30px;padding:0 9px;font-size:9px;border-width:1.5px}
.btn.on{background:var(--ink);color:#fff}
.muted{opacity:.62;font-size:12px;line-height:1.5}
button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:none;box-shadow:var(--focus)}
code{font:400 11px/1.4 SpaceMono,monospace;background:#1111;padding:1px 4px}
select,textarea{font:inherit;color:inherit}

/* ------------------------------------------------------------ Rail : nouvelles couleurs */
.tool-card.mint>span{background:var(--mint)}
.tool-card.sand>span{background:var(--sand)}
.action-panel-head.mint{background:#d3f7e8}
.action-panel-head.sand{background:#f4ead6}
.tools-footer{gap:6px}
.tools-footer button{padding:6px 4px}

/* ------------------------------------------------------------ Docbar */
.docbar{gap:10px}
.docbar-file{flex:1;min-width:110px;overflow:hidden}
.docbar-file>span{min-width:0;overflow:hidden}
.docbar-file small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.reader{container-type:inline-size;container-name:reader}
.docbar-file strong{cursor:text;border-bottom:1px dashed transparent}
.docbar-file strong:hover{border-bottom-color:currentColor}
.docbar-file small{display:flex;align-items:center;gap:6px}
.docbar-file em{font-style:normal}
.dirty-dot{width:8px;height:8px;border-radius:50%;border:1.5px solid currentColor;display:inline-block;flex:none;opacity:.45}
.dirty-dot.on{background:var(--orange);border-color:var(--orange);opacity:1;box-shadow:0 0 0 3px #ff5c3533}
.pending-badge{background:var(--purple);color:#fff;font:700 9px/1 SpaceMono,monospace;padding:3px 6px;border-radius:9px}
.pending-badge:before{content:"✎ "}
.docbar-nav{display:flex;align-items:center;gap:6px;flex:none}
.docbar-nav .dgroup{display:flex;align-items:center;padding-left:6px;border-left:1.5px solid #1112}
.docbar-nav .dgroup:first-child{border-left:0}
.docbar nav button{position:relative}
.docbar nav button:disabled{opacity:.28;cursor:default;background:none!important;border-color:transparent!important}
.docbar nav button.on{background:var(--ink);color:#fff}
.docbar nav button.txt{font:700 17px/1 SpaceMono,monospace}
.split{display:flex;border:2px solid var(--ink);box-shadow:3px 3px 0 var(--ink);margin:0 4px}
.split button{height:32px!important;border:0!important;font-size:15px}
.split .dl{width:auto!important;padding:0 10px;display:flex!important;gap:6px;background:var(--acid)}
.split .dl span{font:700 9px/1 SpaceMono,monospace;letter-spacing:.06em}
.split .dl-more{width:26px!important;border-left:2px solid var(--ink)!important;background:var(--white);font-size:11px!important}
.split button:hover{background:var(--ink)!important;color:#fff}

/* ------------------------------------------------------------ Lecteur, règles */
.viewer-wrap{flex:1;min-height:0;position:relative;display:flex;flex-direction:column}
.viewer-wrap .viewer{flex:1;min-height:0}
.ruler,.ruler-corner{display:none;position:absolute;z-index:15}
.with-rulers .ruler,.with-rulers .ruler-corner{display:block}
.ruler-h{top:0;left:var(--rule);right:0;height:var(--rule);width:calc(100% - var(--rule));border-bottom:1.5px solid var(--ink);cursor:col-resize}
.ruler-v{top:var(--rule);left:0;bottom:0;width:var(--rule);height:calc(100% - var(--rule));border-right:1.5px solid var(--ink);cursor:row-resize}
.ruler-corner{top:0;left:0;width:var(--rule);height:var(--rule);border:0;border-right:1.5px solid var(--ink);border-bottom:1.5px solid var(--ink);background:var(--acid);font:700 11px/1 SpaceMono,monospace;cursor:pointer;padding:0}
.with-rulers .viewer{margin:var(--rule) 0 0 var(--rule)}
.coord-badge{position:absolute;left:calc(var(--rule) + 10px);top:calc(var(--rule) + 10px);z-index:16;background:var(--ink);color:#fff;font:700 9px/1 SpaceMono,monospace;padding:6px 8px;pointer-events:none}
.pdf-page{user-select:none}
.hl-layer{position:absolute;inset:0;pointer-events:none;z-index:2}
.hl-layer i{position:absolute;background:#ffd84d88;outline:1.5px solid #e0a800;mix-blend-mode:multiply}
.hl-layer i.cur{background:#ff5c3588;outline-color:var(--orange)}
.toolbar .zoom-label{min-width:56px;height:34px;background:#fff2;font:700 10px/1 SpaceMono,monospace}
.toolbar button.on{background:var(--acid);color:var(--ink)}
.search-box .case{display:flex;align-items:center;gap:3px;cursor:pointer;font:700 10px/1 SpaceMono,monospace;border:1.5px solid;padding:5px 6px}
.search-box .case input{margin:0}
.search-box .case:has(input:checked){background:var(--ink);color:#fff}

/* ------------------------------------------------------------ Accueil */
.drop-alt{display:flex;flex-wrap:wrap;justify-content:center;gap:4px 18px;margin-top:6px}
.drop-hint{display:none}
body.file-drag .workspace:not(.hidden)~.drop-hint,body.file-drag .drop-hint{position:fixed;inset:12px;z-index:90;display:grid;place-content:center;text-align:center;gap:6px;border:3px dashed var(--ink);background:#d7ff2fcc;pointer-events:none;font:700 12px/1 SpaceMono,monospace}
body.file-drag .landing:not(.hidden)~.drop-hint{display:none}
.drop-hint b{font:700 42px/1 SpaceGrotesk,sans-serif;letter-spacing:-.05em}

/* ------------------------------------------------------------ Panneau d'actions */
.action-panel{width:360px}
.action-section{margin-bottom:12px}
.action-section>summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;padding:6px 2px 8px;font:700 9px/1 SpaceMono,monospace;letter-spacing:.12em;text-transform:uppercase}
.action-section>summary::-webkit-details-marker{display:none}
.action-section>summary:after{content:"−";font-size:14px}
.action-section:not([open])>summary:after{content:"+"}
.action-section>summary em{font-style:normal;margin-left:auto;margin-right:10px;opacity:.5}
.action-button{min-height:58px;margin-bottom:7px;padding:9px 11px}
.action-button>i{font:700 16px/1 SpaceMono,monospace;text-align:center}
.action-button:active{transform:translate(1px,1px)}
.outline-box{border:1.5px solid;background:var(--white);padding:12px;margin-top:6px}
.outline-box h5{margin:0 0 8px;font:700 9px/1 SpaceMono,monospace;letter-spacing:.1em;text-transform:uppercase;display:flex;justify-content:space-between}
.outline-box h5 em{font-style:normal;opacity:.5}
.outline-box ul{list-style:none;margin:0;padding:0}
.outline-box li button{width:100%;text-align:left;border:0;background:none;padding:5px 6px 5px calc(6px + var(--lvl) * 14px);font-size:12px;cursor:pointer;border-left:2px solid transparent}
.outline-box li button:hover{background:var(--acid);border-left-color:var(--ink)}

/* ------------------------------------------------------------ Dialogues */
.dialog-overlay{z-index:110}
.modal.dialog{width:min(560px,100%);max-height:calc(100vh - 40px);overflow:auto;padding:30px 30px 24px}
.modal.dialog.wide,.modal.wide{width:min(780px,100%)}
.modal.dialog h2{font-size:clamp(26px,4vw,36px);margin:12px 0 8px}
.dialog-intro{font-size:13px!important;line-height:1.55!important;margin:0 0 16px!important}
.dialog-intro code{font-size:10px}
.dialog-fields{display:flex;flex-direction:column;gap:12px}
.field{display:flex;flex-direction:column;gap:5px;min-width:0}
.field>label,.field-heading{font:700 9px/1.3 SpaceMono,monospace;letter-spacing:.08em;text-transform:uppercase}
.field-heading{margin:8px 0 -2px;padding-top:10px;border-top:1.5px dashed #1113}
.field input[type=text],.field input:not([type]),.field input[type=password],.field input[type=number],.field select,.field textarea{width:100%;min-height:40px;border:2px solid var(--ink);background:#fff;padding:8px 10px;font-size:13px;border-radius:0}
.field textarea{resize:vertical;line-height:1.45;font-family:SpaceMono,monospace;font-size:12px}
.field-row{display:grid;gap:12px;align-items:end}
.field-row.cols-2{grid-template-columns:1fr 1fr}
.field-row.cols-3{grid-template-columns:repeat(3,1fr)}
.field-row.cols-4{grid-template-columns:repeat(4,1fr)}
.numwrap{display:flex}
.numwrap input{flex:1}
.numwrap span{display:grid;place-items:center;padding:0 9px;border:2px solid var(--ink);border-left:0;background:var(--paper2);font:700 10px/1 SpaceMono,monospace}
.rangewrap{display:flex;align-items:center;gap:10px}
.rangewrap input{flex:1;accent-color:var(--purple)}
.rangewrap output{min-width:56px;text-align:right;font:700 11px/1 SpaceMono,monospace}
.seg{display:flex;flex-wrap:wrap;border:2px solid var(--ink);background:#fff;width:max-content;max-width:100%}
.seg button{border:0;border-right:1.5px solid var(--ink);background:none;padding:8px 11px;font-size:12px;cursor:pointer;flex:1 1 auto}
.seg button:last-child{border-right:0}
.seg button:hover{background:#d7ff2f88}
.seg button.on{background:var(--ink);color:#fff}
.field.check label{display:flex;align-items:flex-start;gap:9px;font-size:13px;line-height:1.35;cursor:pointer;text-transform:none;letter-spacing:0;font-family:inherit;font-weight:400}
.field.check input{width:17px;height:17px;margin:0;accent-color:var(--purple);flex:none}
.fhint{font:400 10px/1.45 SpaceMono,monospace;opacity:.6}
.field.info{background:var(--blue);border:1.5px solid;padding:10px 12px;font-size:12px;line-height:1.5}
.field.info.warn{background:var(--yellow)}
.field.info:empty{display:none}
.colorwrap{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.colorwrap input[type=color]{width:44px;height:36px;border:2px solid var(--ink);padding:2px;background:#fff;cursor:pointer}
.swatches{display:flex;flex-wrap:wrap;gap:4px}
.swatches button,.ctl-colors .sw{width:20px;height:20px;border:1.5px solid var(--ink);background:var(--c);cursor:pointer;padding:0}
.swatches button:hover,.ctl-colors .sw:hover{transform:scale(1.15)}
.pwwrap{display:flex}
.pwwrap input{flex:1;font-family:SpaceMono,monospace!important}
.pwwrap button{width:40px;border:2px solid var(--ink);border-left:0;background:var(--paper2);cursor:pointer}
.pwmeter{display:flex;align-items:center;gap:8px}
.pwmeter i{flex:1;height:6px;border:1.5px solid var(--ink);background:linear-gradient(90deg,var(--c,#ccc) var(--p,0%),transparent 0)}
.pwmeter span{font:700 9px/1 SpaceMono,monospace;min-width:70px;text-align:right}
.pwmeter[data-s="0"] i{--p:8%;--c:var(--red)}
.pwmeter[data-s="1"] i{--p:25%;--c:var(--orange)}
.pwmeter[data-s="2"] i{--p:50%;--c:var(--yellow)}
.pwmeter[data-s="3"] i{--p:75%;--c:var(--blue)}
.pwmeter[data-s="4"] i{--p:100%;--c:#1f8a5b}
.dialog-error{background:var(--orange);color:#fff;border:2px solid var(--ink);padding:9px 11px;margin:14px 0 0!important;font:700 11px/1.4 SpaceMono,monospace!important}
.dialog-actions{display:flex;align-items:center;gap:8px;margin-top:20px;padding-top:16px;border-top:2px solid var(--ink);flex-wrap:wrap}
.dialog-actions>span{flex:1}
.choose-actions{display:flex;flex-direction:column;gap:8px;margin-top:8px}
.choose-actions .btn{min-height:48px;justify-content:flex-start;text-align:left;flex-direction:column;align-items:flex-start;padding:10px 14px;text-transform:none;font:700 13px/1.25 SpaceGrotesk,sans-serif;letter-spacing:0}
.choose-actions .btn small{font:400 10px/1.4 SpaceMono,monospace;opacity:.75;margin-top:3px}
.info-body{font-size:13px;line-height:1.5}
.info-body h4{font:700 10px/1 SpaceMono,monospace;letter-spacing:.1em;text-transform:uppercase;margin:18px 0 8px}
.kv{width:100%;border-collapse:collapse;font-size:12px}
.kv th,.kv td{border:1.5px solid var(--ink);padding:7px 9px;text-align:left;vertical-align:top}
.kv th{width:36%;background:var(--paper2);font:700 9px/1.4 SpaceMono,monospace;text-transform:uppercase}
.kv td{background:#fff;word-break:break-word}
.hash{display:block;word-break:break-all;font-size:10.5px;background:none;padding:0}
.hash-cmp{margin-top:12px}
.attlist>div{display:flex;align-items:center;justify-content:space-between;gap:10px;border:1.5px solid;padding:9px 11px;margin-bottom:6px;background:#fff}
.attlist span{display:flex;flex-direction:column;min-width:0;word-break:break-word}
.attlist small{font:400 10px/1.4 SpaceMono,monospace;opacity:.6}
.sig-prev{max-width:100%;max-height:120px;background:#fff;border:1.5px dashed;padding:8px}
.sigpad{position:relative;border:2px solid var(--ink);background:#fff repeating-linear-gradient(0deg,transparent 0 149px,#7457ff55 149px 150px);width:max-content;max-width:100%}
.sigpad canvas{display:block;touch-action:none;cursor:crosshair;max-width:100%}
.sigpad button{position:absolute;right:6px;top:6px}
.sigpad span{position:absolute;left:12px;bottom:10px;font:700 9px/1 SpaceMono,monospace;opacity:.4;pointer-events:none;transition:opacity .2s}
.pwout{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.pwout code{flex:1;min-width:200px;font-size:15px;padding:12px;border:2px solid var(--ink);background:#fff;word-break:break-all}

/* Résultat de compression */
.cmp{display:grid;gap:10px;margin:6px 0}
.cmp>div{display:grid;grid-template-columns:60px 90px 1fr;align-items:center;gap:10px;font-size:13px}
.cmp span{font:700 9px/1 SpaceMono,monospace;text-transform:uppercase}
.cmpbar{height:16px;border:2px solid var(--ink);background:#fff}
.cmpbar i{display:block;height:100%;background:var(--pink)}
.cmpbar.after i{background:var(--acid)}
.cmp-gain{font:700 34px/1 SpaceGrotesk,sans-serif!important;letter-spacing:-.05em;margin:10px 0 4px!important}
.cmp-gain.ok{color:#1f8a5b}
.cmp-gain.none{opacity:.5;font-size:22px!important}
.cmp-gain.bad{color:var(--red)}
.weight{display:grid;gap:7px;margin:12px 0}
.wrow{display:grid;grid-template-columns:150px 1fr 70px 90px;gap:8px;align-items:center;font-size:12px}
.wrow b{font:700 11px/1 SpaceMono,monospace;text-align:right}
.wrow em{font:400 9px/1 SpaceMono,monospace;opacity:.6;font-style:normal}
.wbar{height:12px;border:1.5px solid var(--ink);background:#fff}
.wbar i{display:block;height:100%}
.wbar i.pink{background:var(--pink)}.wbar i.purple{background:var(--purple)}.wbar i.blue{background:var(--blue)}.wbar i.cyan{background:var(--cyan)}.wbar i.sand{background:var(--sand)}

/* Tableau des champs de formulaire */
.ftable{border:2px solid var(--ink);max-height:52vh;overflow:auto;background:#fff}
.fth,.ftr{display:grid;grid-template-columns:1fr 110px 54px 46px 40px 44px;gap:6px;align-items:center;padding:6px 8px;border-bottom:1px solid #1112}
.fth{position:sticky;top:0;background:var(--paper2);font:700 8px/1.2 SpaceMono,monospace;text-transform:uppercase;z-index:1}
.ftr input[type=text],.ftr input:not([type]){min-height:30px;border:1.5px solid var(--ink);padding:3px 7px;font-size:12px;width:100%}
.ftr span{font-size:11px;opacity:.7}
.ftr input[type=checkbox]{width:16px;height:16px;accent-color:var(--purple);justify-self:center}
.ftr.del{background:#ffd0cc;text-decoration:line-through}
.linklike{border:0;background:none;text-decoration:underline;cursor:pointer;font:700 10px/1 SpaceMono,monospace;padding:0}

/* Assistant de fusion */
.flist{display:flex;flex-direction:column;gap:6px;max-height:42vh;overflow:auto}
.frow{display:grid;grid-template-columns:28px 1fr 120px 30px 30px 30px;gap:6px;align-items:center;border:1.5px solid var(--ink);background:#fff;padding:6px}
.frow>b{width:26px;height:26px;display:grid;place-items:center;background:var(--ink);color:#fff;font:700 10px/1 SpaceMono,monospace}
.fname{display:flex;flex-direction:column;min-width:0;font-size:12px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fname em{font-style:normal;background:var(--acid);border:1px solid;padding:0 4px;font:700 8px/1.5 SpaceMono,monospace;margin-left:4px}
.fname small{font:400 9px/1.4 SpaceMono,monospace;opacity:.6}
.frange{min-height:30px;border:1.5px solid var(--ink);padding:0 7px;font:400 11px/1 SpaceMono,monospace;width:100%}
.frow button{height:30px;border:1.5px solid var(--ink);background:none;cursor:pointer}
.frow button:hover{background:var(--acid)}
.fadd{display:flex;align-items:center;gap:12px;margin-top:8px}
.fdrop{font:400 10px/1 SpaceMono,monospace;opacity:.55}
.custom-slot.drag{outline:3px dashed var(--purple);outline-offset:4px}

/* ------------------------------------------------------------ Menus */
.dropmenu{position:fixed;z-index:130;min-width:250px;max-width:min(380px,calc(100vw - 16px));max-height:calc(100vh - 16px);overflow:auto;background:var(--white);border:2px solid var(--ink);box-shadow:6px 6px 0 var(--ink);padding:5px;animation:menuIn .12s ease-out}
@keyframes menuIn{from{opacity:0;transform:translateY(-4px)}}
.dropmenu h5{margin:6px 8px 5px;font:700 8.5px/1.4 SpaceMono,monospace;letter-spacing:.08em;text-transform:uppercase;opacity:.55;word-break:break-word}
.dropmenu hr{border:0;border-top:1.5px solid #1112;margin:5px 2px}
.dropmenu button{width:100%;min-height:34px;display:grid;grid-template-columns:22px 1fr auto;gap:8px;align-items:center;border:0;background:none;padding:5px 8px;text-align:left;font-size:13px;cursor:pointer}
.dropmenu button:hover,.dropmenu button:focus-visible{background:var(--acid);box-shadow:none}
.dropmenu button.checked{font-weight:700}
.dropmenu button.checked>i{color:var(--purple)}
.dropmenu button.danger:hover{background:var(--red);color:#fff}
.dropmenu button>i{font-style:normal;text-align:center;font-size:13px}
.dropmenu button span{display:flex;flex-direction:column;min-width:0}
.dropmenu button small{font:400 9.5px/1.4 SpaceMono,monospace;opacity:.6}
.dropmenu kbd{font-size:8.5px;height:auto;padding:2px 4px;box-shadow:1px 1px 0;white-space:nowrap}
.swatch{display:inline-block;width:12px;height:12px;background:var(--c);border:1.5px solid var(--ink)}

/* ------------------------------------------------------------ Calque d'édition */
.ed-layer{position:absolute;inset:0;z-index:3;pointer-events:none}
.ed-layer.interactive{pointer-events:auto;cursor:crosshair}
.ed-layer.interactive[data-tool="select"]{cursor:default}
.ed-layer.interactive[data-tool="text"],.ed-layer.interactive[data-tool="date"]{cursor:text}
.ed-layer.grid{background-image:linear-gradient(#7457ff26 1px,transparent 1px),linear-gradient(90deg,#7457ff26 1px,transparent 1px);background-size:var(--grid) var(--grid)}
.ed-obj{position:absolute;transform-origin:50% 50%;box-sizing:border-box}
.ed-layer.interactive .ed-obj{cursor:move}
.ed-layer.interactive[data-tool]:not([data-tool="select"]) .ed-obj{pointer-events:none}
.ed-obj.selected{outline:1.5px solid var(--purple);outline-offset:1px}
.ed-obj.t-line,.ed-obj.t-arrow,.ed-obj.t-ink{outline:0!important;pointer-events:none}
.ed-obj.t-line svg,.ed-obj.t-arrow svg,.ed-obj.t-ink svg{position:absolute;inset:0;overflow:visible}
.ed-obj.t-line .hit,.ed-obj.t-arrow .hit,.ed-obj.t-ink .hit{pointer-events:stroke;cursor:move}
.ed-layer:not(.interactive) .hit{pointer-events:none!important}
.ed-obj.t-line.selected svg line:first-child,.ed-obj.t-arrow.selected svg line:first-child{filter:drop-shadow(0 0 1.5px #7457ff)}
.ed-obj.t-ink.selected .ed-inkbox{position:absolute;outline:1.5px dashed var(--purple);pointer-events:none}
.ed-inkbox .h{pointer-events:auto}
.ed-obj.locked{cursor:not-allowed!important}
.ed-lock{position:absolute;right:-8px;top:-8px;width:16px;height:16px;display:grid;place-items:center;background:var(--ink);color:#fff;font:700 9px/1 SpaceMono,monospace;font-style:normal}
.ed-obj .h{position:absolute;width:10px;height:10px;background:#fff;border:1.5px solid var(--purple);z-index:2}
.ed-obj .h.nw{left:-6px;top:-6px;cursor:nwse-resize}.ed-obj .h.n{left:calc(50% - 5px);top:-6px;cursor:ns-resize}.ed-obj .h.ne{right:-6px;top:-6px;cursor:nesw-resize}
.ed-obj .h.e{right:-6px;top:calc(50% - 5px);cursor:ew-resize}.ed-obj .h.se{right:-6px;bottom:-6px;cursor:nwse-resize}.ed-obj .h.s{left:calc(50% - 5px);bottom:-6px;cursor:ns-resize}
.ed-obj .h.sw{left:-6px;bottom:-6px;cursor:nesw-resize}.ed-obj .h.w{left:-6px;top:calc(50% - 5px);cursor:ew-resize}
.ed-obj .h.rot{left:calc(50% - 6px);top:-28px;width:12px;height:12px;border-radius:50%;background:var(--purple);cursor:grab}
.ed-obj .h.rot:after{content:"";position:absolute;left:4px;top:11px;width:1.5px;height:12px;background:var(--purple)}
.ed-obj .h.pt{width:12px;height:12px;margin:-6px 0 0 -6px;border-radius:50%;cursor:move;pointer-events:auto}
.ed-text{width:100%;height:100%;white-space:pre;overflow:visible}
.ed-text>div{white-space:pre}
.ed-obj.editing{outline:2px solid var(--purple)!important;height:auto!important;z-index:5}
.ed-edit{outline:0;white-space:pre-wrap;word-break:break-word;cursor:text;background:#fffef988;min-height:1em}
.ed-fill{width:100%;height:100%}
.ed-fill.redact{background:repeating-linear-gradient(135deg,#000 0 8px,#222 8px 16px);outline:1.5px dashed var(--red);outline-offset:-1px}
.ed-link{width:100%;height:100%;background:#56b8ff26;outline:1.5px dashed #2d7fd1;outline-offset:-1px;display:flex;align-items:flex-end;overflow:hidden}
.ed-link span{background:#2d7fd1;color:#fff;font:700 8px/1 SpaceMono,monospace;padding:2px 4px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ed-img{width:100%;height:100%;overflow:hidden;position:relative}
.ed-img img{position:absolute;max-width:none;user-select:none;-webkit-user-drag:none}
.ed-field{width:100%;height:100%;border:1.5px solid;display:flex;align-items:center;overflow:hidden;padding:0 4px}
.ed-field span{font:700 9px/1 SpaceMono,monospace;color:#7457ff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;gap:4px;align-items:center}
.ed-field b{font-size:11px}
.ed-obj.f-check .ed-field,.ed-obj.f-radio .ed-field{justify-content:center;padding:0}
.ed-obj.f-check .ed-field span,.ed-obj.f-radio .ed-field span{display:none}
.ed-obj.f-radio .ed-field{border-radius:50%}
.ed-obj.f-check .ed-field:after{content:"✓";font-size:70%;color:#7457ff}
.ed-obj.f-radio .ed-field:after{content:"";width:40%;height:40%;border-radius:50%;background:#7457ff}
.ed-existing{position:absolute;outline:1.5px dashed #ff5c35;background:#ff5c3514;pointer-events:none}
.ed-existing span{position:absolute;left:0;top:-13px;background:var(--orange);color:#fff;font:700 7.5px/1 SpaceMono,monospace;padding:2px 3px;white-space:nowrap}
.ed-guide{position:absolute;z-index:4;background:#ff5c35}
.ed-guide.v{top:0;bottom:0;width:1px;cursor:ew-resize;box-shadow:0 0 0 3px transparent}
.ed-guide.h{left:0;right:0;height:1px;cursor:ns-resize}
.ed-guide:hover{box-shadow:0 0 0 2px #ff5c3555}
.ed-layer:not(.interactive) .ed-guide{pointer-events:none}
.ed-snapline{position:absolute;z-index:6;background:#ff2f8e;pointer-events:none}
.ed-snapline.v{top:0;bottom:0;width:1px}
.ed-snapline.h{left:0;right:0;height:1px}
.ed-rubber{position:absolute;z-index:6;border:1.5px dashed var(--purple);background:#7457ff14;pointer-events:none}
.ed-rubber:after{content:attr(data-label);position:absolute;left:0;top:calc(100% + 4px);background:var(--purple);color:#fff;font:700 8.5px/1 SpaceMono,monospace;padding:3px 5px;white-space:nowrap}
.ed-rubber.line{height:0;border-width:1.5px 0 0;transform-origin:0 0;background:none}
.ed-rubber.line:after{top:4px}
.ed-rubber[data-label=""]:after{display:none}
.ed-measure{position:absolute;z-index:6;height:0;border-top:2px solid #ff5c35;transform-origin:0 0;pointer-events:none}
.ed-measure:before,.ed-measure:after{content:"";position:absolute;top:-7px;width:2px;height:12px;background:#ff5c35}
.ed-measure:before{left:0}.ed-measure:after{right:0}
.ed-measure span{position:absolute;left:50%;top:6px;transform:translateX(-50%);background:#ff5c35;color:#fff;font:700 9px/1 SpaceMono,monospace;padding:4px 6px;white-space:nowrap}
body.editing-mode .pdf-page{box-shadow:0 18px 45px #1114,6px 7px 0 var(--purple)}

/* ------------------------------------------------------------ Panneau de l'éditeur */
.ed-panel{display:flex;flex-direction:column;gap:12px}
.ed-palette{border:1.5px solid var(--ink);background:var(--white);padding:10px}
.ed-group+.ed-group{margin-top:9px}
.ed-group h5{margin:0 0 5px;font:700 8px/1 SpaceMono,monospace;letter-spacing:.12em;text-transform:uppercase;opacity:.55}
.ed-chips{display:grid;grid-template-columns:repeat(3,1fr);gap:4px}
.ed-chip{min-height:48px;border:1.5px solid var(--ink);background:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;cursor:pointer;padding:4px 2px}
.ed-chip i{font:700 16px/1 SpaceMono,monospace;font-style:normal}
.ed-chip span{font:700 8px/1.1 SpaceMono,monospace;text-align:center}
.ed-chip:hover{background:#d7ff2f99}
.ed-chip.on{background:var(--ink);color:#fff;box-shadow:3px 3px 0 var(--purple)}
.ed-hint{margin:10px 0 0;font:400 10px/1.5 SpaceMono,monospace;opacity:.7;min-height:30px}
.ed-existing-toggle{display:flex;gap:8px;align-items:center;font-size:12px;cursor:pointer}
.ed-existing-toggle input{accent-color:var(--purple)}
.ed-inspector{border:1.5px solid var(--ink);background:var(--white)}
.insp-empty{padding:14px;font-size:12px;line-height:1.55;opacity:.75}
.insp-title{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;background:var(--ink);color:#fff}
.insp-title b{font-size:14px}
.insp-title span{font:700 9px/1 SpaceMono,monospace;opacity:.7}
details.insp{border-top:1.5px solid #1111}
details.insp>summary{list-style:none;cursor:pointer;padding:9px 12px;font:700 9px/1 SpaceMono,monospace;letter-spacing:.1em;text-transform:uppercase;display:flex;justify-content:space-between}
details.insp>summary::-webkit-details-marker{display:none}
details.insp>summary:after{content:"▾";opacity:.5}
details.insp:not([open])>summary:after{content:"▸"}
.insp-body{padding:2px 12px 12px;display:flex;flex-direction:column;gap:9px}
.insp-text{width:100%;min-height:62px;border:1.5px solid var(--ink);padding:7px 8px;font-size:13px;resize:vertical}
.ctl{display:flex;flex-direction:column;gap:4px;min-width:0}
.ctl>span{font:700 8px/1 SpaceMono,monospace;letter-spacing:.08em;text-transform:uppercase;opacity:.65}
.ctl input[type=number],.ctl input[type=text],.ctl select,.ctl textarea{width:100%;min-height:32px;border:1.5px solid var(--ink);background:#fff;padding:4px 7px;font-size:12px}
.ctl:has(em){position:relative}
.ctl em{position:absolute;right:6px;bottom:9px;font:700 8.5px/1 SpaceMono,monospace;font-style:normal;opacity:.5;pointer-events:none}
.ctl.range{display:grid;grid-template-columns:1fr 64px;align-items:center;column-gap:8px}
.ctl.range>span{grid-column:1/-1}
.ctl.range input{accent-color:var(--purple);width:100%}
.ctl.range output{font:700 10px/1 SpaceMono,monospace;text-align:right}
.ctl.disabled{opacity:.45;pointer-events:none}
.ctl-colors{display:flex;flex-wrap:wrap;gap:4px;align-items:center}
.ctl-colors .sw{width:19px;height:19px}
.ctl-colors .sw.on{outline:2px solid var(--purple);outline-offset:1px}
.ctl-colors .sw.none{background:repeating-linear-gradient(135deg,#fff 0 4px,#ef493d 4px 5px);font-size:0}
.ctl-colors input[type=color]{width:30px;height:24px;border:1.5px solid var(--ink);padding:1px;background:#fff;cursor:pointer}
.ctl-row{display:flex;gap:8px;align-items:flex-end;flex-wrap:wrap}
.ctl-row>.ctl{flex:1 1 90px}
.ctl-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}
.ctl-grid.geom .ctl:last-child:nth-child(odd){grid-column:1/-1}
.togs{display:flex;flex-wrap:wrap;gap:3px}
.togs.wide .tog{flex:1}
.tog{min-width:30px;height:30px;border:1.5px solid var(--ink);background:#fff;cursor:pointer;padding:0 7px;font-size:12px}
.tog.on{background:var(--ink);color:#fff}
.seg.mini{width:100%}
.seg.mini button{padding:5px 4px;font-size:12px;min-height:28px}
.btn-grid{display:grid;grid-template-columns:1fr 1fr;gap:5px}
.btn-grid .btn{width:100%}
.insp-actions{display:grid;grid-template-columns:1fr 1fr;gap:5px;padding:12px;border-top:1.5px solid var(--ink);background:var(--paper2)}
.insp-actions .btn{width:100%}
.ed-apply{position:sticky;bottom:-14px;margin:0 -14px -14px;padding:12px 14px;background:var(--paper);border-top:2px solid var(--ink);display:grid;grid-template-columns:1fr auto;gap:8px;z-index:3}
.ed-apply .btn.primary{min-height:46px;font-size:11px}
.ed-apply small{grid-column:1/-1;font:400 9px/1.4 SpaceMono,monospace;opacity:.6}
.ed-panel details.insp{border:1.5px solid var(--ink);background:var(--white)}

/* ------------------------------------------------------------ Gestionnaire de pages */
.board-overlay{position:fixed;inset:0;z-index:105;background:#111c;backdrop-filter:blur(6px);display:grid;padding:18px}
.board{background:var(--paper);border:2px solid var(--ink);box-shadow:10px 10px 0 var(--acid);display:flex;flex-direction:column;min-height:0;overflow:hidden}
.board-head{display:flex;align-items:center;gap:12px;padding:14px 18px;border-bottom:2px solid var(--ink);background:#d8efff;flex-wrap:wrap}
.board-head>div:first-child{flex:1;min-width:200px}
.board-head small{font:700 9px/1 SpaceMono,monospace;letter-spacing:.14em}
.board-head h2{margin:3px 0;font-size:26px;letter-spacing:-.05em}
.board-head p{margin:0;font:400 10px/1.4 SpaceMono,monospace;opacity:.7}
.board-zoom{display:flex;align-items:center;gap:8px;font:700 9px/1 SpaceMono,monospace}
.board-zoom input{accent-color:var(--purple)}
.board-tools{display:flex;flex-wrap:wrap;gap:8px 14px;padding:10px 18px;border-bottom:1.5px solid var(--ink);background:var(--white)}
.bt-group{display:flex;align-items:center;gap:3px;flex-wrap:wrap}
.bt-group>span{font:700 8px/1 SpaceMono,monospace;letter-spacing:.08em;text-transform:uppercase;opacity:.5;margin-right:4px}
.bt-group button{min-height:30px;border:1.5px solid var(--ink);background:#fff;padding:0 9px;font-size:12px;cursor:pointer}
.bt-group button:hover{background:var(--acid)}
.bt-group button.danger:hover{background:var(--red);color:#fff}
.bt-group input{min-height:30px;width:110px;border:1.5px solid var(--ink);padding:0 7px;font:400 11px/1 SpaceMono,monospace}
.board-grid{flex:1;overflow:auto;padding:22px;display:grid;grid-template-columns:repeat(auto-fill,minmax(calc(var(--tw) + 22px),1fr));gap:18px;align-content:start;background-color:#cfcfc8;background-image:radial-gradient(#1113 1px,transparent 1px);background-size:16px 16px}
.bcard{position:relative;background:var(--white);border:1.5px solid var(--ink);padding:9px 9px 7px;cursor:pointer;user-select:none;transition:transform .12s}
.bcard:hover{transform:translateY(-2px);box-shadow:4px 4px 0 var(--ink)}
.bcard.sel{background:var(--acid);box-shadow:4px 4px 0 var(--purple);border-color:var(--purple);outline:2px solid var(--purple)}
.bcard.ext{border-style:dashed}
.bcard.dragging{opacity:.35}
.bcard.drop-before:before,.bcard.drop-after:after{content:"";position:absolute;top:-4px;bottom:-4px;width:4px;background:var(--orange)}
.bcard.drop-before:before{left:-12px}
.bcard.drop-after:after{right:-12px}
.bthumb{position:relative;display:grid;place-items:center;min-height:calc(var(--tw) * .9)}
.bthumb canvas{display:block;width:var(--tw);max-width:100%;height:auto;background:#fff;box-shadow:2px 3px 0 #999}
.bcard.blank .bthumb canvas{outline:1.5px dashed #999}
.bthumb em{position:absolute;right:2px;top:2px;background:var(--purple);color:#fff;font:700 8px/1 SpaceMono,monospace;font-style:normal;padding:2px 4px}
.bmeta{display:flex;align-items:center;gap:6px;margin-top:7px;min-width:0}
.bmeta b{background:var(--ink);color:#fff;font:700 9px/1 SpaceMono,monospace;padding:3px 5px}
.bmeta span{font:400 9px/1.2 SpaceMono,monospace;opacity:.7;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bacts{position:absolute;left:50%;top:6px;transform:translateX(-50%);display:flex;gap:2px;opacity:0;transition:opacity .12s}
.bcard:hover .bacts,.bcard:focus-within .bacts{opacity:1}
.bacts button{width:24px;height:24px;border:1.5px solid var(--ink);background:#fff;cursor:pointer;font-size:12px;padding:0}
.bacts button:hover{background:var(--acid)}
.bacts button[data-c="del"]:hover{background:var(--red);color:#fff}
.board-help{margin:0;padding:8px 18px;border-top:1.5px solid var(--ink);font:400 9px/1.5 SpaceMono,monospace;opacity:.7;background:var(--white)}

/* ------------------------------------------------------------ Messages */
.toast[data-kind="info"]{background:var(--blue)}
.toast[data-kind="warn"]{background:var(--yellow)}
.loading>div i.indeterminate{width:35%!important;animation:indet 1.1s ease-in-out infinite}
@keyframes indet{0%{transform:translateX(-100%)}100%{transform:translateX(290%)}}
.keys-title{font:700 10px/1 SpaceMono,monospace;letter-spacing:.1em;text-transform:uppercase;margin:18px 0 0}

/* ------------------------------------------------------------ Thème sombre */
.night-page{filter:none}
.night-page>canvas{filter:invert(.88) hue-rotate(180deg) contrast(.92)}
body.editing-mode .night-page>canvas{filter:none}
body.dark .message.toast{color:var(--ink)}
body.dark{--paper:#1a1a18;--paper2:#232320;--white:#252522;color:#f2efe8;background:#11110f}
body.dark header{background:#141412f5;border-color:#f2efe8}
body.dark header nav button{border-color:#f2efe8}
body.dark .landing{background-image:linear-gradient(#fff1 1px,transparent 1px),linear-gradient(90deg,#fff1 1px,transparent 1px)}
body.dark .pitch{background:#1a1a18e8}
body.dark .pitch h1 span{color:#1a1a18;-webkit-text-stroke-color:#f2efe8}
body.dark .features article,body.dark .landing footer,body.dark .hero{border-color:#f2efe8}
body.dark .docbar,body.dark .search-box,body.dark .action-panel,body.dark .modal,body.dark .loading,body.dark .dropmenu,body.dark .board{color:#f2efe8}
body.dark .docbar{border-color:#f2efe8}
body.dark .docbar-nav .dgroup{border-color:#fff2}
body.dark .split{border-color:#f2efe8;box-shadow:3px 3px 0 #f2efe8}
body.dark .split .dl{color:var(--ink)}
body.dark .split .dl-more{border-color:#f2efe8!important}
body.dark .action-panel,body.dark .action-panel-head{border-color:#f2efe8}
body.dark .action-panel-head{color:var(--ink)}
body.dark .action-button,body.dark .panel-note,body.dark .outline-box{border-color:#f2efe8}
body.dark .panel-note{color:var(--ink)}
body.dark .action-button:hover{color:var(--ink)}
body.dark .btn{border-color:#f2efe8;color:#f2efe8}
body.dark .btn.primary{color:var(--ink)}
body.dark .btn:hover:not(:disabled){box-shadow:3px 3px 0 #f2efe8}
body.dark .field input,body.dark .field select,body.dark .field textarea,body.dark .ctl input,body.dark .ctl select,body.dark .insp-text,body.dark .seg,body.dark .tog,body.dark .ed-chip,body.dark .kv td,body.dark .frow,body.dark .ftable,body.dark .frange,body.dark .ftr input,body.dark .attlist>div,body.dark .pwout code,body.dark .bt-group button,body.dark .bt-group input,body.dark .bacts button,body.dark .sigpad,body.dark .modal>input{background:#2c2c29;color:#f2efe8;border-color:#f2efe8}
body.dark .seg button{border-color:#f2efe8}
body.dark .seg button.on,body.dark .tog.on,body.dark .ed-chip.on{background:#f2efe8;color:var(--ink)}
body.dark .numwrap span,body.dark .pwwrap button,body.dark .kv th{background:#33332f;border-color:#f2efe8;color:#f2efe8}
body.dark .ed-palette,body.dark .ed-inspector,body.dark .ed-panel details.insp{border-color:#f2efe8}
body.dark .insp-title{background:#f2efe8;color:var(--ink)}
body.dark .insp-actions,body.dark .ed-apply{border-color:#f2efe8}
body.dark .dialog-actions{border-color:#f2efe8}
body.dark .field-heading{border-color:#fff3}
body.dark .field.info{color:var(--ink)}
body.dark .dropmenu{border-color:#f2efe8;box-shadow:6px 6px 0 #000}
body.dark .dropmenu button:hover{color:var(--ink)}
body.dark .dropmenu hr{border-color:#fff2}
body.dark .board-head{background:#1f2a33}
body.dark .board-tools,body.dark .board-help{border-color:#f2efe8}
body.dark .bcard{border-color:#f2efe8}
body.dark .bcard.sel{color:var(--ink)}
body.dark .board-grid{background-color:#242421;background-image:radial-gradient(#fff2 1px,transparent 1px)}
body.dark .cmpbar,body.dark .wbar{background:#2c2c29;border-color:#f2efe8}
body.dark kbd{background:#2c2c29;color:#f2efe8}
body.dark code{background:#fff1}
body.dark .ruler-corner{color:var(--ink)}
body.dark .ruler-h,body.dark .ruler-v,body.dark .ruler-corner{border-color:#f2efe8}
body.dark .search-box .case:has(input:checked){background:#f2efe8;color:var(--ink)}
body.dark .loading>div:not(.spinner-icon){background:#2c2c29}
body.dark .ed-hint,body.dark .muted{opacity:.75}

/* ------------------------------------------------------------ Docbar adaptative (largeur du lecteur) */
@container reader (max-width:980px){
  .split .dl span{display:none}
  .docbar-nav [data-action="grid"]{display:none}
}
@container reader (max-width:820px){
  .docbar-nav .dgroup:nth-child(2){display:none}
  .docbar-file b{display:none}
}
@container reader (max-width:640px){
  .docbar-nav [data-action="history"],.docbar-nav [data-action="print"],.docbar-nav [data-action="fullscreen"]{display:none}
  .docbar nav button{width:32px}
  .docbar-nav{gap:2px}
  .docbar-nav .dgroup{padding-left:2px;border:0}
}
.workspace:not(.hidden)~.message{bottom:92px}

/* ------------------------------------------------------------ Responsive */
@media (max-width:1280px){
  .split .dl span{display:none}
  .docbar-nav .dgroup:nth-child(2) [data-action="grid"]{display:none}
}
@media (max-width:1120px){
  .action-panel{width:min(360px,92vw)}
  .docbar-nav .dgroup:nth-child(2){display:none}
}
@media (max-width:760px){
  .docbar{padding:0 6px 0 8px}
  .docbar-file b{display:none}
  .docbar-nav{gap:2px}
  .docbar-nav .dgroup{padding-left:2px;border:0}
  .docbar-nav [data-action="history"],.docbar-nav [data-action="print"],.docbar-nav [data-action="fullscreen"]{display:none}
  .docbar nav button{width:32px}
  .field-row.cols-3,.field-row.cols-4{grid-template-columns:1fr 1fr}
  .modal.dialog{padding:24px 18px 18px}
  .toolbar [data-action="first"],.toolbar [data-action="last"],.toolbar [data-action="theme"]{display:none}
  .wrow{grid-template-columns:1fr 60px;row-gap:3px}
  .wrow .wbar{grid-column:1/-1;grid-row:2}
  .wrow em{display:none}
  .frow{grid-template-columns:24px 1fr 30px 30px 30px}
  .frange{grid-column:2/-1;grid-row:2}
  .fth,.ftr{grid-template-columns:1fr 44px 36px 36px 36px}
  .fth span:nth-child(2),.ftr>span{display:none}
  .board-overlay{padding:0}
  .board{box-shadow:none}
  .board-tools{max-height:30vh;overflow:auto}
  .ed-chips{grid-template-columns:repeat(4,1fr)}
  :root{--rule:18px}
}
@media (max-width:700px){
  .action-panel{left:58px;right:0;width:auto;top:0;z-index:40}
  .workspace:has(.action-panel:not(.hidden)) .toolbar{display:none}
  .ed-apply{bottom:-11px;margin:0 -11px -11px}
}
@media (max-width:520px){
  .field-row.cols-2,.field-row.cols-3,.field-row.cols-4{grid-template-columns:1fr}
  .seg{width:100%}
}
@media (hover:none){
  .bacts{opacity:1}
  .ed-obj .h{width:16px;height:16px}
  .ed-obj .h.nw,.ed-obj .h.sw,.ed-obj .h.w{left:-9px}.ed-obj .h.ne,.ed-obj .h.se,.ed-obj .h.e{right:-9px}
  .ed-obj .h.nw,.ed-obj .h.n,.ed-obj .h.ne{top:-9px}.ed-obj .h.sw,.ed-obj .h.s,.ed-obj .h.se{bottom:-9px}
}
@media (prefers-reduced-motion:reduce){
  .dropmenu,.loading>div i.indeterminate{animation:none}
  .bcard{transition:none}
}
