:root {
  --bg:      #0e0e11;
  --s1:      #0e0e11;
  --s2:      #1f1f27;
  --s3:      #262631;
  --s4:      #3a3a48;
  --b1:      #2a2a36;
  --b2:      #3a3a48;
  --b3:      #55556a;
  --t1:      #f0f0f4;
  --t2:      #c7c7d1;
  --t3:      #7a7a8c;
  --accent:  #a8e818;
  --accent2: #6fb500;
  --ag:      linear-gradient(135deg,#a8e818,#b8f828);
  --red:     #ff6b6b;
  --green:   #22c55e;
  --r:       10px;
  --r2:      7px;
  --r3:      5px;
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}

#editorApp{background:#17171c;color:#f0f0f4;font-family:'DM Sans',sans-serif;font-size:14px;display:flex;flex-direction:column;height:78vh;min-height:600px;max-height:840px;overflow:hidden;border-radius:18px;border:1px solid #2a2a36;box-shadow:0 30px 80px rgba(0,0,0,0.35);}

/* FOOTER */
.ftr{
  height:38px;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;gap:8px;
  padding:0 16px;
  background:#17171c;
  border-top:1.5px solid #2a2a36;
  font-size:12px;color:#7a7a8c;
  z-index:100;
}
.ftr-name{color:#c7c7d1;font-weight:600;}
.ftr-ig{
  display:inline-flex;align-items:center;gap:5px;
  padding:4px 10px;border-radius:99px;
  border:1.5px solid #3a3a48;background:#17171c;
  color:#c7c7d1;font-weight:600;font-size:12px;
  text-decoration:none;cursor:pointer;transition:all .14s;
}
.ftr-ig:hover{
  border-color:#a8e818;color:#f0f0f4;
  background:rgba(168,232,24,.08);
}
.ftr-ig svg{width:14px;height:14px;flex-shrink:0;}
.ftr-sep{color:#3a3a48;}

/* HEADER */
.hdr{
  height:56px;display:flex;align-items:center;gap:12px;
  padding:0 20px;
  background:#17171c;
  border-bottom:1.5px solid #2a2a36;
  flex-shrink:0;
  z-index:100;
}
.logo{font-family:'Syne',sans-serif;display:flex;align-items:center;gap:9px;font-size:17px;font-weight:800;letter-spacing:-0.02em;color:#f0f0f4;}
.logo-mark{
  width:30px;height:30px;border-radius:8px;
  background:#a8e818;
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
  box-shadow:0 0 16px rgba(168,232,24,.5);
}
.logo-mark svg{width:16px;height:16px;color:#f0f0f4;}
.hdr-sep{width:1.5px;height:22px;background:#2a2a36;margin:0 4px;}
.hdr-right{margin-left:auto;display:flex;align-items:center;gap:8px;}

.hbtn{
  display:inline-flex;align-items:center;gap:6px;
  padding:7px 14px;border-radius:6px;
  border:1.5px solid #3a3a48;background:#17171c;
  color:#c7c7d1;font:500 13px 'DM Sans',sans-serif;
  cursor:pointer;transition:all .13s;white-space:nowrap;
}
.hbtn:hover{background:#1f1f27;color:#f0f0f4;border-color:#55556a;}
.hbtn.accent,.hbtn.neon{background:#a8e818;border-color:#a8e818;color:#f0f0f4;font-weight:700;box-shadow:0 2px 14px rgba(168,232,24,.35);}
.hbtn.accent:hover,.hbtn.neon:hover{background:#b8f828;border-color:#b8f828;box-shadow:0 2px 22px rgba(168,232,24,.55);}
.hbtn:disabled{opacity:.35;pointer-events:none;}
.hbtn svg{width:13px;height:13px;flex-shrink:0;}
.hbtn.danger{border-color:rgba(255,107,107,.3);color:#ff6b6b;}
.hbtn.danger:hover{background:rgba(255,107,107,.06);border-color:#ff6b6b;}

/* BODY */
.body{flex:1;display:flex;overflow:hidden;}

/* SIDEBAR */
.sidebar{
  width:240px;flex-shrink:0;
  background:#17171c;
  border-right:1.5px solid #2a2a36;
  display:flex;flex-direction:column;
  overflow:hidden;
}
.sb-section{padding:14px;border-bottom:1.5px solid #2a2a36;}
.sb-label{font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:#7a7a8c;margin-bottom:10px;}

/* Tool buttons */
.tools-grid{display:grid;grid-template-columns:1fr 1fr;gap:5px;}
.tbtn{
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:5px;padding:10px 6px;
  background:#1f1f27;border:1px solid #2a2a36;
  border-radius:6px;cursor:pointer;
  font:500 11px 'DM Sans',sans-serif;color:#c7c7d1;
  transition:all .15s;
}
.tbtn svg{width:18px;height:18px;}
.tbtn:hover{background:#262631;color:#f0f0f4;border-color:#3a3a48;}
.tbtn.active{background:rgba(168,232,24,.15);border-color:#a8e818;color:#f0f0f4;}

/* Sig pad */
#sideSigPad{
  width:100%;height:80px;display:block;
  background:#f4f4f4;border:1px solid #e6e6e6;
  border-radius:6px;cursor:crosshair;touch-action:none;
}
.sig-actions{display:flex;gap:5px;margin-top:7px;}
.sig-actions .hbtn{flex:1;justify-content:center;font-size:12px;padding:5px 8px;}

/* Saved signatures library */
.saved-sigs{display:flex;flex-direction:column;gap:6px;}
.saved-sigs-empty{font-size:11px;color:#7a7a8c;line-height:1.6;padding:4px 0;}
.saved-sig{
  display:flex;align-items:center;gap:8px;
  padding:5px;border:1px solid #2a2a36;border-radius:6px;
  background:#17171c;cursor:pointer;transition:all .12s;
}
.saved-sig:hover{border-color:#a8e818;background:rgba(168,232,24,.06);}
.saved-sig img{
  height:30px;max-width:120px;object-fit:contain;
  background:#17171c;border-radius:3px;flex:1;min-width:0;
}
.saved-sig .ss-del{
  width:20px;height:20px;border-radius:4px;background:transparent;border:none;
  color:#7a7a8c;cursor:pointer;display:flex;align-items:center;justify-content:center;
  flex-shrink:0;transition:all .12s;
}
.saved-sig .ss-del svg{width:11px;height:11px;}
.saved-sig .ss-del:hover{color:#ff6b6b;background:rgba(255,107,107,.1);}

/* Color row */
.colors{display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
.cswatch{
  width:20px;height:20px;border-radius:50%;cursor:pointer;
  border:2px solid transparent;transition:border-color .12s;flex-shrink:0;
}
.cswatch.on{border-color:#f0f0f4;}
.ccustom{width:20px;height:20px;border-radius:50%;border:2px solid #3a3a48;cursor:pointer;padding:0;background:none;}

/* Font size */
.fsrow{display:flex;align-items:center;justify-content:space-between;margin-top:9px;}
.fslabel{font-size:12px;color:#c7c7d1;}
.fsstep{display:flex;align-items:center;gap:4px;}
.fsbtn{
  width:22px;height:22px;border-radius:5px;
  background:#1f1f27;border:1px solid #2a2a36;
  color:#c7c7d1;cursor:pointer;font-size:14px;
  display:flex;align-items:center;justify-content:center;
  transition:all .12s;
}
.fsbtn:hover{background:#262631;color:#f0f0f4;}
.fsval{font-size:12px;width:24px;text-align:center;}

/* Layers list */
.layers{flex:1;overflow-y:auto;padding:10px;}
.layers::-webkit-scrollbar{width:3px;}
.layers::-webkit-scrollbar-thumb{background:#3a3a48;border-radius:9px;}
.layer-item{
  display:flex;align-items:center;gap:7px;
  padding:7px 9px;border-radius:6px;margin-bottom:3px;
  cursor:pointer;border:1px solid transparent;
  transition:all .12s;
}
.layer-item:hover{background:#1f1f27;}
.layer-item.sel{background:rgba(168,232,24,.12);border-color:#a8e818;}
.li-ico{width:24px;height:24px;border-radius:5px;background:#262631;display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.li-ico svg{width:12px;height:12px;}
.li-info{flex:1;min-width:0;}
.li-name{font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.li-meta{font-size:10px;color:#7a7a8c;margin-top:1px;}
.li-del{
  width:18px;height:18px;border-radius:4px;background:transparent;
  border:none;color:#7a7a8c;cursor:pointer;display:flex;align-items:center;justify-content:center;
  opacity:0;transition:all .12s;
}
.li-del svg{width:10px;height:10px;}
.layer-item:hover .li-del{opacity:1;}
.li-del:hover{color:#ff6b6b;background:rgba(255,107,107,.1);}
.layers-empty{padding:16px 10px;font-size:12px;color:#7a7a8c;text-align:center;line-height:1.7;}

/* MAIN */
.main{flex:1;display:flex;flex-direction:column;overflow:hidden;}

/* Page toolbar */
.ptoolbar{
  height:44px;display:flex;align-items:center;gap:8px;
  padding:0 14px;
  background:#17171c;border-bottom:1.5px solid #2a2a36;
  flex-shrink:0;
}
.ptoolbar .hbtn{padding:5px 10px;font-size:12px;}
.pinfo{font-size:12px;color:#c7c7d1;}
.zinfo{font-size:11px;color:#7a7a8c;}
.ptoolbar-right{margin-left:auto;display:flex;align-items:center;gap:6px;}

/* Viewport */
.viewport{
  flex:1;overflow:auto;
  background:#121216;
  display:flex;justify-content:center;
  align-items:flex-start;
  padding:28px;
}
.viewport::-webkit-scrollbar{width:6px;height:6px;}
.viewport::-webkit-scrollbar-thumb{background:#262631;border-radius:9px;}

/* Drop zone */
.dropzone{
  flex:1;display:flex;align-items:center;justify-content:center;
  padding:32px;
}
.dz-card{
  border:1.5px dashed #3a3a48;border-radius:20px;
  padding:52px 60px;text-align:center;
  max-width:460px;width:100%;
  transition:all .2s;
}
.dz-card.over{border-color:#a8e818;background:rgba(168,232,24,.06);}
.dz-icon{
  width:56px;height:56px;border-radius:14px;
  background:#a8e818;
  display:flex;align-items:center;justify-content:center;
  margin:0 auto 18px;
  box-shadow:0 4px 20px rgba(168,232,24,.4);
}
.dz-icon svg{width:26px;height:26px;color:#f0f0f4;}
.dz-title{font-family:'Syne',sans-serif;font-size:21px;font-weight:800;letter-spacing:-.02em;margin-bottom:8px;}
.dz-sub{font-size:13px;color:#c7c7d1;line-height:1.7;margin-bottom:22px;}
.dz-tags{display:flex;gap:7px;justify-content:center;flex-wrap:wrap;margin-top:18px;}
.dz-tag{
  display:flex;align-items:center;gap:4px;
  padding:4px 10px;border-radius:99px;
  background:#1f1f27;border:1px solid #2a2a36;
  font-size:11px;color:#c7c7d1;font-weight:500;
}
.dz-tag svg{width:11px;height:11px;color:#6fb500;}

/* PDF canvas wrap */
.pdf-wrap{
  position:relative;flex-shrink:0;
  box-shadow:0 8px 48px rgba(0,0,0,.16),0 2px 8px rgba(0,0,0,.06);
  border-radius:3px;overflow:visible;
}
#pdfCanvas{display:block;border-radius:3px;}

/* Annotation overlay */
.annot-layer{position:absolute;inset:0;overflow:visible;}

/* Annotation elements */
.ann{
  position:absolute;cursor:move;user-select:none;
}
.ann.sel::before{
  content:'';position:absolute;inset:-3px;
  border:2px solid #a8e818;border-radius:3px;
  pointer-events:none;
  box-shadow:0 0 0 3px rgba(168,232,24,.18);
}
.ann-txt{
  background:transparent;border:none;outline:none;
  font-family:'DM Sans',sans-serif;
  resize:none;overflow:hidden;
  cursor:text;min-width:40px;min-height:18px;
  padding:1px 3px;line-height:1.3;
}
.ann-txt:focus{cursor:text;}
.ann-sig{display:block;width:100%;height:100%;object-fit:contain;}
.ann-check{display:flex;align-items:center;justify-content:center;}
.resize-h{
  position:absolute;bottom:-5px;right:-5px;
  width:11px;height:11px;border-radius:2px;
  background:#a8e818;border:1.5px solid #f0f0f4;
  cursor:se-resize;pointer-events:all;z-index:5;
  opacity:0;transition:opacity .12s;
}
.ann.sel .resize-h{opacity:1;}
/* Move handle (grab bar) shown above selected text/date/initials so they
   can be dragged without entering the textarea edit mode. */
.move-h{
  position:absolute;top:-16px;left:50%;transform:translateX(-50%);
  display:flex;align-items:center;justify-content:center;
  width:30px;height:13px;border-radius:3px;
  background:#a8e818;border:1.5px solid #f0f0f4;
  cursor:move;pointer-events:all;z-index:6;
  opacity:0;transition:opacity .12s;
}
.ann.sel .move-h{opacity:1;}
.move-h svg{width:14px;height:8px;color:#f0f0f4;}

/* RIGHT PANEL */
.rpanel{
  width:200px;flex-shrink:0;
  background:#17171c;
  border-left:1.5px solid #2a2a36;
  display:flex;flex-direction:column;
  overflow-y:auto;
}
.rpanel::-webkit-scrollbar{width:3px;}
.rpanel::-webkit-scrollbar-thumb{background:#3a3a48;border-radius:9px;}
.rp-section{padding:14px;border-bottom:1.5px solid #2a2a36;}
.rp-title{font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:#7a7a8c;margin-bottom:10px;}
.rp-empty{font-size:12px;color:#7a7a8c;line-height:1.6;}
.prop-field{margin-bottom:8px;}
.prop-field label{font-size:11px;color:#7a7a8c;display:block;margin-bottom:4px;}
.prop-input{
  width:100%;padding:6px 9px;border-radius:5px;
  background:#1f1f27;border:1px solid #2a2a36;
  color:#f0f0f4;font:13px 'DM Sans',sans-serif;
  outline:none;transition:border-color .12s;
}
.prop-input:focus{border-color:#a8e818;}
textarea.prop-input{resize:vertical;min-height:60px;}
.style-row{display:flex;gap:6px;}
.style-btn{
  flex:1;height:32px;border-radius:5px;
  background:#1f1f27;border:1px solid #2a2a36;
  color:#c7c7d1;font-size:14px;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  transition:all .12s;
}
.style-btn:hover{border-color:#bbb;}
.style-btn.on{
  background:#a8e818;border-color:#a8e818;color:#f0f0f4;font-weight:700;
}
.rp-doc-info{font-size:12px;color:#c7c7d1;line-height:1.7;}
.rp-doc-info strong{color:#f0f0f4;display:block;}

/* MODAL */
.modal-bg{
  position:fixed;inset:0;z-index:500;
  background:rgba(0,0,0,.35);backdrop-filter:blur(10px);
  display:flex;align-items:center;justify-content:center;
  opacity:0;pointer-events:none;transition:opacity .2s;
}
.modal-bg.open{opacity:1;pointer-events:all;}
.modal{
  background:#17171c;border:1.5px solid #2a2a36;
  border-radius:16px;padding:26px;
  width:460px;max-width:calc(100vw - 24px);
  box-shadow:0 24px 80px rgba(0,0,0,.12),0 4px 16px rgba(0,0,0,.06);
  transform:translateY(6px) scale(.98);
  transition:transform .2s;
}
.modal-bg.open .modal{transform:none;}
.modal-title{font-family:'Syne',sans-serif;font-size:18px;font-weight:800;letter-spacing:-.02em;margin-bottom:4px;color:#f0f0f4;}
.modal-sub{font-size:13px;color:#c7c7d1;margin-bottom:18px;}

.m-tabs{display:flex;gap:5px;margin-bottom:14px;}
.m-tab{
  flex:1;padding:7px;border-radius:6px;
  background:#1f1f27;border:1.5px solid #2a2a36;
  color:#c7c7d1;font:500 12px 'DM Sans',sans-serif;
  cursor:pointer;transition:all .13s;
}
.m-tab.on{background:#a8e818;border-color:#a8e818;color:#f0f0f4;font-weight:700;}

.m-body{display:none;}
.m-body.on{display:block;}

#mSigPad{
  width:100%;height:150px;display:block;
  background:#fafafa;border:1.5px solid #e6e6e6;
  border-radius:6px;cursor:crosshair;touch-action:none;
}
.m-pad-actions{display:flex;justify-content:flex-end;margin-top:7px;}

.type-sig{
  width:100%;padding:14px;text-align:center;
  background:#fff;border:none;border-radius:6px;
  font:italic 36px 'Playfair Display',serif;
  color:#111;outline:none;
}
.type-preview{
  margin-top:10px;padding:14px;
  background:#fff;border-radius:6px;
  min-height:56px;display:flex;align-items:center;justify-content:center;
  font:italic 38px 'Playfair Display',serif;color:#111;
}

.upload-area{
  border:1.5px dashed #3a3a48;border-radius:6px;
  padding:30px;text-align:center;cursor:pointer;
  transition:all .15s;color:#c7c7d1;font-size:13px;
}
.upload-area:hover{border-color:#a8e818;background:rgba(168,232,24,.06);}
.upload-area svg{display:block;margin:0 auto 10px;color:#f0f0f4;}
#uploadPreview{display:none;margin-top:10px;width:100%;height:90px;background:#fff;border-radius:6px;}

.m-actions{display:flex;gap:7px;justify-content:flex-end;margin-top:16px;}

/* TOAST */
.toast{
  position:fixed;bottom:20px;right:20px;z-index:600;
  padding:11px 16px;border-radius:8px;
  background:#17171c;border:1.5px solid #2a2a36;
  font-size:13px;font-weight:500;color:#f0f0f4;
  transform:translateY(8px);opacity:0;
  transition:all .2s;box-shadow:0 8px 32px rgba(0,0,0,.1);
  display:flex;align-items:center;gap:7px;pointer-events:none;
  max-width:300px;
}
.toast.show{transform:none;opacity:1;}
.toast.ok{border-left:4px solid #a8e818;}
.toast.err{border-left:4px solid #ff6b6b;}

/* PROGRESS */
.prog{
  position:fixed;top:0;left:0;right:0;height:3px;
  background:#a8e818;z-index:999;
  transform-origin:left;transform:scaleX(0);
  transition:transform .3s ease,opacity .3s;
  opacity:0;
  box-shadow:0 0 8px rgba(168,232,24,.7);
}

/* SCROLLBAR global */
*::-webkit-scrollbar{width:5px;height:5px;}
*::-webkit-scrollbar-track{background:transparent;}
*::-webkit-scrollbar-thumb{background:#3a3a48;border-radius:9px;}

/* Hide page toolbar until PDF loaded */
.ptoolbar{display:none;}

/* Tool active indicator */
#toolIndicator{
  font-size:11px;font-weight:700;
  color:#f0f0f4;background:#a8e818;
  padding:3px 10px;border-radius:99px;
  display:none;
  box-shadow:0 0 10px rgba(168,232,24,.5);
  animation:glow 2s ease-in-out infinite;
}
@keyframes glow{0%,100%{box-shadow:0 0 8px rgba(168,232,24,.4);}50%{box-shadow:0 0 18px rgba(168,232,24,.8);}}

/* Dot grid viewport */
.viewport{
  background:#121216;
  background-image:radial-gradient(circle,#262631 1px,transparent 1px);
  background-size:22px 22px;
}
@media(max-width:900px){.rpanel{display:none;}}
@media(max-width:640px){
  .sidebar{width:200px;}
  .dz-card{padding:32px 24px;}
  #editorApp{height:auto;min-height:0;max-height:none;}
}

@media (prefers-reduced-motion: reduce) {
  #toolIndicator{animation:none;}
}
