/* ============================================================
   Shopimind Studio — design system (clair / sombre)
   Type : Bricolage Grotesque (display) · Hanken Grotesk (UI) · JetBrains Mono (code)
   Thème piloté par [data-theme="dark|light"] sur <html>.
   ============================================================ */

/* ---------- tokens partagés ---------- */
:root{
  --font-display:'Bricolage Grotesque',ui-sans-serif,system-ui,sans-serif;
  --font-ui:'Hanken Grotesk',ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;
  --font-mono:'JetBrains Mono',ui-monospace,"SF Mono",Consolas,monospace;
  --radius:14px; --radius-sm:9px; --radius-lg:18px;
  --t-fast:.14s cubic-bezier(.4,0,.2,1); --t:.22s cubic-bezier(.4,0,.2,1);
  --maxw:1480px;
  /* panneau code : sombre dans les deux thèmes (esthétique éditeur) */
  --code-bg:#0b0f17; --code-line:#1d2736; --code-txt:#c9d4e3;
  --json-k:#5eead4; --json-s:#7dd3fc; --json-n:#fbbf24; --json-b:#c4b5fd;
}

/* ---------- tokens : sombre (défaut) ---------- */
:root,[data-theme="dark"]{
  color-scheme:dark;
  --bg:#0a0e14; --bg-soft:#0d121a;
  --glow-1:rgba(20,184,166,.10); --glow-2:rgba(56,189,248,.06); --grain-op:.022;
  --surface:#10151e; --surface-2:#161d28; --surface-3:#1c2533;
  --line:#222b3a; --line-2:#2f3a4c; --line-strong:#3b4858;
  --txt:#e8ecf3; --dim:#9aa6b8; --faint:#667387;
  --primary:#14b8a6; --primary-2:#2dd4bf; --primary-press:#0d9488; --primary-soft:rgba(20,184,166,.14); --on-primary:#04201b;
  --image:#38bdf8; --image-soft:rgba(56,189,248,.15);
  --static:#a78bfa; --static-soft:rgba(167,139,250,.16);
  --dynamic:#34d399; --dynamic-soft:rgba(52,211,153,.15);
  --data:#fbbf24; --data-soft:rgba(245,158,11,.14);
  --danger:#fb7185; --danger-soft:rgba(251,113,133,.14);
  --ok:#34d399; --ok-soft:rgba(52,211,153,.15);
  --partner:#fb923c; --partner-soft:rgba(251,146,60,.15);
  --shopimind:#2dd4bf; --shopimind-soft:rgba(45,212,191,.15);
  --ring:rgba(20,184,166,.32);
  --checker-1:#161d28; --checker-2:#10151e;
  --shadow-sm:0 1px 2px rgba(0,0,0,.4);
  --shadow-md:0 8px 24px rgba(0,0,0,.45);
  --shadow-lg:0 22px 50px rgba(0,0,0,.55);
  --inset:inset 0 1px 0 rgba(255,255,255,.03);
}

/* ---------- tokens : clair ---------- */
[data-theme="light"]{
  color-scheme:light;
  --bg:#eef1f6; --bg-soft:#f5f7fb;
  --glow-1:rgba(13,148,136,.09); --glow-2:rgba(2,132,199,.055); --grain-op:.02;
  --surface:#ffffff; --surface-2:#f3f6fa; --surface-3:#e9eef5;
  --line:#e4e9f0; --line-2:#cdd6e2; --line-strong:#b1bdcd;
  --txt:#101a2b; --dim:#4a576b; --faint:#8794a6;
  --primary:#0d9488; --primary-2:#14b8a6; --primary-press:#0f766e; --primary-soft:rgba(13,148,136,.10); --on-primary:#ffffff;
  --image:#0284c7; --image-soft:rgba(2,132,199,.10);
  --static:#7c3aed; --static-soft:rgba(124,58,237,.10);
  --dynamic:#059669; --dynamic-soft:rgba(5,150,105,.11);
  --data:#b45309; --data-soft:rgba(217,119,6,.12);
  --danger:#e11d48; --danger-soft:rgba(225,29,72,.10);
  --ok:#059669; --ok-soft:rgba(5,150,105,.12);
  --partner:#ea580c; --partner-soft:rgba(234,88,12,.11);
  --shopimind:#0d9488; --shopimind-soft:rgba(13,148,136,.12);
  --ring:rgba(13,148,136,.22);
  --checker-1:#e9eef5; --checker-2:#f7f9fc;
  --shadow-sm:0 1px 2px rgba(16,24,40,.06);
  --shadow-md:0 10px 26px rgba(16,24,40,.10);
  --shadow-lg:0 22px 48px rgba(16,24,40,.16);
  --inset:inset 0 1px 0 rgba(255,255,255,.65);
}

/* ---------- base ---------- */
*{box-sizing:border-box}
::selection{background:var(--primary-soft);color:var(--txt)}
html,body{height:100%}
body{
  margin:0;background:var(--bg);color:var(--txt);
  font-family:var(--font-ui);font-size:14px;line-height:1.55;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  transition:background var(--t),color var(--t);
}
/* atmosphère : double halo radial + grain, fixés */
body::before{
  content:"";position:fixed;inset:0;z-index:-2;pointer-events:none;
  background:
    radial-gradient(1100px 620px at 12% -10%, var(--glow-1), transparent 60%),
    radial-gradient(900px 520px at 104% -2%, var(--glow-2), transparent 55%);
}
body::after{
  content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;opacity:var(--grain-op);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
code{font-family:var(--font-mono);font-size:.9em;background:var(--surface-2);border:1px solid var(--line);
  border-radius:5px;padding:1px 5px;color:var(--dim)}
.mono{font-family:var(--font-mono)}
.hidden{display:none !important}
.t-image{color:var(--image)} .t-static{color:var(--static)} .t-dynamic{color:var(--dynamic)}
.dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:currentColor;vertical-align:middle}

/* scrollbars */
*::-webkit-scrollbar{width:11px;height:11px}
*::-webkit-scrollbar-thumb{background:var(--line-2);border-radius:999px;border:3px solid var(--bg)}
*::-webkit-scrollbar-thumb:hover{background:var(--line-strong)}
*::-webkit-scrollbar-track{background:transparent}

/* ---------- topbar ---------- */
.topbar{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:18px;
  padding:13px 24px;background:color-mix(in srgb, var(--bg) 82%, transparent);
  backdrop-filter:blur(14px) saturate(1.2);-webkit-backdrop-filter:blur(14px) saturate(1.2);
  border-bottom:1px solid var(--line);transition:background var(--t),border-color var(--t)}
.brand{display:flex;align-items:center;gap:12px}
.brand__logo{width:36px;height:36px;border-radius:11px;display:grid;place-items:center;
  background:linear-gradient(140deg,var(--primary),var(--image));color:#fff;font-size:16px;
  box-shadow:0 6px 18px var(--primary-soft),var(--inset)}
.brand__title{font-family:var(--font-display);font-weight:700;font-size:16px;letter-spacing:-.02em;line-height:1}
.brand__sub{font-size:11.5px;color:var(--faint);margin-top:2px;letter-spacing:.01em}

/* segmented controls (typeswitch / modeswitch / seg) */
.typeswitch,.modeswitch,.seg{display:inline-flex;background:var(--surface-2);border:1px solid var(--line);
  border-radius:11px;padding:3px;gap:2px}
.typeswitch__btn,.modeswitch__btn,.seg__btn{border:none;background:transparent;color:var(--dim);
  font-family:var(--font-ui);font-weight:600;cursor:pointer;border-radius:8px;display:flex;align-items:center;gap:7px;
  transition:color var(--t-fast),background var(--t-fast),box-shadow var(--t-fast)}
.typeswitch__btn{font-size:13px;padding:6px 14px}
.modeswitch__btn{font-size:13px;font-weight:700;padding:7px 18px}
.seg__btn{font-size:11.5px;padding:5px 12px}
.typeswitch__btn:hover,.modeswitch__btn:hover,.seg__btn:hover{color:var(--txt)}
.typeswitch__btn.is-active,.seg__btn.is-active{background:var(--surface);color:var(--txt);box-shadow:var(--shadow-sm)}
.modeswitch__btn.is-active{background:linear-gradient(140deg,var(--primary),var(--image));color:#fff;box-shadow:0 4px 14px var(--primary-soft)}
.topbar__actions{margin-left:auto;display:flex;align-items:center;gap:9px}

/* theme toggle */
.theme-toggle{width:36px;height:36px;border-radius:10px;border:1px solid var(--line-2);background:var(--surface);
  color:var(--dim);display:grid;place-items:center;cursor:pointer;transition:color var(--t-fast),background var(--t-fast),border-color var(--t-fast)}
.theme-toggle:hover{color:var(--primary);border-color:var(--line-strong);background:var(--surface-2)}
.theme-toggle .ic{transition:transform var(--t)}
.theme-toggle:hover .ic{transform:rotate(18deg)}
[data-theme="dark"] .theme-toggle .ic-moon{display:none}
[data-theme="light"] .theme-toggle .ic-sun{display:none}

/* embed banner */
.embed-banner{display:flex;align-items:center;gap:10px;background:var(--primary-soft);
  border:1px solid color-mix(in srgb,var(--primary) 40%,transparent);border-radius:10px;padding:5px 8px 5px 13px}
.embed-banner__t{font-size:12px;color:var(--dim)} .embed-banner__t b{color:var(--txt);font-weight:700}

/* ---------- buttons ---------- */
.btn{font-family:var(--font-ui);border:1px solid var(--line-2);background:var(--surface);color:var(--txt);
  border-radius:9px;padding:7px 13px;font-size:12.5px;font-weight:600;cursor:pointer;white-space:nowrap;
  display:inline-flex;align-items:center;gap:6px;transition:all var(--t-fast);box-shadow:var(--shadow-sm)}
.btn:hover{background:var(--surface-2);border-color:var(--line-strong);transform:translateY(-1px);box-shadow:var(--shadow-md)}
.btn:active{transform:translateY(0);box-shadow:var(--shadow-sm)}
.btn--sm{padding:4px 10px;font-size:11.5px;border-radius:8px}
.btn--primary{background:var(--primary);border-color:transparent;color:var(--on-primary)}
.btn--primary:hover{background:var(--primary-2);color:var(--on-primary)}
.btn--ghost{background:transparent;box-shadow:none}
.btn--ghost:hover{background:var(--surface-2);box-shadow:none}
.btn[disabled]{opacity:.45;cursor:not-allowed;transform:none;box-shadow:none}

/* ---------- dropdown ---------- */
.dropdown{position:relative}
.dropdown__menu{position:absolute;right:0;top:calc(100% + 8px);min-width:244px;background:var(--surface);
  border:1px solid var(--line-2);border-radius:13px;padding:7px;box-shadow:var(--shadow-lg);display:none;z-index:40;transform-origin:top right}
.dropdown__menu.open{display:block;animation:popin var(--t) both}
@keyframes popin{from{opacity:0;transform:scale(.96) translateY(-4px)}to{opacity:1;transform:none}}
.dropdown__menu button{width:100%;text-align:left;border:none;background:transparent;color:var(--txt);
  padding:9px 11px;border-radius:9px;cursor:pointer;font-size:13px;font-weight:500;display:flex;flex-direction:column;gap:2px;
  transition:background var(--t-fast)}
.dropdown__menu button:hover{background:var(--surface-2)}
.dropdown__menu button small{color:var(--faint);font-size:11px;font-weight:400}
.dropdown__menu button[disabled]{opacity:.5;cursor:default}

/* ---------- layout ---------- */
.layout{display:grid;grid-template-columns:1fr 484px;gap:20px;max-width:var(--maxw);margin:0 auto;padding:24px 24px 90px;align-items:start}
.col{animation:fadeUp .45s var(--t) both}
.col--preview{position:sticky;top:80px;animation-delay:.06s}
@keyframes fadeUp{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media(max-width:1140px){.layout{grid-template-columns:1fr}.col--preview{position:static}}

/* ---------- subbar ---------- */
.subbar{display:flex;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap}
.subbar__lbl{font-size:11.5px;font-weight:700;color:var(--dim);text-transform:uppercase;letter-spacing:.05em}
.subbar__hint{font-size:11px;color:var(--faint)}

/* ---------- cards ---------- */
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);margin:0 0 18px;overflow:hidden;
  box-shadow:var(--shadow-sm);transition:border-color var(--t),box-shadow var(--t),background var(--t)}
.card:hover{border-color:var(--line-2)}
.card__head{display:flex;align-items:center;gap:11px;padding:14px 17px;border-bottom:1px solid var(--line);
  font-family:var(--font-display);font-weight:600;font-size:14.5px;letter-spacing:-.01em}
.card__head .head-em{color:var(--faint);font-style:normal;font-weight:400;font-size:12px;font-family:var(--font-ui)}
.card__ic{width:26px;height:26px;flex:none;border-radius:8px;background:var(--surface-2);border:1px solid var(--line);
  display:grid;place-items:center;font-size:12px;color:var(--primary);font-family:var(--font-ui);font-weight:700}
.card__body{padding:17px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:13px}
.grid2 .full{grid-column:1/-1}
@media(max-width:560px){.grid2{grid-template-columns:1fr}}

/* ---------- fields & inputs ---------- */
.fld{display:flex;flex-direction:column;gap:6px;font-size:12.5px}
.fld>span{color:var(--dim);font-weight:600}
.fld>span em{color:var(--faint);font-style:normal;font-weight:400}
.fld .req{color:var(--danger);font-weight:700}
/* `input:not([type])` : beaucoup de champs sont générés en JS sans attribut type
   (ils valent "text" mais ne matchent pas [type=text]) — on les couvre ici. */
input:not([type]),input[type=text],input[type=number],input[type=email],input[type=url],input[type=password],input[type=search],input[type=tel],textarea,select{
  width:100%;background:var(--surface-2);border:1px solid var(--line-2);border-radius:9px;color:var(--txt);
  padding:9px 11px;font-size:13px;font-family:var(--font-ui);outline:none;
  transition:border-color var(--t-fast),box-shadow var(--t-fast),background-color var(--t-fast)}
input::placeholder,textarea::placeholder{color:var(--faint)}
input:hover,textarea:hover,select:hover{border-color:var(--line-strong)}
input:focus,textarea:focus,select:focus{border-color:var(--primary);box-shadow:0 0 0 3.5px var(--ring);background-color:var(--surface)}
textarea{resize:vertical;font-family:var(--font-mono);font-size:12.5px;line-height:1.55;min-height:64px}
select{appearance:none;-webkit-appearance:none;cursor:pointer;padding-right:34px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='13' height='13' viewBox='0 0 24 24' fill='none' stroke='%2394a3b8' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 12px center;background-size:13px}
.hint{font-size:11.5px;color:var(--faint);margin:9px 0 0;line-height:1.55}

/* targets + flags = switches (toggles) */
.targets{display:flex;flex-wrap:wrap;gap:10px;margin-top:4px}
.targets label{display:inline-flex;align-items:center;gap:9px;font-size:12.5px;color:var(--txt);cursor:pointer;
  background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:7px 13px 7px 11px;
  transition:border-color var(--t-fast),background var(--t-fast)}
.targets label:hover{border-color:var(--line-2)}
.targets label:has(input:checked){border-color:color-mix(in srgb,var(--primary) 45%,transparent);background:var(--primary-soft)}
.inline{display:flex;gap:8px;align-items:center}.inline input{flex:1}
.kv{display:flex;align-items:center;gap:10px;font-size:12.5px;font-weight:600;color:var(--dim)}
.kv>span em{color:var(--faint);font-style:normal;font-weight:400}

/* custom checkbox (base) */
input[type=checkbox]{appearance:none;-webkit-appearance:none;flex:none;width:18px;height:18px;border-radius:6px;
  border:1.5px solid var(--line-strong);background:var(--surface-2);cursor:pointer;
  transition:background var(--t-fast),border-color var(--t-fast),box-shadow var(--t-fast)}
input[type=checkbox]:hover{border-color:var(--primary)}
input[type=checkbox]:checked{border-color:var(--primary);
  background:var(--primary) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 13l4 4L19 7'/%3E%3C/svg%3E") center/12px no-repeat}
input[type=checkbox]:focus-visible{outline:none;box-shadow:0 0 0 3.5px var(--ring)}

/* switch variant for boolean toggles */
.targets input[type=checkbox],.flagrow input[type=checkbox]{
  width:38px;height:22px;border-radius:999px;border:1px solid var(--line-strong);background:var(--surface-3);
  background-image:
    radial-gradient(circle 7px at center,#fff 100%,#0000 100%),
    radial-gradient(circle 8px at center,rgba(2,8,20,.22) 100%,#0000 100%);
  background-repeat:no-repeat;background-size:16px 16px,16px 16px;background-position:4px center;
  box-shadow:var(--inset);transition:background-color var(--t),border-color var(--t),background-position var(--t)}
.targets input[type=checkbox]:checked,.flagrow input[type=checkbox]:checked{
  background-color:var(--primary);border-color:var(--primary);background-position:18px center}

/* ---------- config field builder ---------- */
.fields{display:flex;flex-direction:column;gap:11px}
.empty{color:var(--faint);font-size:12.5px;text-align:center;padding:20px;border:1.5px dashed var(--line-2);border-radius:11px;background:var(--surface-2)}
.fitem{border:1px solid var(--line);border-radius:11px;background:var(--surface-2);overflow:hidden;transition:border-color var(--t-fast)}
.fitem:hover{border-color:var(--line-2)}
.fitem__bar{display:flex;align-items:center;gap:9px;padding:9px 11px;background:var(--surface-3);border-bottom:1px solid var(--line)}
.fitem__bar .key{font-family:var(--font-mono);font-weight:700;font-size:12px;color:var(--txt)}
.fitem__bar .ty{font-size:10px;font-weight:700;padding:2px 8px;border-radius:6px;background:var(--static-soft);color:var(--static);text-transform:uppercase;letter-spacing:.03em}
.fitem__bar .sec{font-size:10.5px;color:var(--faint)}
.fitem__bar .req-dot{font-size:10.5px;color:var(--danger);font-weight:700}
.fitem__bar .sp{margin-left:auto;display:flex;gap:5px}
.iconbtn{border:1px solid var(--line-2);background:var(--surface);color:var(--dim);border-radius:7px;width:26px;height:26px;
  cursor:pointer;font-size:12px;display:grid;place-items:center;line-height:1;transition:all var(--t-fast)}
.iconbtn:hover{background:var(--surface-2);color:var(--txt);border-color:var(--line-strong)}
.iconbtn.del:hover{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 40%,transparent);background:var(--danger-soft)}
.fitem__grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:12px}
.fitem__grid .full{grid-column:1/-1}
.flagrow{display:flex;gap:18px;flex-wrap:wrap;align-items:center}
.flagrow label{display:inline-flex;align-items:center;gap:8px;font-size:12px;color:var(--dim);cursor:pointer}
.opts{display:flex;flex-direction:column;gap:7px}.opt{display:flex;gap:7px;align-items:center}.opt input{flex:1}

/* sub-group inside a field */
.subgroup{grid-column:1/-1;border:1px dashed var(--line-2);border-radius:9px;padding:10px 11px;background:var(--surface)}
.subgroup__h{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--faint);font-weight:700;margin-bottom:9px}
.subgroup__grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:9px}
@media(max-width:560px){.subgroup__grid{grid-template-columns:1fr}}

/* ---------- webhooks ---------- */
.whlist{display:flex;flex-direction:column;gap:8px}
.whrow{display:flex;gap:8px;align-items:center}.whrow .ev{width:190px;flex:none}.whrow .url{flex:1}

/* ---------- steps editor ---------- */
.cfgbody{margin-top:14px;display:flex;flex-direction:column;gap:13px}
.step{border:1px solid var(--line);border-radius:12px;background:var(--surface-2);overflow:hidden}
.step__head{display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--surface-3);border-bottom:1px solid var(--line)}
.step__head .num{width:23px;height:23px;flex:none;border-radius:50%;background:var(--primary);color:var(--on-primary);
  font-size:11px;font-weight:700;display:grid;place-items:center}
.step__head .step-key{font-family:var(--font-mono);font-size:12px;font-weight:700;color:var(--txt)}
.step__head .sp{margin-left:auto;display:flex;gap:5px}
.step__body{padding:13px;display:flex;flex-direction:column;gap:12px}
.step__meta{display:grid;grid-template-columns:1fr 1fr;gap:10px}.step__meta .full{grid-column:1/-1}
.step__fields{display:flex;flex-direction:column;gap:10px;border-top:1px solid var(--line);padding-top:12px}
.step__fields .kv{margin:0}

/* ---------- widgets list (integration) ---------- */
.wlist{display:flex;flex-direction:column;gap:9px}
.wcard{display:flex;align-items:center;gap:12px;border:1px solid var(--line);border-radius:11px;background:var(--surface-2);
  padding:11px 13px;transition:border-color var(--t-fast),transform var(--t-fast),box-shadow var(--t-fast)}
.wcard:hover{border-color:var(--line-2);transform:translateY(-1px);box-shadow:var(--shadow-md)}
.wcard__ic{width:32px;height:32px;flex:none;border-radius:9px;background:var(--surface-3);border:1px solid var(--line);
  display:grid;place-items:center;overflow:hidden}
.wcard__ic img{width:20px;height:20px;object-fit:contain}
.wcard__main{min-width:0;flex:1}
.wcard__name{font-weight:650;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wcard__meta{display:flex;align-items:center;gap:8px;margin-top:4px;flex-wrap:wrap}
.wtag{font-size:10px;font-weight:700;padding:2px 8px;border-radius:6px;text-transform:uppercase;letter-spacing:.03em}
.wtag.image{background:var(--image-soft);color:var(--image)}
.wtag.static_html{background:var(--static-soft);color:var(--static)}
.wtag.dynamic_html{background:var(--dynamic-soft);color:var(--dynamic)}
.wcard__tg{font-size:10.5px;color:var(--faint)}
.wcard__sp{display:flex;gap:6px}

/* kind badge */
.tag-kind{font-size:10.5px;font-weight:700;padding:2px 9px;border-radius:7px}
.tag-kind.partner{background:var(--partner-soft);color:var(--partner)}
.tag-kind.shopimind{background:var(--shopimind-soft);color:var(--shopimind)}

/* ---------- preview (widget) ---------- */
.prev-tabs{margin-left:auto;display:flex;gap:5px}
.prev-tabs button{border:1px solid var(--line);background:var(--surface-2);color:var(--dim);border-radius:8px;
  padding:4px 10px;font-size:11px;font-weight:600;cursor:pointer;transition:all var(--t-fast)}
.prev-tabs button:hover{color:var(--txt)}
.prev-tabs button.is-active{background:var(--primary);color:var(--on-primary);border-color:transparent}
.stage{background:repeating-conic-gradient(var(--checker-1) 0% 25%,var(--checker-2) 0% 50%) 50%/20px 20px;
  border:1px solid var(--line);border-radius:12px;min-height:160px;padding:16px;display:grid;place-items:center;overflow:auto}
.stage__inner{max-width:100%}
.stage__inner img{max-width:100%;height:auto;display:block;border-radius:6px;box-shadow:var(--shadow-md)}
.stage iframe{width:100%;border:none;background:#fff;border-radius:8px}
.stage .ph{color:var(--faint);font-size:12.5px;text-align:center}
.prev-note{font-size:11.5px;color:var(--faint);margin-top:10px;word-break:break-all}
.prev-note .url{color:var(--image)} .prev-note .bad{color:var(--danger)}

/* ---------- merchant panel (widget) ---------- */
.mpanel{display:flex;flex-direction:column;gap:14px}
.mgroup{border:1px solid var(--line);border-radius:11px;overflow:hidden}
.mgroup__h{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--faint);font-weight:700;
  padding:9px 12px;background:var(--surface-3);border-bottom:1px solid var(--line)}
.mgroup__b{padding:12px;display:flex;flex-direction:column;gap:11px}
.mrow{display:flex;flex-direction:column;gap:6px}
.mrow>span{font-size:12px;color:var(--dim);font-weight:600}
.mrow .colorwrap{display:flex;gap:9px;align-items:center}
.mrow input[type=color]{width:42px;height:34px;padding:3px;border-radius:9px;background:var(--surface-2);border:1px solid var(--line-2);cursor:pointer}
.mrow input[type=color]::-webkit-color-swatch-wrapper{padding:0}
.mrow input[type=color]::-webkit-color-swatch{border:none;border-radius:6px}
.mrow .varbadge{font-size:10px;color:var(--data);border:1px dashed color-mix(in srgb,var(--data) 45%,transparent);
  background:var(--data-soft);border-radius:6px;padding:2px 7px;align-self:flex-start}

/* ---------- install wizard preview (integration) ---------- */
.wiz{display:flex;gap:16px;min-height:170px}
.wiz__rail{width:158px;flex:none;display:flex;flex-direction:column;gap:3px}
.wiz__step{display:flex;align-items:flex-start;gap:10px;padding:9px;border-radius:10px;cursor:pointer;border:1px solid transparent;
  transition:background var(--t-fast),border-color var(--t-fast)}
.wiz__step:hover{background:var(--surface-2)}
.wiz__step.is-active{background:var(--surface-2);border-color:var(--line-2)}
.wiz__step.is-locked{opacity:.5;cursor:not-allowed}
.wiz__step .n{width:23px;height:23px;flex:none;border-radius:50%;display:grid;place-items:center;
  font-size:11px;font-weight:700;background:var(--surface);border:1px solid var(--line-2);color:var(--dim);transition:all var(--t-fast)}
.wiz__step.is-active .n{background:var(--primary);border-color:transparent;color:var(--on-primary)}
.wiz__step.is-done .n{background:var(--ok);border-color:transparent;color:#04130f}
.wiz__step .lbl{font-size:12px;font-weight:600;color:var(--txt);line-height:1.35}
.wiz__step .sub{font-size:10.5px;color:var(--faint)}
.wiz__main{flex:1;min-width:0;border-left:1px solid var(--line);padding-left:16px}
.wiz__title{font-family:var(--font-display);font-size:14px;font-weight:600;margin-bottom:4px}
.wiz__desc{font-size:11.5px;color:var(--faint);margin-bottom:14px}
.wiz__form{display:flex;flex-direction:column;gap:12px}
.wfield{display:flex;flex-direction:column;gap:6px}
.wfield>label{font-size:12px;color:var(--dim);font-weight:600}
.wfield>label .req{color:var(--danger)}
.wfield .help{font-size:10.5px;color:var(--faint)}
.wfield .multi{display:flex;flex-direction:column;gap:7px;border:1px solid var(--line);border-radius:9px;padding:9px;background:var(--surface-2)}
.wfield .multi label{display:inline-flex;align-items:center;gap:8px;font-size:12px;color:var(--txt);cursor:pointer}
.wfield .chk{display:inline-flex;align-items:center;gap:9px;font-size:12.5px;color:var(--txt);cursor:pointer}
.wiz__nav{display:flex;align-items:center;gap:9px;margin-top:16px;border-top:1px solid var(--line);padding-top:13px}
.wiz__nav .spacer{flex:1}
.wiz__count{font-size:11px;color:var(--faint)}
.wiz__flat{padding-left:0;border-left:none}
.wiz__ph{color:var(--faint);font-size:12.5px;text-align:center;padding:26px}
.wiz__validated{font-size:11px;color:var(--ok);display:inline-flex;align-items:center;gap:6px}

/* ---------- json + warnings ---------- */
.badge{margin-left:auto;font-size:10px;font-weight:700;padding:3px 10px;border-radius:999px;
  background:var(--ok-soft);color:var(--ok);text-transform:uppercase;letter-spacing:.04em}
.badge.bad{background:var(--danger-soft);color:var(--danger)}
.warnings{display:flex;flex-direction:column;gap:7px;margin-bottom:11px}
.warnings:empty{display:none}
.warn{font-size:11.5px;padding:8px 11px;border-radius:9px;border-left:3px solid var(--data);background:var(--data-soft);color:var(--data)}
.warn.err{border-color:var(--danger);background:var(--danger-soft);color:var(--danger)}
.json{background:var(--code-bg);border:1px solid var(--code-line);border-radius:11px;padding:14px 15px;margin:11px 0 0;
  font-family:var(--font-mono);font-size:11.5px;line-height:1.6;max-height:540px;overflow:auto;white-space:pre;color:var(--code-txt)}
.json::-webkit-scrollbar-thumb{border-color:var(--code-bg)}
.json .k{color:var(--json-k)}.json .s{color:var(--json-s)}.json .n{color:var(--json-n)}.json .b{color:var(--json-b)}

/* ---------- toast ---------- */
.toast{position:fixed;bottom:26px;left:50%;transform:translateX(-50%) translateY(20px);
  background:var(--surface);border:1px solid var(--line-2);color:var(--txt);padding:11px 19px;border-radius:12px;
  font-size:13px;font-weight:500;opacity:0;pointer-events:none;transition:opacity var(--t),transform var(--t);
  box-shadow:var(--shadow-lg);z-index:50}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* ---------- a11y / motion ---------- */
.btn:focus-visible,.iconbtn:focus-visible,.theme-toggle:focus-visible,.typeswitch__btn:focus-visible,
.modeswitch__btn:focus-visible,.seg__btn:focus-visible,.prev-tabs button:focus-visible,
.dropdown__menu button:focus-visible,.wiz__step:focus-visible{outline:none;box-shadow:0 0 0 3.5px var(--ring)}
@media (prefers-reduced-motion: reduce){*{animation-duration:.001ms !important;transition-duration:.001ms !important}}
