/* ===== RESET ===== */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}

/* ===== TOKENS ===== */
:root{
  --bg:#eef2f7;
  --surface:#fff;
  --surface2:#f4f7fb;
  --border:rgba(0,0,0,0.08);
  --border2:rgba(0,0,0,0.15);
  --text:#111827;
  --text-muted:#6b7280;
  --text-dim:#9ca3af;
  --accent:#22c55e;
  --accent-dk:#16a34a;
  --accent-lt:#dcfce7;
  --accent2:#3b82f6;
  --red:#ef4444;
  --shadow-sm:0 1px 3px rgba(0,0,0,.08);
  --shadow:0 4px 16px rgba(0,0,0,.1);
  --shadow-lg:0 8px 32px rgba(0,0,0,.12);
  --radius:16px;
  --radius-sm:10px;
  --radius-xs:6px;
  --header-bg:rgba(255,255,255,.88);
}
[data-theme="dark"]{
  --bg:#0f1117;
  --surface:#1a1d27;
  --surface2:#222536;
  --border:rgba(255,255,255,.08);
  --border2:rgba(255,255,255,.15);
  --text:#e8edf5;
  --text-muted:#8892a4;
  --text-dim:#4a536a;
  --shadow-sm:0 1px 3px rgba(0,0,0,.4);
  --shadow:0 4px 16px rgba(0,0,0,.4);
  --shadow-lg:0 8px 32px rgba(0,0,0,.5);
  --header-bg:rgba(26,29,39,.9);
}

/* ===== BASE ===== */
html{font-size:15px;scroll-behavior:smooth}
body{
  font-family:'Inter',system-ui,sans-serif;
  background:var(--bg);
  color:var(--text);
  min-height:100vh;
  display:flex;
  flex-direction:column;
  transition:background .3s,color .3s;
}
::-webkit-scrollbar{width:5px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--border2);border-radius:99px}

/* ===== HEADER ===== */
.header{
  display:flex;align-items:center;justify-content:space-between;
  padding:0 2rem;height:60px;
  background:var(--header-bg);
  backdrop-filter:blur(12px);
  border-bottom:1px solid var(--border);
  position:sticky;top:0;z-index:100;
  box-shadow:var(--shadow-sm);
}
.header-brand{display:flex;align-items:center;gap:10px}
.brand-icon{
  width:36px;height:36px;border-radius:10px;
  background:linear-gradient(135deg,var(--accent),var(--accent2));
  display:flex;align-items:center;justify-content:center;color:#fff;
  flex-shrink:0;
}
.brand-name{font-size:1rem;font-weight:700;color:var(--text)}
.brand-tagline{font-size:.68rem;color:var(--text-muted);margin-top:1px}
.header-actions{display:flex;align-items:center;gap:8px}
.theme-toggle,.lang-toggle{
  display:flex;gap:3px;background:var(--surface2);
  border-radius:99px;padding:3px;border:1px solid var(--border);
}
.theme-opt,.lang-btn{
  background:none;border:none;color:var(--text-muted);
  padding:4px 11px;border-radius:99px;font-size:.72rem;
  font-weight:600;cursor:pointer;font-family:inherit;
  transition:all .2s;white-space:nowrap;
}
.theme-opt.active,.lang-btn.active{
  background:linear-gradient(120deg,var(--accent),var(--accent2));
  color:#fff;
}
.theme-opt:not(.active):hover,.lang-btn:not(.active):hover{color:var(--text)}

/* ===== WORKSPACE ===== */
.workspace{
  display:grid;
  grid-template-columns:1fr 380px;
  gap:1.5rem;
  max-width:1200px;
  margin:0 auto;
  padding:1.5rem 1.5rem;
  flex:1;
  align-items:start;
  width:100%;
}

/* ===== EDITOR COLUMN ===== */
.editor-col{display:flex;flex-direction:column;gap:1rem}

/* ===== STEP CARD ===== */
.step-card{
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:var(--radius);
  padding:1.25rem;
  box-shadow:var(--shadow-sm);
}
.step-head{display:flex;align-items:flex-start;gap:12px;margin-bottom:1rem}
.step-num{
  width:30px;height:30px;border-radius:50%;
  background:linear-gradient(135deg,var(--accent),var(--accent2));
  color:#fff;font-weight:700;font-size:.85rem;
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
}
.step-info h2{font-size:.95rem;font-weight:700;color:var(--text);margin-bottom:2px}
.step-info p{font-size:.72rem;color:var(--text-muted)}

/* ===== TYPE TABS (CATEGORIZED) ===== */
.type-tabs{
  display:flex;flex-direction:column;
  gap:6px;margin-bottom:1rem;
  background:var(--surface2);border:1px solid var(--border);
  border-radius:var(--radius-sm);padding:8px;
}
.type-group{
  display:flex;align-items:center;flex-wrap:wrap;gap:3px;
}
.type-group-label{
  font-size:.58rem;font-weight:700;text-transform:uppercase;
  letter-spacing:.07em;color:var(--text-dim);
  min-width:52px;flex-shrink:0;padding-right:2px;
}
.type-tab{
  display:flex;align-items:center;gap:4px;
  background:none;border:none;color:var(--text-muted);
  padding:4px 9px;border-radius:7px;font-size:.72rem;
  font-weight:500;cursor:pointer;font-family:inherit;
  transition:all .2s;white-space:nowrap;
}
.type-tab.active{background:var(--accent);color:#fff;font-weight:600}
.type-tab:not(.active):hover{background:var(--border);color:var(--text)}
.type-tab-wa.active{background:#25d366;color:#fff}
.type-tab-wa:not(.active):hover{background:rgba(37,211,102,.12);color:#25d366}

/* ===== PRESET LOGO GRID ===== */
.preset-logo-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:5px}
.preset-logo-card{
  background:var(--surface2);border:1.5px solid var(--border);
  border-radius:var(--radius-xs);padding:6px 4px;cursor:pointer;
  display:flex;flex-direction:column;align-items:center;gap:3px;
  transition:all .2s;
}
.preset-logo-card:hover{border-color:var(--accent)}
.preset-logo-card.active{border-color:var(--accent);background:rgba(34,197,94,.08)}
.preset-logo-card svg{width:24px;height:24px}
.preset-logo-card span{font-size:.58rem;color:var(--text-muted);text-align:center}
.preset-logo-card.active span{color:var(--accent)}

/* ===== CONTENT PANELS ===== */
.content-panels{}
.content-panel{display:none}
.content-panel.active{display:block}

/* ===== FIELDS ===== */
.field{display:flex;flex-direction:column;gap:5px;margin-bottom:.65rem}
.field:last-child{margin-bottom:0}
.field>label{font-size:.75rem;color:var(--text-muted);font-weight:500}
.text-input{
  background:var(--surface2);border:1px solid var(--border);
  border-radius:var(--radius-xs);color:var(--text);
  padding:9px 12px;font-size:.86rem;font-family:inherit;
  outline:none;transition:border-color .2s,box-shadow .2s;width:100%;
}
.text-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(34,197,94,.15)}
.text-input::placeholder{color:var(--text-dim)}
textarea.text-input{resize:vertical;min-height:80px}
.hint{font-size:.68rem;color:var(--text-dim)}
.hint-inline{font-size:.7rem;color:var(--text-dim);font-weight:400}
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:.65rem}

/* ===== DESIGN TABS ===== */
.design-tabs{
  display:flex;gap:2px;border-bottom:2px solid var(--border);
  margin-bottom:1rem;
}
.dtab{
  display:flex;align-items:center;gap:6px;
  background:none;border:none;color:var(--text-muted);
  padding:8px 14px;font-size:.78rem;font-weight:600;
  cursor:pointer;font-family:inherit;border-bottom:2px solid transparent;
  margin-bottom:-2px;transition:all .2s;
}
.dtab.active{color:var(--accent);border-bottom-color:var(--accent)}
.dtab:not(.active):hover{color:var(--text)}
.dtab svg{flex-shrink:0}

/* ===== DESIGN PANELS ===== */
.design-panel{display:flex;flex-direction:column;gap:.75rem}
.design-panel.hidden{display:none}
.sub-section{display:flex;flex-direction:column;gap:.5rem}
.sub-label{font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted)}

/* ===== STYLE GRID ===== */
.style-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:5px}
.style-card{
  background:var(--surface2);border:1.5px solid var(--border);
  border-radius:var(--radius-xs);padding:8px 4px 6px;cursor:pointer;
  display:flex;flex-direction:column;align-items:center;gap:4px;
  transition:all .2s;user-select:none;
}
.style-card:hover{border-color:var(--accent)}
.style-card.active{border-color:var(--accent);background:rgba(34,197,94,.08)}
.style-card svg,.style-card .frame-thumb{width:28px;height:28px;color:var(--accent)}
.style-card span{font-size:.6rem;color:var(--text-muted);text-align:center;line-height:1.2}
.style-card.active span{color:var(--accent)}

/* Frame thumbnails */
.frame-thumb{display:flex;align-items:center;justify-content:center}
.frame-grid{grid-template-columns:repeat(3,1fr)}

/* ===== SLIDERS ===== */
.slider{
  -webkit-appearance:none;appearance:none;
  width:100%;height:4px;border-radius:99px;
  background:var(--surface2);outline:none;cursor:pointer;
  background-image:linear-gradient(to right,var(--accent) 0%,var(--accent) var(--pct,50%),var(--surface2) var(--pct,50%));
}
.slider::-webkit-slider-thumb{
  -webkit-appearance:none;width:15px;height:15px;border-radius:50%;
  background:#fff;box-shadow:0 0 0 3px var(--accent);cursor:pointer;
  border:none;transition:transform .15s;
}
.slider::-webkit-slider-thumb:hover{transform:scale(1.15)}

/* ===== SEG CTRL ===== */
.seg-ctrl{
  display:flex;gap:3px;background:var(--surface2);
  border-radius:var(--radius-xs);padding:3px;border:1px solid var(--border);
}
.seg{
  flex:1;background:none;border:none;color:var(--text-muted);
  padding:5px 6px;border-radius:5px;font-size:.76rem;
  font-weight:600;cursor:pointer;font-family:inherit;transition:all .2s;
}
.seg.active{background:var(--accent);color:#fff}
.seg:not(.active):hover{color:var(--text);background:var(--border)}

/* ===== BADGE ===== */
.badge{
  background:var(--accent-lt);color:var(--accent-dk);
  border-radius:6px;padding:1px 7px;font-size:.68rem;
  font-weight:600;
}
[data-theme="dark"] .badge{background:rgba(34,197,94,.15);color:var(--accent)}

/* ===== COLOR BLOCK ===== */
.color-block{
  background:var(--surface2);border:1px solid var(--border);
  border-radius:var(--radius-xs);padding:10px 12px;
  display:flex;flex-direction:column;gap:8px;
}
.color-block-header{
  display:flex;align-items:center;justify-content:space-between;
  font-size:.76rem;color:var(--text-muted);font-weight:500;
}
.cpair{display:flex;align-items:center;gap:8px}
.cp{
  width:36px;height:36px;border:2px solid var(--border2);
  border-radius:var(--radius-xs);cursor:pointer;padding:2px;
  background:none;outline:none;flex-shrink:0;
}
.cp::-webkit-color-swatch-wrapper{padding:0}
.cp::-webkit-color-swatch{border:none;border-radius:4px}
.hex{
  background:var(--surface);border:1px solid var(--border);
  border-radius:var(--radius-xs);color:var(--text);
  padding:6px 9px;font-size:.8rem;font-family:'Courier New',monospace;
  outline:none;width:96px;transition:border-color .2s;
}
.hex:focus{border-color:var(--accent)}
.grad-row{display:flex;align-items:center;gap:8px}
.grad-row svg{color:var(--text-muted);flex-shrink:0}

/* ===== TOGGLE ===== */
.toggle{display:flex;align-items:center;gap:6px;cursor:pointer}
.toggle input{display:none}
.track{
  width:30px;height:17px;background:var(--surface);
  border:1px solid var(--border2);border-radius:99px;
  position:relative;transition:background .2s;flex-shrink:0;
}
.track::after{
  content:'';position:absolute;width:11px;height:11px;
  border-radius:50%;background:var(--text-muted);top:2px;left:2px;transition:all .2s;
}
.toggle input:checked+.track{background:var(--accent);border-color:var(--accent)}
.toggle input:checked+.track::after{left:15px;background:#fff}
.toggle span:last-child{font-size:.7rem;color:var(--text-muted)}

/* ===== CHECKBOX ===== */
.check-label{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:.76rem;color:var(--text-muted)}
.check-label input{display:none}
.check-box{
  width:16px;height:16px;border:1.5px solid var(--border2);
  border-radius:4px;background:var(--surface);flex-shrink:0;
  display:flex;align-items:center;justify-content:center;transition:all .15s;
}
.check-label input:checked+.check-box{background:var(--accent);border-color:var(--accent)}
.check-label input:checked+.check-box::after{
  content:'';width:8px;height:4px;
  border-left:2px solid #fff;border-bottom:2px solid #fff;
  transform:rotate(-45deg) translateY(-1px);display:block;
}

/* ===== UPLOAD ===== */
.upload-area{
  border:1.5px dashed var(--border2);border-radius:var(--radius-sm);
  min-height:90px;display:flex;align-items:center;justify-content:center;
  cursor:pointer;transition:all .2s;position:relative;overflow:hidden;
}
.upload-area:hover{border-color:var(--accent);background:rgba(34,197,94,.04)}
.upload-area.dragover{border-color:var(--accent2);background:rgba(59,130,246,.08)}
#upload-placeholder{display:flex;flex-direction:column;align-items:center;gap:6px;color:var(--text-muted);pointer-events:none}
#upload-placeholder svg{color:var(--text-dim)}
#upload-placeholder span{font-size:.78rem}
#upload-placeholder small{font-size:.66rem;color:var(--text-dim)}
#upload-preview{position:relative;padding:8px}
#logo-img{max-height:65px;max-width:100%;border-radius:5px;display:block}
#remove-logo{
  position:absolute;top:4px;right:4px;
  background:rgba(239,68,68,.9);border:none;border-radius:50%;
  width:18px;height:18px;display:flex;align-items:center;
  justify-content:center;cursor:pointer;color:#fff;transition:transform .15s;
}
#remove-logo:hover{transform:scale(1.15)}
#logo-opts{display:flex;flex-direction:column;gap:8px;padding-top:4px}

/* ===== PREVIEW COLUMN ===== */
.preview-col{}
.preview-sticky{position:sticky;top:76px}
.preview-card{
  background:var(--surface);border:1px solid var(--border);
  border-radius:var(--radius);padding:1.5rem;
  box-shadow:var(--shadow);
  display:flex;flex-direction:column;align-items:center;gap:1rem;
}
.preview-top{width:100%;display:flex;justify-content:center}
.status-pill{
  display:flex;align-items:center;gap:7px;
  background:rgba(34,197,94,.1);border:1px solid rgba(34,197,94,.25);
  border-radius:99px;padding:4px 13px;
  font-size:.72rem;font-weight:600;color:var(--accent);
}
.status-pill.empty{background:rgba(107,114,128,.1);border-color:rgba(107,114,128,.2);color:var(--text-muted)}
.status-dot{width:7px;height:7px;border-radius:50%;background:var(--accent);box-shadow:0 0 6px var(--accent)}
.status-pill.empty .status-dot{background:var(--text-dim);box-shadow:none}

/* ===== QR FRAME SYSTEM ===== */
.qr-frame-outer{display:flex;align-items:center;justify-content:center;width:100%}
.qr-frame{
  display:inline-flex;flex-direction:column;align-items:center;
  position:relative;
}
.qr-frame canvas,.qr-frame svg{display:block;border-radius:4px}
.qr-frame.f-simple{border:3px solid var(--fc,#000);padding:8px;border-radius:6px}
.qr-frame.f-bold{border:6px solid var(--fc,#000);padding:8px;border-radius:6px}
.qr-frame.f-rounded{border:3px solid var(--fc,#000);padding:12px;border-radius:18px}
.qr-frame.f-dotted{border:3px dashed var(--fc,#000);padding:10px;border-radius:6px}
.qr-frame.f-double{outline:3px solid var(--fc,#000);border:2px solid var(--fc,#000);padding:8px;border-radius:4px;outline-offset:4px}
/* ---- Decorative corner frames ---- */
.qr-frame.f-heart-corners,
.qr-frame.f-star-corners,
.qr-frame.f-flower-corners,
.qr-frame.f-diamond-corners,
.qr-frame.f-butterfly{
  border:2px solid var(--fc,#000);
  padding:22px;border-radius:8px;
  position:relative;
}

/* Corner deco elements */
.frame-deco{
  position:absolute;font-size:18px;line-height:1;
  pointer-events:none;user-select:none;
}
.frame-deco-tl{top:2px;left:2px}
.frame-deco-tr{top:2px;right:2px}
.frame-deco-bl{bottom:2px;left:2px}
.frame-deco-br{bottom:2px;right:2px}
.qr-frame.f-scan-bottom{
  border:3px solid var(--fc,#000);
  padding:8px 8px 0;border-radius:10px;
  overflow:hidden;
}
.qr-frame.f-scan-top{
  border:3px solid var(--fc,#000);
  padding:0 8px 8px;border-radius:10px;
  overflow:hidden;flex-direction:column-reverse;
}
.qr-frame.f-bubble{
  border:3px solid var(--fc,#000);
  padding:10px 10px 0;border-radius:50%;
  overflow:hidden;
}
.frame-label{
  background:var(--fc,#000);
  color:var(--flc,#fff);
  font-size:.7rem;font-weight:700;letter-spacing:.1em;
  text-align:center;padding:5px 14px;width:100%;
}
.qr-frame.f-none .frame-label{display:none!important}
.preview-url{
  display:flex;align-items:center;gap:6px;
  font-size:.72rem;color:var(--text-muted);max-width:100%;
}
.preview-url svg{flex-shrink:0;color:var(--accent2)}
#url-display{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:270px}

/* ===== DOWNLOAD BUTTONS ===== */
.dl-btns{display:flex;gap:8px;width:100%}
.dl-btn{
  flex:1;display:flex;align-items:center;justify-content:center;
  gap:6px;padding:10px 14px;border:none;border-radius:var(--radius-sm);
  font-size:.83rem;font-weight:600;font-family:inherit;cursor:pointer;transition:all .2s;
}
.dl-btn.primary{background:linear-gradient(120deg,var(--accent),var(--accent2));color:#fff}
.dl-btn.primary:hover{opacity:.88;transform:translateY(-1px)}
.dl-btn.secondary{background:var(--surface2);border:1px solid var(--border2);color:var(--text-muted)}
.dl-btn.secondary:hover{color:var(--text);border-color:var(--accent);transform:translateY(-1px)}

/* ===== FOOTER ===== */
.footer{
  border-top:1px solid var(--border);padding:.55rem 2rem;
  text-align:center;display:flex;flex-direction:column;gap:2px;
  background:var(--header-bg);
}
.footer p{font-size:.73rem;color:var(--text-dim)}
.footer-link{color:var(--accent);text-decoration:none;font-weight:600;transition:color .2s}
.footer-link:hover{color:var(--accent-dk)}
.footer-note{font-size:.66rem!important}

/* ===== UTILS ===== */
.hidden{display:none!important}

/* ===== RESPONSIVE ===== */
@media(max-width:1023px){
  .workspace{
    grid-template-columns:1fr;
    padding:1rem;
  }
  .preview-col{order:-1}
  .preview-sticky{position:static}
  .preview-card{flex-direction:row;flex-wrap:wrap;justify-content:center;gap:.75rem;padding:1rem}
  .preview-top{width:auto}
  .dl-btns{width:auto;flex-direction:column}
}
@media(max-width:640px){
  .header{padding:0 1rem}
  .brand-tagline,.lang-toggle{display:none}
  .workspace{padding:.75rem}
  .step-card{padding:1rem}
  .preview-card{flex-direction:column}
  .dl-btns{flex-direction:row;width:100%}
  .two-col{grid-template-columns:1fr}
  .type-tabs{gap:2px}
  .type-tab{padding:5px 7px;font-size:.7rem}
  .style-grid{grid-template-columns:repeat(3,1fr)}
  .frame-grid{grid-template-columns:repeat(3,1fr)}
}
@media(max-width:400px){
  .type-tab span,.type-tab svg+*{display:none}
  .type-tab{padding:8px}
  .dtab span{display:none}
  .dtab{padding:8px}
}
