:root{
  --bg:#f4f6fb;--panel:#fff;--ink:#1c2233;--muted:#667089;--line:#e2e6f0;
  --brand:#4f46e5;--brand-d:#4338ca;--accent:#10b981;--danger:#e11d48;--radius:12px;
}
*{box-sizing:border-box}
html,body{margin:0}
body{font-family:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;background:var(--bg);color:var(--ink);line-height:1.45}
.wrap{max-width:1400px;margin:0 auto;padding:18px;display:grid;grid-template-columns:320px 1fr;gap:18px;align-items:start}
@media(max-width:900px){.wrap{grid-template-columns:1fr}}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:16px}
.side{position:sticky;top:12px;max-height:calc(100vh - 24px);overflow:auto}
@media(max-width:900px){.side{position:static;max-height:none}}
.panel h2{font-size:.8rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0 0 10px}
.group{margin-bottom:18px}
.row{display:flex;gap:8px;align-items:center;margin-bottom:8px}
.row label{flex:1;font-size:.9rem}
.row input[type=number],.row select,.row input[type=text]{width:110px;padding:7px 8px;border:1px solid var(--line);border-radius:8px;font:inherit;background:#fff}
.row input[type=color]{width:46px;height:34px;border:1px solid var(--line);border-radius:8px;padding:2px;background:#fff}
.row input[type=range]{width:110px}
.full select,.full input[type=text]{width:100%}
.chk{display:flex;align-items:center;gap:8px;font-size:.9rem;margin-bottom:8px}
.btn{border:0;border-radius:9px;padding:9px 14px;font:inherit;font-weight:600;cursor:pointer;background:var(--brand);color:#fff;transition:.15s}
.btn:hover{background:var(--brand-d)}
.btn:disabled{opacity:.5;cursor:not-allowed}
.btn.sec{background:#eef0f8;color:var(--ink)}
.btn.sec:hover{background:#e0e4f3}
.btn.ok{background:var(--accent)}
.btn.ok:hover{background:#059669}
.btn.del{background:#fff1f3;color:var(--danger)}
.btn.sm{padding:6px 10px;font-size:.82rem}
.btns{display:flex;flex-wrap:wrap;gap:8px}
.dz{border:2px dashed #b9bfe0;border-radius:var(--radius);padding:28px 16px;text-align:center;background:#fafbff;cursor:pointer;transition:.15s}
.dz.over{border-color:var(--brand);background:#eef0ff}
.dz b{display:block;font-size:1.05rem;margin-bottom:4px}
.dz span{color:var(--muted);font-size:.88rem}
.bar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;margin:14px 0}
.stats{color:var(--muted);font-size:.92rem}
.progress{height:8px;background:#e6e9f5;border-radius:99px;overflow:hidden;margin:8px 0;display:none}
.progress i{display:block;height:100%;width:0;background:var(--brand);transition:width .1s}
.status{font-size:.88rem;color:var(--muted);min-height:1.2em}
.thumbs{display:grid;grid-template-columns:repeat(auto-fill,minmax(64px,1fr));gap:6px;max-height:210px;overflow:auto;padding:2px}
.thumbs div{position:relative;aspect-ratio:1;border-radius:8px;overflow:hidden;background:#eee}
.thumbs img{width:100%;height:100%;object-fit:cover;display:block}
.thumbs button{position:absolute;top:2px;right:2px;width:20px;height:20px;border:0;border-radius:50%;background:rgba(0,0,0,.65);color:#fff;font-size:13px;line-height:1;cursor:pointer;display:none}
.thumbs div:hover button{display:block}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.card header{background:none;color:inherit;padding:10px 12px;display:flex;justify-content:space-between;align-items:center;gap:8px}
.card header strong{font-size:.92rem}
.card header small{color:var(--muted);display:block;font-weight:400}
.cv{padding:0 12px 12px}
.cv canvas{width:100%;height:auto;display:block;border-radius:8px;cursor:pointer;
  background:repeating-conic-gradient(#e9ecf5 0 25%,#fff 0 50%) 50%/16px 16px}
.empty{padding:50px 20px;text-align:center;color:var(--muted)}
.hint{font-size:.82rem;color:var(--muted);margin-top:6px}
.sizes{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.sizes input{width:100%!important}
