:root{
  --bg:#0d0e13; --panel:#15171f; --panel2:#1b1e28; --line:#262a36;
  --txt:#e7e9f0; --muted:#8b90a3; --indigo:#6470ff; --teal:#34e0c8;
  --radius:14px; --shadow:0 10px 40px rgba(0,0,0,.35);
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  background:radial-gradient(1200px 600px at 80% -10%,#1a1d2b 0%,var(--bg) 55%) fixed;
  color:var(--txt); font-family:"Be Vietnam Pro",system-ui,sans-serif; font-size:14px; line-height:1.5;
}
.app{max-width:1240px;margin:0 auto;padding:22px 22px 40px;min-height:100vh;display:flex;flex-direction:column}

/* header */
.hdr{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;flex-wrap:wrap;gap:12px}
.brand{display:flex;align-items:center;gap:13px}
.brand .dot{width:34px;height:34px;border-radius:11px;background:linear-gradient(135deg,var(--indigo),var(--teal));box-shadow:0 0 24px rgba(100,112,255,.45)}
.hdr h1{font-family:"Space Grotesk",sans-serif;font-size:20px;margin:0;letter-spacing:.3px}
.hdr .sub{margin:0;color:var(--muted);font-size:12px;letter-spacing:.4px}
.privacy{display:flex;align-items:center;gap:7px;color:var(--teal);font-size:12.5px;font-weight:500;background:rgba(52,224,200,.08);border:1px solid rgba(52,224,200,.2);padding:7px 12px;border-radius:999px}

/* layout */
.layout{display:grid;grid-template-columns:300px 1fr;gap:20px;flex:1}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius)}

/* controls */
.controls{padding:18px;height:fit-content;position:sticky;top:18px}
.grp{padding:14px 0;border-bottom:1px solid var(--line)}
.grp:first-child{padding-top:0}
.grp:last-of-type{border-bottom:none}
.lbl{display:flex;justify-content:space-between;align-items:center;font-size:12.5px;font-weight:600;color:var(--muted);margin-bottom:9px;text-transform:uppercase;letter-spacing:.5px}
.val{color:var(--teal);font-weight:700;font-size:12px}

/* logo pick */
.logo-pick{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.logo-opt{background:var(--panel2);border:1.5px solid var(--line);border-radius:10px;padding:14px 10px;cursor:pointer;transition:.15s;display:flex;align-items:center;justify-content:center;min-height:54px;position:relative}
.logo-opt img{max-width:100%;max-height:24px;object-fit:contain;filter:none}
.logo-opt:hover{border-color:#3a3f52}
.logo-opt.is-active{border-color:var(--indigo);background:rgba(100,112,255,.1);box-shadow:0 0 0 1px var(--indigo) inset}
.logo-custom{grid-column:span 2;color:var(--muted);font-size:13px;font-weight:600}
.logo-custom.is-active{color:var(--txt)}

/* position grid */
.pos-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;aspect-ratio:3/2;background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:6px}
.pos-grid button{border:none;background:#23262f;border-radius:6px;cursor:pointer;transition:.12s;position:relative}
.pos-grid button:hover{background:#2e3340}
.pos-grid button::after{content:"";position:absolute;width:8px;height:8px;border-radius:2px;background:#4a4f63;top:50%;left:50%;transform:translate(-50%,-50%);transition:.12s}
.pos-grid button.is-active{background:rgba(100,112,255,.16)}
.pos-grid button.is-active::after{background:var(--indigo);box-shadow:0 0 10px var(--indigo)}

/* sliders */
.slider-row{margin-bottom:13px}
.slider-row:last-child{margin-bottom:0}
input[type=range]{width:100%;-webkit-appearance:none;appearance:none;height:5px;border-radius:99px;background:var(--panel2);outline:none;cursor:pointer}
input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;border-radius:50%;background:var(--indigo);border:2px solid #fff2;box-shadow:0 0 10px rgba(100,112,255,.6);cursor:pointer}
input[type=range]::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:var(--indigo);border:2px solid #fff2;cursor:pointer}

/* switch */
.switch{display:flex;align-items:center;gap:10px;cursor:pointer;font-size:13px;color:var(--txt)}
.switch input{display:none}
.switch .track{flex:0 0 auto;width:38px;height:21px;border-radius:99px;background:var(--panel2);border:1px solid var(--line);position:relative;transition:.18s}
.switch .track::after{content:"";position:absolute;width:15px;height:15px;border-radius:50%;background:var(--muted);top:2px;left:2px;transition:.18s}
.switch input:checked+.track{background:rgba(100,112,255,.25);border-color:var(--indigo)}
.switch input:checked+.track::after{background:var(--indigo);left:18px}
.tiled-extra{margin-top:13px}

/* segmented */
.seg{display:flex;background:var(--panel2);border:1px solid var(--line);border-radius:9px;padding:3px;gap:3px}
.seg button{flex:1;border:none;background:transparent;color:var(--muted);padding:8px;border-radius:7px;cursor:pointer;font-size:12.5px;font-weight:600;font-family:inherit;transition:.12s}
.seg button.is-active{background:var(--indigo);color:#fff}

.reset{width:100%;margin-top:16px;background:transparent;border:1px dashed var(--line);color:var(--muted);padding:9px;border-radius:9px;cursor:pointer;font-family:inherit;font-size:12.5px;transition:.15s}
.reset:hover{border-color:var(--indigo);color:var(--txt)}

/* stage */
.stage{display:flex;flex-direction:column;gap:16px}
.dropzone{border:2px dashed var(--line);border-radius:var(--radius);background:var(--panel);padding:40px 20px;text-align:center;cursor:pointer;transition:.18s}
.dropzone:hover,.dropzone.drag{border-color:var(--indigo);background:rgba(100,112,255,.05)}
.dz-inner{color:var(--muted);display:flex;flex-direction:column;align-items:center;gap:8px}
.dz-inner svg{color:var(--indigo)}
.dz-title{font-size:16px;font-weight:600;color:var(--txt);margin:4px 0 0}
.dz-sub{margin:0;font-size:13px}
.dz-sub .link{color:var(--teal);text-decoration:underline}

.gallery-head{display:flex;justify-content:space-between;align-items:center}
#count{color:var(--muted);font-weight:600;font-size:13px}
.gactions{display:flex;gap:10px}
button.ghost,button.primary{border-radius:9px;padding:9px 16px;cursor:pointer;font-family:inherit;font-weight:600;font-size:13px;border:1px solid var(--line);transition:.15s}
button.ghost{background:transparent;color:var(--muted)}
button.ghost:hover{color:var(--txt);border-color:#3a3f52}
button.primary{background:linear-gradient(135deg,var(--indigo),#7c6bff);color:#fff;border:none;box-shadow:0 6px 18px rgba(100,112,255,.35)}
button.primary:hover{filter:brightness(1.08)}
button.primary:disabled{opacity:.5;cursor:not-allowed;filter:none}

/* gallery */
.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:14px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;overflow:hidden;position:relative}
.card .thumb{width:100%;aspect-ratio:3/4;object-fit:cover;display:block;background:#0a0b0f}
.card .bar{display:flex;justify-content:space-between;align-items:center;padding:8px 10px;gap:8px}
.card .name{font-size:11.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}
.card .one{background:transparent;border:none;color:var(--teal);cursor:pointer;font-size:15px;padding:2px 4px}
.card .rm{position:absolute;top:8px;right:8px;width:26px;height:26px;border-radius:50%;background:rgba(0,0,0,.6);border:none;color:#fff;cursor:pointer;font-size:15px;line-height:1;opacity:0;transition:.15s;backdrop-filter:blur(4px)}
.card:hover .rm{opacity:1}

/* footer */
.ftr{display:flex;justify-content:space-between;align-items:center;margin-top:26px;padding-top:16px;border-top:1px solid var(--line);color:var(--muted);font-size:12px;flex-wrap:wrap;gap:8px}
.ftr .muted{color:#5a5f72}

@media(max-width:820px){
  .layout{grid-template-columns:1fr}
  .controls{position:static}
}
