:root{
  --bg:#0b0f14; --fg:#e6edf3; --muted:#9fb3c8; --accent:#4aa3ff; --line:#263240;
}
html,body{margin:0;background:#0b0f14;color:var(--fg);font:14px/1.45 system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial}
.wrap{max-width:1100px;margin:0 auto;padding:0 16px}
.small{font-size:12px;color:var(--muted)}

/* Top bar */
.topbar{position:sticky;top:0;z-index:1000;background:#0f141a;border-bottom:1px solid var(--line)}
.nav{display:flex;align-items:center;justify-content:space-between;height:56px}
.nav .brand{color:var(--fg);text-decoration:none;font-weight:700}
.menu{list-style:none;margin:0;padding:0;display:flex;gap:14px}
.menu a{color:var(--fg);text-decoration:none;padding:8px 10px;border-radius:8px}
.menu a:hover{background:#101722}
.menu a.active{background:#101722;outline:1px solid var(--line)}

.content{padding:22px 0}
h1{margin:0 0 8px}
p{color:var(--muted)}
.content ul, .content ol{color:var(--muted)}

.stage{margin-top:28px}
.stage.hidden{display:none}
.upload-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:24px}
.upload-card{background:#101722;border:1px solid var(--line);border-radius:20px;padding:24px;box-shadow:0 18px 40px rgba(0,0,0,.45);display:flex;flex-direction:column;gap:18px}
.upload-card header h2{margin:0 0 10px;font-size:20px}
.upload-card header p{margin:0;color:var(--muted);font-size:13px}
.upload-body{display:flex;flex-direction:column;gap:12px}
.file-label{font-weight:600;font-size:13px;color:var(--fg)}
.upload-body input[type=file]{background:#0b0f14;border:1px solid var(--line);border-radius:12px;padding:10px;color:var(--muted)}
.upload-body input[type=file]::file-selector-button{background:#1a2531;border:1px solid var(--line);border-radius:10px;padding:6px 12px;color:var(--fg);cursor:pointer;margin-right:12px}
.hint-list{margin:0;padding-left:18px;color:var(--muted);font-size:12px;display:flex;flex-direction:column;gap:6px}
.hint-list code{background:#0f141a;border:1px solid var(--line);border-radius:6px;padding:1px 6px;color:var(--fg)}
.stage-footer{margin-top:22px}
.help-text{font-size:13px;color:var(--muted)}
.help-text code{background:#0f141a;border:1px solid var(--line);border-radius:6px;padding:2px 6px;color:var(--fg)}

.builder-stage{display:flex;flex-direction:column;gap:20px}
.builder-header{display:flex;align-items:center;justify-content:space-between;background:#101722;border:1px solid var(--line);border-radius:14px;padding:16px 20px}
.builder-header strong{display:block;font-size:16px}
.file-counts{display:flex;gap:8px;color:var(--muted);font-size:12px;margin-top:4px}

.formlab{display:grid;grid-template-columns:minmax(260px,320px) 1fr;gap:26px;align-items:flex-start}
.formlab-controls{display:flex;flex-direction:column;gap:18px;position:sticky;top:86px}
.control-card{background:#101722;border:1px solid var(--line);border-radius:16px;padding:18px;display:flex;flex-direction:column;gap:12px}
.control-card h2{margin:0;font-size:17px}
.control-card p{margin:0;color:var(--muted);font-size:13px}
.control-card label{font-weight:600;font-size:13px;margin-bottom:4px;display:block;color:var(--fg)}
.control-card input[type=file]{width:100%;background:#0b0f14;border:1px solid var(--line);border-radius:10px;padding:8px;color:var(--muted)}
.control-card input[type=file]::file-selector-button{background:#1a2531;border:1px solid var(--line);border-radius:8px;padding:6px 10px;color:var(--fg);cursor:pointer;margin-right:12px}
.field-list{display:flex;flex-direction:column;gap:8px;max-height:260px;overflow:auto;padding-right:4px}
.field-pill{background:#1a2531;border:1px solid var(--line);border-radius:999px;padding:8px 12px;font-size:13px;cursor:grab;display:flex;justify-content:space-between;align-items:center;transition:background .2s,border .2s}
.field-pill.assigned{background:#1f2d3c;border-color:var(--accent)}
.field-pill span{color:var(--fg)}
.field-pill small{color:var(--muted);font-size:11px}
.formlab-actions{display:flex;flex-wrap:wrap;gap:10px}
.formlab-actions.column{flex-direction:column;align-items:stretch}
.formlab-actions.stacked{flex-direction:column;align-items:stretch}
.formlab-actions button{background:#1a2531;border:1px solid var(--line);border-radius:10px;padding:8px 14px;color:var(--fg);cursor:pointer;transition:background .2s,border .2s}
.formlab-actions button:disabled{opacity:.5;cursor:not-allowed}
.formlab-actions button.primary{background:var(--accent);color:#051423;border:1px solid #56a6ff}
.formlab-actions button.secondary{background:#101722}
.import-label{font-weight:600;font-size:12px;color:var(--muted);cursor:pointer}
.formlab-actions.column > *{width:100%}
.formlab-actions.column input[type=file]{margin-top:4px}
.status-line{font-size:12px;color:var(--muted);margin-top:6px}

.pdf-area{background:#101722;border:1px solid var(--line);border-radius:16px;padding:18px}
.pdf-toolbar{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin-bottom:16px}
.pdf-toolbar > div{display:flex;gap:8px;align-items:center}
.pdf-pages{display:flex;flex-direction:column;gap:22px}
.pdf-page{position:relative;display:inline-block;margin:0 auto;background:#f5f6f8;border-radius:8px;box-shadow:0 10px 30px rgba(0,0,0,.35);overflow:visible}
.pdf-page canvas{display:block;max-width:100%;height:auto;border-radius:8px}
.pdf-overlay{position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:auto}
.placed-field{position:absolute;display:inline-flex;align-items:flex-start;justify-content:flex-start;pointer-events:auto;min-width:140px;z-index:20;transition:left .08s linear,top .08s linear}
.placed-field.selected{z-index:30}
.placed-field[data-replica="true"]{opacity:.88}
.placed-field-box{background:rgba(255,255,255,.95);color:#051423;border:1px solid var(--line);border-radius:0;padding:10px 12px;box-shadow:0 12px 24px rgba(0,0,0,.35);min-width:140px;max-width:360px;word-break:break-word;white-space:pre-wrap;font-weight:500;line-height:1.2;transition:border .2s,box-shadow .2s}
.placed-field-box.empty{font-style:italic;color:rgba(5,20,35,.7)}
.placed-field.selected .placed-field-box{border-color:#ffe87d;box-shadow:0 0 0 2px rgba(255,232,125,.45),0 16px 30px rgba(0,0,0,.45)}
.placed-field[data-all-pages="true"] .placed-field-box{border-color:#7bc8ff;box-shadow:0 0 0 2px rgba(123,200,255,.35),0 16px 30px rgba(0,0,0,.4)}
.placed-field-name{position:absolute;top:0;left:0;transform:translateY(-100%);background:var(--accent);color:#051423;font-size:11px;font-weight:700;padding:3px 10px 4px;border-radius:8px 8px 0 0;letter-spacing:.01em;box-shadow:0 6px 14px rgba(0,0,0,.35);display:flex;align-items:center;gap:6px;pointer-events:none}
.placement-badge{background:rgba(15,20,26,.92);color:var(--accent);font-weight:600;font-size:10px;border-radius:999px;padding:1px 6px;border:1px solid rgba(86,166,255,.5)}
.placed-field-remove{position:absolute;top:-10px;right:0;transform:translate(45%,-100%);background:#1a2531;border:1px solid var(--line);color:#f5f6f8;border-radius:50%;width:22px;height:22px;display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;font-size:15px;line-height:1;box-shadow:0 6px 16px rgba(0,0,0,.35);transition:background .2s,border .2s,color .2s}
.placed-field-remove:hover{background:#f07183;border-color:#f07183;color:#051423}
.placed-field-grabber{position:absolute;top:50%;right:-32px;transform:translateY(-50%);width:20px;height:32px;border-radius:12px;background:#0f141a;border:1px solid var(--line);display:flex;align-items:center;justify-content:center;cursor:grab;padding:0;box-shadow:0 8px 14px rgba(0,0,0,.35);transition:border .2s,background .2s,width .2s,height .2s;touch-action:none;opacity:.8}
.placed-field.selected .placed-field-grabber{width:24px;height:42px;border-color:var(--accent);background:#152233;opacity:1;right:-36px}
.placed-field-grabber:hover{border-color:var(--accent)}
.placed-field-grabber.dragging{cursor:grabbing;border-color:var(--accent);background:#1b2b40}
.placed-field-grabber.dragging .grab-dots span{background:var(--accent)}
.placed-field-grabber .grab-dots{display:grid;grid-template-columns:repeat(2,4px);grid-auto-rows:4px;gap:4px}
.placed-field-grabber .grab-dots span{width:3px;height:3px;border-radius:50%;background:var(--muted);opacity:.75}
.placed-field.selected .placed-field-grabber .grab-dots span{width:4px;height:4px;background:var(--accent);opacity:1}
.placed-field[data-all-pages="true"] .placed-field-grabber{border-color:#7bc8ff}
.placed-field[data-all-pages="true"].selected .placed-field-grabber{background:#18344a}
.placed-field:not(.selected) .placed-field-name,
.placed-field:not(.selected) .placed-field-remove{display:none}

.placed-field-name,.placed-field-remove,.placed-field-grabber{user-select:none}
.placement-details{margin-top:0;background:#101722;border:1px solid var(--line);border-radius:16px;padding:18px;display:flex;flex-direction:column;gap:12px;transition:opacity .2s}
.placement-details.disabled{opacity:.5;pointer-events:none}
.placement-details h2{margin:0;font-size:17px}
.placement-details label{font-size:13px;font-weight:600}
.placement-details input[type=range]{width:100%}
.toggle-row{display:flex;align-items:center;gap:10px;font-size:13px}
.toggle-row input{width:18px;height:18px;accent-color:var(--accent)}
.placement-details.all-pages .toggle-row input{accent-color:#7bc8ff}
.placement-details.all-pages .toggle-row span{color:#7bc8ff}
.placement-meta{font-size:12px;color:var(--muted)}
.placement-preview{min-height:50px;border:1px dashed var(--line);border-radius:12px;padding:10px 12px;color:var(--fg);font-size:14px;background:#0b0f14;white-space:pre-wrap;word-break:break-word}
.placement-preview.empty{color:var(--muted);font-style:italic}
.import-export{display:flex;flex-direction:column;gap:12px}
.import-export input[type=file]{width:100%;background:#0b0f14;border:1px solid var(--line);border-radius:10px;padding:8px;color:var(--muted)}
.import-export input[type=file]::file-selector-button{background:#1a2531;border:1px solid var(--line);border-radius:8px;padding:6px 10px;color:var(--fg);cursor:pointer;margin-right:12px}

@media (max-width:900px){
  .formlab{grid-template-columns:1fr}
}

@media (max-width:600px){
  .pdf-toolbar{flex-direction:column;align-items:flex-start}
  .formlab-actions{flex-direction:column}
  .formlab-actions button{width:100%}
  .placed-field-grabber{right:-26px;height:28px;width:18px}
  .placed-field.selected .placed-field-grabber{right:-32px;width:22px;height:36px}
  .placed-field-name{font-size:10px;padding:2px 6px}
  .placement-badge{font-size:9px}
  .formlab{grid-template-columns:1fr}
  .formlab-controls{position:static}
  .builder-header{flex-direction:column;align-items:flex-start;gap:10px}
  .upload-grid{grid-template-columns:1fr}
}
