:root{
  --bg:#f4f5f7;
  --panel:#ffffff;
  --line:#d8dbe0;
  --line-strong:#b9bec7;
  --ink:#2b2f36;
  --ink-soft:#6b7280;
  --ink-faint:#9aa1ab;
  --accent:#3b6cf6;
  --accent-soft:#e7eeff;
  --danger:#e2536b;
  --ok:#1f9d6b;
  --radius:10px;
  --shadow:0 1px 3px rgba(0,0,0,.06),0 6px 18px rgba(0,0,0,.04);
  --head-h:56px;
  --status-h:26px;
}
*{box-sizing:border-box;}
html,body{margin:0;height:100%;}
body{
  font-family:"Segoe UI","Malgun Gothic",system-ui,sans-serif;
  background:var(--bg);color:var(--ink);font-size:14px;
}
button{font-family:inherit;}

/* ---------- header ---------- */
.topbar{
  height:var(--head-h);background:var(--panel);border-bottom:1px solid var(--line);
  display:flex;align-items:center;gap:18px;padding:0 16px;position:sticky;top:0;z-index:20;
}
.brand{display:flex;align-items:center;gap:9px;font-weight:700;font-size:15px;color:var(--ink);text-decoration:none;}
.brand .logo{width:28px;height:28px;border-radius:7px;background:var(--accent);color:#fff;display:grid;place-items:center;font-size:13px;font-weight:800;}
.tabs{display:flex;gap:4px;background:var(--bg);padding:4px;border-radius:9px;}
.tab{padding:7px 14px;border:none;border-radius:7px;color:var(--ink-soft);cursor:pointer;font-weight:600;font-size:13px;white-space:nowrap;background:transparent;}
.tab.active{background:var(--panel);color:var(--ink);box-shadow:var(--shadow);}
.spacer{flex:1;}
.lang{display:flex;border:1px solid var(--line);border-radius:8px;overflow:hidden;}
.lang button{border:none;background:var(--panel);color:var(--ink-soft);padding:7px 11px;font-size:12px;font-weight:700;cursor:pointer;border-right:1px solid var(--line);}
.lang button:last-child{border-right:none;}
.lang button.on{background:var(--accent);color:#fff;}
.btn{border:1px solid var(--line-strong);background:var(--panel);color:var(--ink);padding:8px 14px;border-radius:8px;font-weight:600;cursor:pointer;font-size:13px;display:inline-flex;align-items:center;gap:7px;}
.btn:hover{border-color:var(--ink-faint);}
.btn.sm{padding:7px;font-size:12px;flex:1;justify-content:center;}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff;}
.btn.primary:hover{filter:brightness(1.05);}
.btn:disabled{opacity:.5;cursor:not-allowed;}

/* ---------- app 3-pane ---------- */
.app{display:flex;height:calc(100vh - var(--head-h) - var(--status-h));}

/* left */
.left{width:280px;flex:0 0 auto;background:var(--panel);border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:0;}
.panel-head{padding:12px 14px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);font-weight:700;font-size:13px;}
.panel-head .count{color:var(--ink-faint);font-weight:600;font-size:12px;}
.dropzone{margin:12px;border:2px dashed var(--line-strong);border-radius:var(--radius);padding:16px 12px;text-align:center;color:var(--ink-soft);cursor:pointer;transition:.15s;background:var(--bg);}
.dropzone:hover,.dropzone.drag{border-color:var(--accent);background:var(--accent-soft);color:var(--accent);}
.dropzone .big{font-size:20px;margin-bottom:2px;}
.dropzone small{display:block;color:var(--ink-faint);margin-top:4px;font-size:11px;}
.filelist{flex:1;overflow:auto;padding:4px 8px 12px;}
.empty-list{display:none;padding:30px 16px;text-align:center;color:var(--ink-faint);font-size:12.5px;line-height:1.7;}
.left.is-empty .filelist{display:none;}
.left.is-empty .empty-list{display:block;}

.file{display:flex;align-items:center;gap:9px;padding:7px 8px;border-radius:9px;cursor:pointer;margin-bottom:4px;border:1px solid transparent;}
.file:hover{background:var(--bg);}
.file.active{background:var(--accent-soft);border-color:#cfe0ff;}
.file .grip{color:var(--ink-faint);cursor:grab;font-size:14px;line-height:1;}
.file.dragging{opacity:.4;border-style:dashed;border-color:var(--accent);background:var(--accent-soft);}
.file.drop-before{box-shadow:inset 0 3px 0 -1px var(--accent);}
.file.drop-after{box-shadow:inset 0 -3px 0 -1px var(--accent);}
.file .num{width:18px;height:18px;border-radius:5px;background:var(--ink);color:#fff;font-size:10px;display:grid;place-items:center;font-weight:700;flex:0 0 auto;}
.file .thumb{width:40px;height:52px;border-radius:5px;background:var(--bg);border:1px solid var(--line);display:grid;place-items:center;color:var(--ink-faint);font-size:9px;flex:0 0 auto;overflow:hidden;}
.file .thumb img{width:100%;height:100%;object-fit:cover;display:block;}
.file .meta{flex:1;min-width:0;}
.file .name{font-weight:600;font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.file .sub{color:var(--ink-faint);font-size:11px;margin-top:2px;}
.file .del{color:var(--ink-faint);opacity:0;border:none;background:none;cursor:pointer;font-size:14px;padding:2px 4px;border-radius:5px;flex:0 0 auto;}
.file:hover .del{opacity:1;}
.file .del:hover{color:var(--danger);background:#fde7eb;}

.left-foot{border-top:1px solid var(--line);padding:10px 12px;display:flex;gap:8px;}

/* center */
.center{flex:1;display:flex;flex-direction:column;min-width:0;background:#eceef1;}
.viewer-bar{height:46px;flex:0 0 auto;display:flex;align-items:center;gap:10px;padding:0 14px;background:var(--panel);border-bottom:1px solid var(--line);}
.iconbtn{width:32px;height:32px;border-radius:7px;border:1px solid var(--line);background:var(--panel);cursor:pointer;display:grid;place-items:center;color:var(--ink-soft);font-size:16px;}
.iconbtn:hover{border-color:var(--ink-faint);color:var(--ink);}
.iconbtn:disabled{opacity:.4;cursor:not-allowed;}
.pageind{font-weight:700;font-size:13px;}
.pageind span{color:var(--ink-faint);font-weight:600;}
.zoom{margin-left:auto;display:flex;align-items:center;gap:8px;color:var(--ink-soft);font-size:12px;}
#zoomLabel{min-width:42px;text-align:center;}

.stage{flex:1;position:relative;display:flex;overflow:auto;}
.stage-inner{flex:1;min-height:100%;display:grid;place-items:center;padding:28px;}
.preview-canvas{max-width:100%;max-height:calc(100vh - var(--head-h) - var(--status-h) - 46px - 56px);background:#fff;border:1px solid var(--line);border-radius:4px;box-shadow:var(--shadow);}
.stage-empty{text-align:center;color:var(--ink-faint);}
.stage-empty .ico{font-size:46px;opacity:.5;}
.stage-empty .t{font-weight:700;color:var(--ink-soft);font-size:14px;margin-top:8px;}
.stage-empty .s{font-size:12px;margin-top:4px;}
.nav-arrow{position:absolute;top:50%;transform:translateY(-50%);width:42px;height:42px;border-radius:50%;background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow);cursor:pointer;display:grid;place-items:center;font-size:18px;color:var(--ink-soft);z-index:5;}
.nav-arrow:hover{color:var(--ink);}
.nav-arrow:disabled{opacity:0;pointer-events:none;}
.nav-arrow.prev{left:18px;}
.nav-arrow.next{right:18px;}
.hint{position:absolute;bottom:14px;left:50%;transform:translateX(-50%);background:rgba(43,47,54,.82);color:#fff;font-size:11px;padding:5px 12px;border-radius:20px;white-space:nowrap;}

/* right */
.right{width:300px;flex:0 0 auto;background:var(--panel);border-left:1px solid var(--line);display:flex;flex-direction:column;min-height:0;}
.right-body{flex:1;overflow:auto;padding:16px;}
.mode-tag{color:var(--ink-faint);font-weight:600;font-size:11px;}
.field{margin-bottom:20px;}
.field>label{display:block;font-weight:700;font-size:12.5px;margin-bottom:9px;}
.seg{display:flex;border:1px solid var(--line);border-radius:8px;overflow:hidden;}
.seg button{flex:1;border:none;background:var(--panel);padding:8px 4px;cursor:pointer;font-size:12px;font-weight:600;color:var(--ink-soft);border-right:1px solid var(--line);}
.seg button:last-child{border-right:none;}
.seg button.on{background:var(--accent);color:#fff;}
.slider-row{display:flex;align-items:center;gap:10px;}
.slider-row input[type=range]{flex:1;}
input[type=range]{accent-color:var(--accent);}
/* compression stepped slider (thumb-aligned labels) */
.comp-head{display:flex;align-items:center;justify-content:space-between;gap:8px;}
input[type=range].comp{-webkit-appearance:none;appearance:none;width:100%;height:6px;border-radius:3px;background:var(--line);outline:none;margin:12px 0 0;cursor:pointer;}
input[type=range].comp::-webkit-slider-thumb{-webkit-appearance:none;box-sizing:border-box;width:18px;height:18px;border-radius:50%;background:var(--accent);border:2px solid #fff;box-shadow:0 1px 3px rgba(0,0,0,.25);cursor:pointer;}
input[type=range].comp::-moz-range-thumb{box-sizing:border-box;width:18px;height:18px;border-radius:50%;background:var(--accent);border:2px solid #fff;cursor:pointer;}
.slabels{position:relative;height:15px;margin-top:9px;font-size:11px;}
.slabels span{position:absolute;transform:translateX(-50%);white-space:nowrap;color:var(--ink-faint);cursor:pointer;line-height:15px;}
.slabels span.on{color:var(--accent);font-weight:700;}
.slabels span:nth-child(1){left:9px;}
.slabels span:nth-child(2){left:calc(9px + (100% - 18px) * .3333);}
.slabels span:nth-child(3){left:calc(9px + (100% - 18px) * .6667);}
.slabels span:nth-child(4){left:calc(100% - 9px);}
.qbadge{font-weight:700;font-size:12px;color:var(--accent);background:var(--accent-soft);padding:3px 9px;border-radius:6px;min-width:60px;text-align:center;}
.estimate{background:var(--bg);border:1px solid var(--line);border-radius:var(--radius);padding:13px;display:flex;flex-direction:column;gap:9px;}
.estimate .row{display:flex;justify-content:space-between;font-size:12.5px;gap:10px;}
.estimate .row .k{color:var(--ink-soft);}
.estimate .row .v{font-weight:700;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.estimate .row .v.good{color:var(--ok);}
.bar{height:7px;border-radius:4px;background:var(--line);overflow:hidden;}
.bar>i{display:block;height:100%;background:var(--accent);transition:width .2s;}
.check{display:flex;align-items:center;gap:9px;padding:7px 0;font-size:12.5px;}
.check input{width:16px;height:16px;accent-color:var(--accent);}
.hint-text{font-size:12px;color:var(--ink-soft);line-height:1.7;background:var(--bg);border:1px solid var(--line);border-radius:var(--radius);padding:12px;}
.right-foot{border-top:1px solid var(--line);padding:14px;display:flex;flex-direction:column;gap:8px;}
.right-foot .btn{justify-content:center;}
.fname-row{display:flex;flex-direction:column;gap:6px;font-size:12px;font-weight:700;color:var(--ink-soft);}
.sel{padding:8px 10px;border:1px solid var(--line);border-radius:8px;font-size:12.5px;width:100%;background:var(--panel);color:var(--ink);}
.privacy{font-size:11px;color:var(--ink-faint);text-align:center;margin-top:2px;}

/* status */
.status{height:var(--status-h);background:var(--panel);border-top:1px solid var(--line);display:flex;align-items:center;gap:16px;padding:0 14px;font-size:11.5px;color:var(--ink-faint);}
.status .s{display:flex;align-items:center;gap:5px;}
.status .s b{color:var(--ink-soft);}

/* drag overlay */
.drag-overlay{position:fixed;inset:0;background:rgba(59,108,246,.12);backdrop-filter:blur(2px);z-index:50;display:none;place-items:center;}
.drag-overlay.show{display:grid;}
.drag-overlay .box{background:var(--panel);border:2px dashed var(--accent);border-radius:16px;padding:40px 60px;font-size:18px;font-weight:700;color:var(--accent);box-shadow:var(--shadow);}

/* toast */
.toast{position:fixed;bottom:48px;left:50%;transform:translateX(-50%) translateY(20px);background:var(--ink);color:#fff;padding:10px 18px;border-radius:10px;font-size:13px;font-weight:600;opacity:0;pointer-events:none;transition:.25s;z-index:60;box-shadow:var(--shadow);}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0);}
.toast.err{background:var(--danger);}

/* busy */
.busy{position:fixed;inset:0;background:rgba(255,255,255,.7);backdrop-filter:blur(2px);z-index:70;display:none;flex-direction:column;align-items:center;justify-content:center;gap:16px;}
.busy.show{display:flex;}
.spinner{width:44px;height:44px;border:4px solid var(--accent-soft);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite;}
@keyframes spin{to{transform:rotate(360deg);}}
.busy-msg{font-weight:700;color:var(--ink);}

/* ---------- content / SEO ---------- */
.content{max-width:980px;margin:0 auto;padding:48px 20px 60px;}
.ad-slot{min-height:90px;border:1px dashed var(--line-strong);border-radius:var(--radius);display:grid;place-items:center;color:var(--ink-faint);font-size:12px;margin-bottom:40px;background:var(--panel);}
.content h1{font-size:26px;margin:0 0 12px;}
.content .lead{font-size:15px;color:var(--ink-soft);line-height:1.8;margin:0 0 32px;}
.content h2{font-size:20px;margin:36px 0 14px;}
.feature-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;}
.feature{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:18px;}
.feature h3{margin:0 0 8px;font-size:15px;}
.feature p{margin:0;color:var(--ink-soft);font-size:13px;line-height:1.7;}
.howto{color:var(--ink-soft);font-size:14px;line-height:1.9;padding-left:20px;}
.faq details{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:12px 16px;margin-bottom:10px;}
.faq summary{font-weight:700;cursor:pointer;font-size:14px;}
.faq p{color:var(--ink-soft);font-size:13.5px;line-height:1.7;margin:10px 0 0;}
.site-foot{margin-top:48px;padding-top:24px;border-top:1px solid var(--line);display:flex;gap:16px;flex-wrap:wrap;align-items:center;color:var(--ink-faint);font-size:12.5px;}
.site-foot a{color:var(--ink-soft);text-decoration:none;font-weight:600;}
.site-foot a:hover{color:var(--accent);text-decoration:underline;}

/* responsive: stack on small screens */
@media(max-width:900px){
  .tabs{order:3;width:100%;}
  .app{flex-direction:column;height:auto;}
  .left,.right{width:100%;border:none;border-bottom:1px solid var(--line);}
  .center{min-height:60vh;}
  .left{max-height:340px;}
}
