/* =================================================================
   SITW — "Armá tu sitio ideal" · constructor visual PRO
   Cockpit de 3 paneles (paleta · lienzo · inspector).
   El CHROME del editor es violeta/pixel (identidad de "la red").
   El LIENZO renderiza un SITIO REAL (vista en tiempo real),
   con temas Claro / Oscuro / Neón y tipografías intercambiables.
   Se monta a pantalla completa sobre <body>. Todo client-side.
   ================================================================= */
@import url('https://fonts.googleapis.com/css2?family=Press+Start+2P&family=Inter:wght@400;500;600;700;800&family=Space+Grotesk:wght@400;500;600;700&family=Fraunces:ital,wght@0,400;0,600;1,500&family=VT323&family=Poppins:wght@400;500;600;700&family=Playfair+Display:wght@500;600;700&family=Oswald:wght@400;500;600;700&family=Montserrat:wght@400;500;600;700&family=Lora:ital,wght@0,400;0,600;1,500&display=swap');

.sitw-builder {
  /* --- paleta del editor (chrome) --- */
  --swb-bg:        #08060f;
  --swb-bg2:       #0c0918;
  --swb-panel:     #100b1f;
  --swb-panel2:    #160f29;
  --swb-elev:      #1b1334;
  --swb-line:      #251a3e;
  --swb-line2:     #34254f;
  --swb-violet:    #a36bff;
  --swb-violet-2:  #7c4dff;
  --swb-violet-soft:#cbb0ff;
  --swb-green:     #36e3a0;
  --swb-amber:     #ffce5c;
  --swb-pink:      #ff5ca8;
  --swb-cyan:      #5cd8ff;
  --swb-ink:       #ece6fb;
  --swb-dim:       #8c7eb4;
  --swb-dim2:      #6a5f8c;
  --swb-accent:    #a36bff;            /* color de marca del sitio (editable) */

  --swb-pixel: 'Press Start 2P', monospace;
  --swb-ui: 'Space Grotesk', 'Inter', system-ui, sans-serif;
  --swb-mono: 'VT323', monospace;

  --swb-radius: 14px;
  --swb-shadow: 0 24px 60px rgba(0,0,0,.55);

  position: fixed; inset: 0; z-index: 2000000;
  display: flex; flex-direction: column;
  background:
    radial-gradient(1400px 700px at 50% -15%, rgba(124,77,255,.16), transparent 62%),
    radial-gradient(900px 500px at 100% 110%, rgba(54,227,160,.06), transparent 60%),
    var(--swb-bg);
  color: var(--swb-ink);
  font-family: var(--swb-ui);
  -webkit-font-smoothing: antialiased;
  opacity: 0; transform: scale(.99);
  transition: opacity .5s cubic-bezier(.2,.8,.2,1), transform .5s cubic-bezier(.2,.8,.2,1);
  overflow: hidden;
}
.sitw-builder.is-show { opacity: 1; transform: none; }
.sitw-builder *, .sitw-builder *::before, .sitw-builder *::after { box-sizing: border-box; }

/* reset neutral de controles dentro del builder: el tema (Astra) pinta TODOS los
   <button> con fondo azul y padding grande, y eso se filtraba a las pestañas y al
   botón de cerrar. :where() tiene especificidad 0, así que cada componente del
   builder vuelve a imponer su propio estilo sin pelear. */
.sitw-builder :where(button, input, textarea, select) {
  font: inherit; color: inherit; line-height: normal;
  background: none; border: none; margin: 0; padding: 0;
  min-width: 0; min-height: 0; box-shadow: none;
  text-transform: none; letter-spacing: normal;
  border-radius: 0; -webkit-appearance: none; appearance: none;
}

/* mientras el builder ocupa la pantalla completa, ocultamos el chrome del sitio
   (header/nav/barras fijas del tema) para que no se superpongan con la barra superior */
body.sitw-builder-open .sitw-mega-header,
body.sitw-builder-open > header,
body.sitw-builder-open .site-header,
body.sitw-builder-open #wpadminbar { display: none !important; }

/* scanlines muy sutiles solo en el chrome */
.sitw-builder::before {
  content: ""; position: absolute; inset: 0; pointer-events: none; z-index: 2;
  background: repeating-linear-gradient(180deg, rgba(0,0,0,0) 0 3px, rgba(0,0,0,.10) 3px 4px);
  opacity: .35; mix-blend-mode: multiply;
}

/* =================================================================
   BARRA SUPERIOR
   ================================================================= */
.swb-top {
  position: relative; z-index: 30;
  display: flex; align-items: center; gap: 14px;
  padding: 10px 18px;
  background: linear-gradient(180deg, #050309, #030208);
  border-bottom: 1px solid #18112b;
  box-shadow: 0 1px 0 rgba(255,255,255,.03) inset, 0 6px 22px rgba(0,0,0,.5);
}
.swb-brand {
  display: flex; align-items: center; gap: 10px; white-space: nowrap;
}
.swb-brand-logo {
  height: 26px; width: auto; max-width: 230px; display: block;
  object-fit: contain; filter: drop-shadow(0 1px 2px rgba(0,0,0,.5));
}
.swb-brand-mark {
  width: 30px; height: 30px; border-radius: 8px; display: grid; place-items: center;
  background: linear-gradient(135deg, var(--swb-violet), var(--swb-violet-2));
  box-shadow: 0 0 18px rgba(124,77,255,.55), inset 0 0 0 1px rgba(255,255,255,.18);
}
.swb-brand-mark svg { display: block; }
.swb-brand-txt { line-height: 1.1; }
.swb-brand-txt b {
  display: block; font-family: var(--swb-pixel); font-size: 9px; letter-spacing: .5px;
  color: var(--swb-ink); text-shadow: 1px 1px 0 #000;
}
.swb-brand-txt small { font-size: 12px; color: var(--swb-dim); letter-spacing: .3px; }

.swb-spacer { flex: 1 1 auto; }

/* switch de dispositivo (segmented control) */
.swb-devices {
  display: flex; gap: 3px; padding: 4px;
  background: var(--swb-panel); border: 1px solid var(--swb-line); border-radius: 11px;
}
.swb-dev {
  display: inline-flex; align-items: center; justify-content: center;
  width: 42px; height: 32px; padding: 0; line-height: 0;
  border: none; background: transparent; color: var(--swb-dim); cursor: pointer;
  border-radius: 8px; transition: background .16s, color .16s, transform .1s;
}
.swb-dev:hover { color: var(--swb-violet-soft); }
.swb-dev.is-on {
  background: linear-gradient(180deg, var(--swb-elev), var(--swb-panel2));
  color: #fff; box-shadow: inset 0 0 0 1px var(--swb-line2), 0 4px 14px rgba(0,0,0,.4);
}
.swb-dev.is-disabled { opacity: .3; pointer-events: none; }
.swb-dev svg { width: 17px; height: 17px; display: block; }

/* botones de la barra */
.swb-btn-ghost, .swb-btn-primary {
  display: inline-flex; align-items: center; gap: 8px; cursor: pointer;
  font-family: var(--swb-ui); font-weight: 600; font-size: 13px; letter-spacing: .2px;
  border-radius: 10px; padding: 10px 14px; white-space: nowrap;
  transition: transform .12s, background .16s, border-color .16s, box-shadow .16s, color .16s;
}
.swb-btn-ghost {
  color: var(--swb-ink); background: var(--swb-panel);
  border: 1px solid var(--swb-line);
}
.swb-btn-ghost:hover { border-color: var(--swb-violet); background: var(--swb-elev); transform: translateY(-1px); }
.swb-btn-ghost svg { width: 16px; height: 16px; opacity: .85; }
.swb-btn-ghost.is-on { background: var(--swb-violet); border-color: var(--swb-violet); color: #160a2b; }
.swb-btn-ghost.swb-exit { color: var(--swb-pink); }
.swb-btn-ghost.swb-exit:hover { border-color: var(--swb-pink); background: rgba(255,92,168,.12); }
.swb-btn-ghost.is-disabled { opacity: .35; pointer-events: none; }

.swb-btn-primary {
  color: #06231a; font-weight: 700;
  background: linear-gradient(180deg, #4af0ad, var(--swb-green));
  border: none; box-shadow: 0 6px 20px rgba(54,227,160,.32), inset 0 1px 0 rgba(255,255,255,.4);
}
.swb-btn-primary:hover { transform: translateY(-1px); filter: brightness(1.05); }
.swb-btn-primary:disabled { background: #2a2440; color: var(--swb-dim2); box-shadow: none; cursor: not-allowed; transform: none; filter: none; }

.swb-divider-v { width: 1px; height: 26px; background: var(--swb-line); margin: 0 2px; }

/* =================================================================
   CUERPO (3 columnas)
   ================================================================= */
.swb-main { position: relative; z-index: 10; flex: 1 1 auto; display: flex; min-height: 0; }

/* ---------- PALETA (izquierda) ---------- */
.swb-palette {
  width: 332px; flex: 0 0 332px;
  background: linear-gradient(180deg, var(--swb-panel), var(--swb-bg2));
  border-right: 1px solid var(--swb-line);
  display: flex; flex-direction: column; min-height: 0;
}
.swb-pane-head {
  display: flex; align-items: center; gap: 8px;
  padding: 16px 16px 10px;
}
.swb-pane-head .swb-pane-ic { color: var(--swb-violet); display: grid; place-items: center; }
.swb-pane-head .swb-pane-ic svg { width: 16px; height: 16px; }
.swb-pane-title { font-family: var(--swb-pixel); font-size: 9px; letter-spacing: .5px; color: var(--swb-ink); text-transform: uppercase; }
.swb-pane-note { font-size: 12.5px; color: var(--swb-dim); padding: 0 16px 10px; line-height: 1.4; }

.swb-palette-list { overflow-y: auto; padding: 4px 12px 20px; flex: 1 1 auto; }
.swb-palette-list::-webkit-scrollbar, .swb-inspector::-webkit-scrollbar, .swb-stage::-webkit-scrollbar { width: 10px; }
.swb-palette-list::-webkit-scrollbar-thumb, .swb-inspector::-webkit-scrollbar-thumb, .swb-stage::-webkit-scrollbar-thumb {
  background: var(--swb-line2); border-radius: 10px; border: 3px solid transparent; background-clip: padding-box;
}
.swb-group-lbl {
  display: flex; align-items: center; gap: 8px;
  font-size: 10.5px; font-weight: 700; letter-spacing: 1.2px; text-transform: uppercase;
  color: var(--swb-dim2); margin: 16px 6px 9px;
}
.swb-group-lbl::after { content: ""; flex: 1 1 auto; height: 1px; background: var(--swb-line); }
.swb-group-lbl.is-reco { color: var(--swb-violet-soft); }

/* secciones plegables de la paleta */
.swb-pgroup { margin: 6px 0 4px; border-bottom: 1px solid var(--swb-line); padding-bottom: 6px; }
.swb-pgroup.is-reco { border-bottom: none; }
.swb-pgroup-head {
  width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 8px;
  background: transparent; border: none; cursor: pointer; padding: 11px 6px 9px;
  font-size: 10.5px; font-weight: 700; letter-spacing: 1.2px; text-transform: uppercase;
  color: var(--swb-dim); transition: color .14s;
}
.swb-pgroup-head:hover { color: var(--swb-violet-soft); }
.swb-pgroup.is-reco .swb-pgroup-head { color: var(--swb-violet-soft); }
.swb-pgroup-ttl { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.swb-pgroup-meta { display: inline-flex; align-items: center; gap: 8px; flex: 0 0 auto; }
.swb-pgroup-count {
  min-width: 18px; text-align: center; font-size: 10px; padding: 1px 6px; border-radius: 9px;
  background: var(--swb-panel2); border: 1px solid var(--swb-line2); color: var(--swb-dim);
}
.swb-pgroup-caret { display: inline-flex; transition: transform .2s ease; color: var(--swb-dim2); }
.swb-pgroup-caret svg { width: 14px; height: 14px; }
.swb-pgroup.is-collapsed .swb-pgroup-caret { transform: rotate(-90deg); }
.swb-pgroup-body { display: block; }
.swb-pgroup.is-collapsed .swb-pgroup-body { display: none; }

.swb-chip {
  display: block; margin-bottom: 10px; overflow: hidden;
  background: var(--swb-panel2); border: 1px solid var(--swb-line); border-radius: 12px;
  cursor: grab; user-select: none; touch-action: none;
  transition: border-color .15s, background .15s, transform .1s, box-shadow .15s;
}
.swb-chip:hover { border-color: var(--swb-violet); transform: translateY(-1px); box-shadow: 0 8px 22px rgba(0,0,0,.4); }
.swb-chip:active { cursor: grabbing; transform: scale(.995); }
.swb-chip.is-ghost { opacity: .35; }

/* miniatura: render real del bloque a escala */
.swb-chip-thumb {
  position: relative; height: 104px; overflow: hidden;
  background: #0f0d18; border-bottom: 1px solid var(--swb-line);
  pointer-events: none;
}
.swb-chip-thumb::after { /* velo sutil para que se lea como preview */
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(180deg, transparent 55%, rgba(8,6,15,.35));
}
.swb-chip-scale {
  width: 1080px; transform: scale(.286); transform-origin: top left;
  pointer-events: none;
}
.swb-thumb-canvas { width: 1080px; min-height: 0; }
.swb-thumb-canvas .s-sec { padding: 40px 56px; }
.swb-thumb-canvas .s-img { min-height: 200px; }

.swb-chip-cap { display: flex; align-items: center; gap: 10px; padding: 9px 11px; }
.swb-chip-ic {
  width: 28px; height: 28px; flex: 0 0 28px; border-radius: 8px;
  display: inline-flex; align-items: center; justify-content: center; color: var(--swb-violet-soft);
  background: radial-gradient(circle at 30% 25%, rgba(124,77,255,.30), rgba(124,77,255,.05));
  border: 1px solid var(--swb-line2);
}
.swb-chip-ic svg { width: 15px; height: 15px; display: block; }
.swb-chip-name { line-height: 1.15; min-width: 0; }
.swb-chip-name b { font-size: 13.5px; font-weight: 600; color: var(--swb-ink); display: block; }
.swb-chip-name small { font-size: 11.5px; color: var(--swb-dim2); }

/* fantasma de arrastre */
.swb-drag-ghost {
  position: fixed; z-index: 2000060; pointer-events: none;
  display: flex; align-items: center; gap: 10px;
  padding: 9px 13px; background: var(--swb-elev);
  border: 1px solid var(--swb-violet); border-radius: 11px;
  font-size: 13.5px; font-weight: 600; color: var(--swb-ink);
  box-shadow: 0 16px 38px rgba(0,0,0,.6), 0 0 22px rgba(124,77,255,.5);
  transform: translate(-50%, -50%) rotate(-2deg) scale(1.02);
}
.swb-drag-ghost .swb-chip-ic { width: 28px; height: 28px; flex-basis: 28px; }
.swb-drag-ghost .swb-chip-ic svg { width: 15px; height: 15px; }

/* =================================================================
   ESCENARIO + LIENZO (centro) — VISTA EN TIEMPO REAL
   ================================================================= */
.swb-stage {
  flex: 1 1 auto; overflow-y: scroll; min-height: 0;
  padding: 30px 26px 90px;
  display: flex; flex-direction: column; align-items: center;
  scrollbar-width: auto; scrollbar-color: var(--swb-violet) var(--swb-bg2);
  background:
    radial-gradient(1000px 560px at 50% -5%, rgba(80,40,150,.10), transparent 60%),
    repeating-linear-gradient(0deg, transparent 0 38px, rgba(255,255,255,.012) 38px 39px),
    repeating-linear-gradient(90deg, transparent 0 38px, rgba(255,255,255,.012) 38px 39px);
}
/* barra de scroll del lienzo: bien visible para que no trabe al usuario */
.swb-stage::-webkit-scrollbar { width: 16px; }
.swb-stage::-webkit-scrollbar-track { background: var(--swb-bg2); border-left: 1px solid var(--swb-line); }
.swb-stage::-webkit-scrollbar-thumb {
  background: linear-gradient(180deg, var(--swb-violet), var(--swb-violet-2));
  border-radius: 10px; border: 4px solid var(--swb-bg2); background-clip: padding-box;
  min-height: 48px;
}
.swb-stage::-webkit-scrollbar-thumb:hover { background: var(--swb-violet-soft); background-clip: padding-box; }
.swb-frame {
  width: 100%; max-width: 1080px;
  flex: 0 0 auto;                /* clave: no encogerse → el lienzo crece y el stage scrollea */
  transition: max-width .4s cubic-bezier(.2,.8,.2,1);
  border-radius: 16px; overflow: hidden;
  background: #fff;
  box-shadow: 0 0 0 1px rgba(0,0,0,.5), 0 40px 90px rgba(0,0,0,.55), 0 0 0 8px rgba(124,77,255,.05);
}
.swb-stage[data-device="tablet"] .swb-frame { max-width: 780px; }
.swb-stage[data-device="mobile"] .swb-frame { max-width: 392px; }

/* barra de páginas (pestañas — diseño limpio tipo editor) */
.swb-pagebar {
  display: flex; align-items: center; gap: 8px;
  padding: 7px 10px; background: #0a0713;
  border-bottom: 1px solid #18112b; overflow-x: auto; scrollbar-width: none;
}
.swb-pagebar::-webkit-scrollbar { height: 0; }
.swb-ptabs { display: flex; align-items: center; gap: 6px; }
.swb-ptab {
  display: flex; align-items: center;
  background: rgba(255,255,255,.035); border: 1px solid transparent;
  border-radius: 9px; padding: 0 3px 0 4px; max-width: 210px;
  transition: background .15s, border-color .15s, box-shadow .15s;
}
.swb-ptab:hover { background: rgba(255,255,255,.06); }
.swb-ptab.is-on {
  background: linear-gradient(180deg, rgba(124,77,255,.22), rgba(124,77,255,.10));
  border-color: rgba(163,107,255,.55);
  box-shadow: 0 2px 10px rgba(124,77,255,.22), 0 0 0 1px rgba(163,107,255,.12) inset;
}
.swb-ptab-name {
  display: flex; align-items: center; gap: 7px; padding: 7px 6px;
  font-size: 12.5px; font-weight: 600; color: var(--swb-dim); cursor: pointer;
  max-width: 165px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis;
}
.swb-ptab.is-on .swb-ptab-name { color: #fff; }
.swb-ptab-name span:last-child { overflow: hidden; text-overflow: ellipsis; }
.swb-ptab-ic { display: inline-flex; opacity: .8; }
.swb-ptab-ic svg { width: 13px; height: 13px; }
.swb-ptab-x {
  display: grid; place-items: center; width: 19px; height: 19px; border-radius: 6px;
  color: var(--swb-dim2); opacity: 0; cursor: pointer; transition: opacity .15s, background .15s, color .15s;
}
.swb-ptab:hover .swb-ptab-x, .swb-ptab.is-on .swb-ptab-x { opacity: .7; }
.swb-ptab-x:hover { background: rgba(255,90,90,.2); color: #ff6b6b; opacity: 1; }
.swb-ptab-x svg { width: 11px; height: 11px; }
.swb-ptab-add {
  display: inline-flex; align-items: center; gap: 6px; padding: 7px 12px; flex: 0 0 auto;
  color: var(--swb-violet-soft); font-size: 12px; font-weight: 600; border-radius: 9px;
  border: 1px dashed rgba(163,107,255,.4); background: transparent; cursor: pointer;
  transition: background .15s, border-color .15s;
}
.swb-ptab-add:hover { background: rgba(124,77,255,.14); border-color: rgba(163,107,255,.7); }
.swb-ptab-add svg { width: 13px; height: 13px; }
.sitw-builder.is-preview .swb-ptab-x, .sitw-builder.is-preview .swb-ptab-add { display: none; }

/* barra de navegador falsa (realismo) */
.swb-browserbar {
  display: flex; align-items: center; gap: 12px;
  padding: 9px 14px; background: #14101f;
  border-bottom: 1px solid rgba(0,0,0,.4);
}
.swb-traffic { display: flex; gap: 6px; }
.swb-traffic span { width: 11px; height: 11px; border-radius: 50%; }
.swb-traffic span:nth-child(1){ background:#ff5f57; }
.swb-traffic span:nth-child(2){ background:#febc2e; }
.swb-traffic span:nth-child(3){ background:#28c840; }
.swb-urlbar {
  flex: 1 1 auto; display: flex; align-items: center; gap: 8px;
  background: #0c0916; border: 1px solid #2a2140; border-radius: 8px;
  padding: 6px 12px; color: #8c7eb4; font-size: 12.5px; font-family: var(--swb-mono); letter-spacing: .5px;
}
.swb-urlbar svg { width: 12px; height: 12px; opacity: .7; }
.swb-urlbar b { color: var(--swb-violet-soft); font-weight: 400; }
.swb-live {
  display: inline-flex; align-items: center; gap: 6px; font-size: 11px; color: var(--swb-green);
  font-family: var(--swb-ui); font-weight: 600; letter-spacing: .3px;
}
.swb-live::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: var(--swb-green); box-shadow: 0 0 8px var(--swb-green); animation: swbPulse 1.6s ease-in-out infinite; }
@keyframes swbPulse { 0%,100%{ opacity:1; } 50%{ opacity:.35; } }

/* el sitio en sí */
.swb-canvas {
  --site-accent: var(--swb-accent);
  min-height: 420px; position: relative;
  background: var(--site-bg); color: var(--site-fg);
  font-family: var(--site-font);
  transition: background .3s, color .3s;
}
/* temas del sitio */
.swb-canvas[data-theme="light"] { --site-bg:#ffffff; --site-fg:#16131f; --site-muted:#6c6680; --site-card:#f6f5fb; --site-line:#e9e6f2; --site-glow: transparent; }
.swb-canvas[data-theme="dark"]  { --site-bg:#0f0d18; --site-fg:#f3f1fb; --site-muted:#a39db8; --site-card:#181527; --site-line:#272338; --site-glow: transparent; }
.swb-canvas[data-theme="neon"]  { --site-bg:#0a0617; --site-fg:#f1e9ff; --site-muted:#a193c6; --site-card:#150d2a; --site-line:#2c1d49; --site-glow: rgba(124,77,255,.35); }
/* tipografías reales seleccionables */
.swb-canvas[data-font="moderna"]  { --site-font: 'Inter', system-ui, sans-serif; --site-display: 'Space Grotesk','Inter',sans-serif; }
.swb-canvas[data-font="elegante"] { --site-font: 'Lora', Georgia, serif; --site-display: 'Playfair Display', Georgia, serif; }
.swb-canvas[data-font="redonda"]  { --site-font: 'Poppins', system-ui, sans-serif; --site-display: 'Poppins', system-ui, sans-serif; }
.swb-canvas[data-font="impacto"]  { --site-font: 'Inter', system-ui, sans-serif; --site-display: 'Oswald', 'Inter', sans-serif; }
.swb-canvas[data-font="clasica"]  { --site-font: 'Montserrat', system-ui, sans-serif; --site-display: 'Montserrat', system-ui, sans-serif; }
.swb-canvas[data-font="pixel"]    { --site-font: 'VT323', monospace; --site-display: 'Press Start 2P', monospace; }
.swb-canvas[data-font="impacto"] .s-h1, .swb-canvas[data-font="impacto"] .s-h2 { text-transform: uppercase; letter-spacing: .5px; }

.swb-empty {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 14px; text-align: center; padding: 70px 28px; min-height: 420px;
  color: var(--site-muted);
}
.swb-empty-ic {
  width: 64px; height: 64px; border-radius: 16px; display: grid; place-items: center;
  border: 2px dashed var(--site-line); color: var(--site-accent);
}
.swb-empty-ic svg { width: 30px; height: 30px; }
.swb-empty-t { font-family: var(--site-display); font-weight: 700; font-size: 22px; color: var(--site-fg); }
.swb-empty-s { font-size: 15px; max-width: 360px; line-height: 1.5; }

/* indicador de inserción */
.swb-drop-line {
  height: 4px; margin: 0; border-radius: 4px;
  background: linear-gradient(90deg, transparent, var(--swb-violet), transparent);
  box-shadow: 0 0 16px rgba(124,77,255,.8); position: relative;
}
.swb-drop-line::before, .swb-drop-line::after {
  content: ""; position: absolute; top: 50%; width: 9px; height: 9px; border-radius: 50%;
  background: var(--swb-violet); transform: translateY(-50%); box-shadow: 0 0 10px var(--swb-violet);
}
.swb-drop-line::before { left: -2px; } .swb-drop-line::after { right: -2px; }

/* =================================================================
   BLOQUE COLOCADO (envoltorio de editor + sección real)
   ================================================================= */
.swb-block { position: relative; }
.swb-block-frame {
  position: absolute; inset: 0; z-index: 4; pointer-events: none;
  border: 2px solid transparent; transition: border-color .14s;
}
.swb-block:hover .swb-block-frame { border-color: rgba(124,77,255,.45); }
.swb-block.is-selected .swb-block-frame { border-color: var(--swb-violet); box-shadow: inset 0 0 0 1px rgba(124,77,255,.4), 0 0 0 3px rgba(124,77,255,.16); }
.swb-block.is-dragging { opacity: .35; }

.swb-block-tag {
  position: absolute; top: -1px; left: -1px; z-index: 6; pointer-events: none;
  display: inline-flex; align-items: center; gap: 6px;
  font-size: 10.5px; font-weight: 700; letter-spacing: .5px; text-transform: uppercase;
  color: #fff; background: var(--swb-violet);
  padding: 4px 9px; border-radius: 0 0 9px 0;
  opacity: 0; transform: translateY(-3px); transition: opacity .14s, transform .14s;
}
.swb-block:hover .swb-block-tag, .swb-block.is-selected .swb-block-tag { opacity: 1; transform: none; }

.swb-block-tools {
  position: absolute; top: 8px; right: 8px; z-index: 7;
  display: flex; gap: 4px; padding: 4px;
  background: rgba(16,11,31,.92); border: 1px solid var(--swb-line2); border-radius: 10px;
  box-shadow: 0 8px 22px rgba(0,0,0,.5); backdrop-filter: blur(6px);
  opacity: 0; transform: translateY(-4px); transition: opacity .14s, transform .14s;
}
.swb-block:hover .swb-block-tools, .swb-block.is-selected .swb-block-tools { opacity: 1; transform: none; }
.swb-bt {
  width: 30px; height: 30px; padding: 0; line-height: 0;
  display: inline-flex; align-items: center; justify-content: center;
  background: transparent; border: none; border-radius: 7px;
  color: var(--swb-dim); cursor: pointer; transition: background .14s, color .14s;
}
.swb-bt svg { width: 15px; height: 15px; display: block; }
.swb-bt:hover { background: var(--swb-elev); color: var(--swb-violet-soft); }
.swb-bt.swb-bt-del:hover { background: rgba(255,92,168,.16); color: var(--swb-pink); }
.swb-bt.swb-bt-grip { cursor: grab; }
.swb-bt.swb-bt-grip:active { cursor: grabbing; }

/* contenido editable */
.swb-block [contenteditable] { outline: none; cursor: text; border-radius: 4px; transition: box-shadow .14s, background .14s; }
.swb-block [contenteditable]:hover { box-shadow: 0 0 0 2px rgba(124,77,255,.18); }
.swb-block [contenteditable]:focus { box-shadow: 0 0 0 2px rgba(124,77,255,.55); background: rgba(124,77,255,.06); }

/* ---- handle de redimensionado del bloque (esquina diagonal) ---- */
.swb-resize {
  position: absolute; right: 7px; bottom: 7px; z-index: 7;
  width: 26px; height: 26px; display: none;
  align-items: flex-end; justify-content: flex-end;
  cursor: ns-resize; touch-action: none;
}
.swb-block.is-selected .swb-resize { display: flex; }
.swb-resize span {
  width: 15px; height: 15px;
  border-right: 3px solid var(--swb-violet); border-bottom: 3px solid var(--swb-violet);
  border-radius: 0 0 5px 0; filter: drop-shadow(0 1px 2px rgba(0,0,0,.4));
}
.swb-resize:hover span { border-color: var(--swb-violet-soft); }
.swb-block.is-resizing { user-select: none; }
.swb-block.is-resizing .swb-block-frame { border-color: var(--swb-violet); }

/* ---- redimensionar el BLOQUE desde cualquier lado/esquina ---- */
.swb-bresize { position: absolute; inset: 0; pointer-events: none; z-index: 6; display: none; }
.swb-block.is-selected .swb-bresize { display: block; }
.sitw-builder.swb-has-el .swb-bresize, .sitw-builder.is-preview .swb-bresize { display: none; }
.swb-brz { position: absolute; pointer-events: auto; }
.swb-brz.n { top: -5px; left: 18px; right: 18px; height: 10px; cursor: ns-resize; }
.swb-brz.s { bottom: -5px; left: 18px; right: 18px; height: 10px; cursor: ns-resize; }
.swb-brz.e { right: -5px; top: 18px; bottom: 18px; width: 10px; cursor: ew-resize; }
.swb-brz.w { left: -5px; top: 18px; bottom: 18px; width: 10px; cursor: ew-resize; }
.swb-brz.ne { top: -6px; right: -6px; width: 16px; height: 16px; cursor: nesw-resize; }
.swb-brz.nw { top: -6px; left: -6px; width: 16px; height: 16px; cursor: nwse-resize; }
.swb-brz.se { bottom: -6px; right: -6px; width: 16px; height: 16px; cursor: nwse-resize; }
.swb-brz.sw { bottom: -6px; left: -6px; width: 16px; height: 16px; cursor: nesw-resize; }
/* nub visible en las esquinas */
.swb-brz.ne::after, .swb-brz.nw::after, .swb-brz.se::after, .swb-brz.sw::after {
  content: ""; position: absolute; width: 10px; height: 10px;
  background: #fff; border: 2px solid var(--swb-violet); border-radius: 3px;
  box-shadow: 0 2px 6px rgba(0,0,0,.4);
}
.swb-brz.ne::after { top: 1px; right: 1px; } .swb-brz.nw::after { top: 1px; left: 1px; }
.swb-brz.se::after { bottom: 1px; right: 1px; } .swb-brz.sw::after { bottom: 1px; left: 1px; }
/* barra sutil en los lados al pasar el mouse */
.swb-brz.n::after, .swb-brz.s::after, .swb-brz.e::after, .swb-brz.w::after {
  content: ""; position: absolute; inset: 0; border-radius: 6px;
  background: var(--swb-violet); opacity: 0; transition: opacity .14s;
}
.swb-brz.n:hover::after, .swb-brz.s:hover::after, .swb-brz.e:hover::after, .swb-brz.w:hover::after { opacity: .5; }

/* ---- redimensionar imagen desde la esquina ---- */
.s-img.is-resizing { outline: 2px solid var(--site-accent); outline-offset: -2px; }
.swb-block.is-selected .s-img::after,
.swb-block:hover .s-img:hover::after {
  content: ""; position: absolute; right: 7px; bottom: 7px; z-index: 3;
  width: 15px; height: 15px; pointer-events: none;
  border-right: 3px solid #fff; border-bottom: 3px solid #fff; border-radius: 0 0 5px 0;
  filter: drop-shadow(0 1px 3px rgba(0,0,0,.6));
}

/* ---- ítems internos arrastrables (métricas, tarjetas, pills, fotos) ---- */
.swb-block.is-selected .s-grid > *,
.swb-block.is-selected .s-stats > *,
.swb-block.is-selected .s-pills > * { cursor: grab; }
.swb-block.is-selected .s-grid > *:hover,
.swb-block.is-selected .s-stats > *:hover,
.swb-block.is-selected .s-pills > *:hover {
  box-shadow: inset 0 0 0 1.5px color-mix(in srgb, var(--site-accent) 55%, transparent);
  border-radius: 12px;
}
.swb-item-drag {
  opacity: .85; cursor: grabbing !important;
  outline: 2px dashed var(--site-accent); outline-offset: 2px; border-radius: 12px;
  box-shadow: 0 16px 38px rgba(0,0,0,.4); transform: scale(1.02); position: relative; z-index: 5;
}

/* =================================================================
   SECCIONES DEL SITIO (clases s-*) — apariencia real
   ================================================================= */
.swb-block-content { position: relative; }
.s-sec { padding: 64px 56px; }
.swb-block[data-pad="s"] .s-sec { padding: 34px 56px; }
.swb-block[data-pad="l"] .s-sec { padding: 96px 56px; }
.swb-block[data-w="full"] .s-sec { padding-left: 0; padding-right: 0; }
.swb-block[data-align="center"] .s-sec { text-align: center; }
.swb-block[data-align="center"] .s-grid,
.swb-block[data-align="center"] .s-row,
.swb-block[data-align="center"] .s-pills { justify-items: center; }
.swb-block[data-align="center"] .s-cta-row,
.swb-block[data-align="center"] .s-stats,
.swb-block[data-align="center"] .s-logos,
.swb-block[data-align="center"] .s-steps { justify-content: center; }

/* fondos */
.swb-block[data-bg="tint"]   .swb-block-content { background: var(--site-card); }
.swb-block[data-bg="accent"] .swb-block-content { background: color-mix(in srgb, var(--site-accent) 14%, var(--site-bg)); }
.swb-block[data-bg="dark"]   .swb-block-content { background: #15121f; color: #f4f1fb; }
.swb-block[data-bg="dark"] .s-p, .swb-block[data-bg="dark"] .s-eyebrow { color: #b9b2cf; }
.swb-block[data-bg="custom"] .swb-block-content { background: var(--block-bg, var(--site-card)); }

/* tipografía del sitio */
.s-eyebrow { font-size: 13px; font-weight: 700; letter-spacing: 2px; text-transform: uppercase; color: var(--site-accent); margin: 0 0 14px; }
.s-h1 { font-family: var(--site-display); font-weight: 700; font-size: clamp(30px, 4.4vw, 50px); line-height: 1.08; letter-spacing: -.5px; margin: 0 0 16px; color: var(--site-fg); }
.s-h2 { font-family: var(--site-display); font-weight: 700; font-size: clamp(22px, 3vw, 32px); line-height: 1.15; letter-spacing: -.3px; margin: 0 0 14px; color: var(--site-fg); }
.s-h3 { font-family: var(--site-display); font-weight: 600; font-size: 18px; margin: 0 0 8px; color: var(--site-fg); }
.s-p  { font-size: 17px; line-height: 1.6; color: var(--site-muted); margin: 0 0 14px; }
.s-canvas-pixel .s-h1 { letter-spacing: 0; }

.swb-canvas[data-font="pixel"] .s-h1 { font-size: clamp(20px,3vw,30px); line-height: 1.5; }
.swb-canvas[data-font="pixel"] .s-h2 { font-size: clamp(15px,2.2vw,20px); line-height: 1.5; }
.swb-canvas[data-font="pixel"] .s-p { font-size: 19px; }

.s-btn {
  display: inline-flex; align-items: center; gap: 8px;
  font-family: var(--site-font); font-weight: 700; font-size: 15px;
  color: #fff; background: var(--site-accent);
  padding: 14px 26px; border-radius: 12px; cursor: text;
  box-shadow: 0 10px 26px color-mix(in srgb, var(--site-accent) 40%, transparent);
}
.s-btn.is-ghost { background: transparent; color: var(--site-accent); box-shadow: inset 0 0 0 2px var(--site-accent); }
.s-cta-row { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 6px; }

/* hero */
.s-hero { display: grid; grid-template-columns: 1.05fr .95fr; gap: 48px; align-items: center; }
.swb-block[data-align="center"] .s-hero { grid-template-columns: 1fr; max-width: 720px; margin: 0 auto; }
.swb-stage[data-device="mobile"] .s-hero { grid-template-columns: 1fr; }

/* área de imagen */
.s-img {
  position: relative; border-radius: 16px; overflow: hidden; cursor: pointer;
  min-height: 240px; background-size: cover; background-position: center;
  background-color: var(--site-card);
  background-image:
    linear-gradient(135deg, color-mix(in srgb, var(--site-accent) 22%, transparent), transparent 60%),
    repeating-linear-gradient(45deg, color-mix(in srgb, var(--site-accent) 7%, var(--site-card)) 0 14px, var(--site-card) 14px 28px);
  border: 1px solid var(--site-line);
  display: grid; place-items: center;
}
.s-img.has-img { background-image: none; border-color: transparent; }
.s-img-hint {
  display: inline-flex; align-items: center; gap: 7px;
  font-size: 13px; font-weight: 600; color: var(--site-muted);
  background: color-mix(in srgb, var(--site-bg) 78%, transparent); backdrop-filter: blur(3px);
  padding: 8px 13px; border-radius: 10px; border: 1px solid var(--site-line);
}
.s-img-hint svg { width: 15px; height: 15px; }
.s-img.has-img .s-img-hint { opacity: 0; transition: opacity .15s; }
.s-img.has-img:hover .s-img-hint { opacity: 1; }
/* tamaño recomendado del hueco, se actualiza solo al redimensionar */
.s-img-dim {
  position: absolute; bottom: 8px; right: 8px; pointer-events: none;
  font-size: 11px; font-weight: 600; letter-spacing: .2px; color: var(--site-muted);
  background: color-mix(in srgb, var(--site-bg) 82%, transparent); backdrop-filter: blur(3px);
  padding: 3px 8px; border-radius: 7px; border: 1px solid var(--site-line);
  font-variant-numeric: tabular-nums; opacity: .9;
}
.s-img-dim:empty,
.s-img.has-img .s-img-dim,
.sitw-builder.is-preview .s-img-dim { display: none; }
.swb-chip-thumb .s-img-dim { display: none; }
.s-img.is-tall { min-height: 320px; }
.s-img.is-short { min-height: 150px; }
.s-img.is-media { min-height: 300px; }

/* ---- objetos de medios independientes (imagen / video sin bloque visible) ---- */
.swb-block[data-media] {
  width: calc(100% - 48px); max-width: calc(100% - 48px); margin: 16px 24px;
  touch-action: none; z-index: 2;
}
.swb-block[data-media] .swb-block-content { background: transparent !important; }
.swb-block[data-media] .s-sec { padding: 0; }
.swb-block[data-media][data-w="full"] .s-sec { padding: 0; }
.swb-block[data-media] .s-img,
.swb-block[data-media] .s-video { margin-top: 0; }
/* El medio y su host comparten exactamente la misma caja. El chrome de bloque
   se oculta porque imagen/video se editan como una única entidad. */
.swb-block[data-media] > .swb-block-frame,
.swb-block[data-media] > .swb-block-tag,
.swb-block[data-media] > .swb-bresize { display: none !important; }
.swb-block[data-media].swb-media-sized > .swb-block-content,
.swb-block[data-media].swb-media-sized .s-sec { height: 100%; }
.swb-block[data-media].swb-media-sized .s-img,
.swb-block[data-media].swb-media-sized .s-video { height: 100%; min-height: 0; }
.swb-block[data-media] video { -webkit-user-drag: none; }

/* grids */
.s-grid { display: grid; gap: 22px; margin-top: 8px; }
.s-grid.cols-2 { grid-template-columns: repeat(2, 1fr); }
.s-grid.cols-3 { grid-template-columns: repeat(3, 1fr); }
.s-grid.cols-4 { grid-template-columns: repeat(4, 1fr); }
.swb-block[data-cols="2"] .s-grid { grid-template-columns: repeat(2, 1fr); }
.swb-block[data-cols="3"] .s-grid { grid-template-columns: repeat(3, 1fr); }
.swb-block[data-cols="4"] .s-grid { grid-template-columns: repeat(4, 1fr); }
.swb-stage[data-device="mobile"] .s-grid { grid-template-columns: 1fr !important; }
.swb-stage[data-device="mobile"] .s-nav { flex-wrap: wrap; gap: 12px; }
.swb-stage[data-device="mobile"] .s-nav-links { margin-left: 0; width: 100%; }
.swb-stage[data-device="mobile"] .s-foot { grid-template-columns: 1fr; gap: 22px; }
.swb-stage[data-device="mobile"] .s-news { flex-direction: column; }
.swb-stage[data-device="tablet"] .s-grid.cols-4 { grid-template-columns: repeat(2,1fr); }

.s-card {
  background: var(--site-card); border: 1px solid var(--site-line); border-radius: 16px;
  padding: 22px; display: flex; flex-direction: column; gap: 12px;
}
.s-card .s-img { min-height: 150px; margin: -22px -22px 4px; border-radius: 16px 16px 0 0; }
.s-card-ic {
  width: 46px; height: 46px; border-radius: 12px; display: grid; place-items: center;
  color: var(--site-accent); background: color-mix(in srgb, var(--site-accent) 14%, transparent);
}
.s-card-ic svg { width: 22px; height: 22px; }
.s-price { font-family: var(--site-display); font-weight: 700; font-size: 22px; color: var(--site-fg); }
.s-tag-btn {
  margin-top: auto; text-align: center; font-weight: 700; font-size: 14px;
  color: var(--site-accent); border: 1.5px solid var(--site-accent); border-radius: 10px;
  padding: 10px; cursor: text;
}

/* testimonios / faq */
.s-row { border-top: 1px solid var(--site-line); padding: 22px 0; }
.s-row:first-of-type { border-top: none; }
.s-quote { font-family: var(--site-display); font-weight: 500; font-size: 20px; line-height: 1.45; color: var(--site-fg); font-style: italic; }
.s-who { font-size: 14px; font-weight: 600; color: var(--site-accent); margin-top: 10px; }
.s-q { font-weight: 700; font-size: 17px; color: var(--site-fg); margin-bottom: 8px; }

/* contacto */
.s-form { max-width: 520px; display: grid; gap: 12px; }
.swb-block[data-align="center"] .s-form { margin: 0 auto; }
.s-field {
  background: var(--site-bg); border: 1.5px solid var(--site-line); border-radius: 12px;
  padding: 14px 16px; color: var(--site-muted); font-size: 15px; font-family: var(--site-font);
}
.s-field.is-area { min-height: 96px; }

/* pills (redes / pagos) */
.s-pills { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 6px; }
.s-pill {
  display: inline-flex; align-items: center; gap: 9px;
  font-weight: 600; font-size: 14.5px; color: var(--site-fg);
  background: var(--site-card); border: 1px solid var(--site-line);
  padding: 11px 16px; border-radius: 999px;
}
.s-pill .s-pill-ic { width: 22px; height: 22px; display: grid; place-items: center; color: var(--site-accent); }
.s-pill .s-pill-ic svg { width: 18px; height: 18px; }

/* tira de logos / stats */
.s-stats { display: flex; flex-wrap: wrap; gap: 36px; }
.s-stat-n { font-family: var(--site-display); font-weight: 700; font-size: 34px; color: var(--site-accent); }
.s-stat-l { font-size: 14px; color: var(--site-muted); }

/* ---- encabezado / navbar ---- */
.s-nav { display: flex; align-items: center; gap: 24px; }
.s-nav-logo { font-family: var(--site-display); font-weight: 800; font-size: 20px; color: var(--site-fg); }
.s-nav-links { display: flex; flex-wrap: wrap; gap: 8px; margin-left: auto; }
.s-nav-link, .s-foot-link {
  margin-top: 0; border: none; border-radius: 8px; padding: 6px 10px;
  font-size: 14.5px; font-weight: 600; color: var(--site-muted); background: transparent;
}
.s-nav-link:hover, .s-foot-link:hover { color: var(--site-accent); }
.s-nav .s-btn { margin-left: 0; }

/* ---- pie de página ---- */
.s-foot { display: grid; grid-template-columns: 1.4fr 1fr 1fr; gap: 30px; }
.s-foot-col { display: flex; flex-direction: column; align-items: flex-start; gap: 4px; }
.s-foot-h { font-weight: 700; font-size: 13px; letter-spacing: 1px; text-transform: uppercase; color: var(--site-fg); margin-bottom: 6px; }
.s-foot-copy { margin-top: 28px; padding-top: 18px; border-top: 1px solid var(--site-line); font-size: 13px; color: var(--site-muted); }

/* ---- pasos / cómo funciona ---- */
.s-step { align-items: flex-start; }
.s-step-n {
  font-family: var(--site-display); font-weight: 800; font-size: 20px; color: #fff;
  width: 44px; height: 44px; border-radius: 12px; display: grid; place-items: center;
  background: var(--site-accent); margin-bottom: 6px;
}
.swb-block[data-align="center"] .s-step { align-items: center; }

/* ---- precios / planes ---- */
.s-plan { display: flex; flex-direction: column; gap: 8px; }
.s-plan.is-feat { border-color: var(--site-accent); box-shadow: 0 0 0 1.5px var(--site-accent), 0 18px 40px color-mix(in srgb, var(--site-accent) 22%, transparent); }
.s-plan-name { font-weight: 700; font-size: 15px; letter-spacing: .5px; text-transform: uppercase; color: var(--site-accent); }
.s-plan-price { font-family: var(--site-display); font-weight: 800; font-size: 40px; color: var(--site-fg); line-height: 1; }
.s-plan-feats { list-style: none; margin: 8px 0 14px; padding: 0; display: grid; gap: 9px; }
.s-plan-feats li { position: relative; padding-left: 24px; font-size: 14.5px; color: var(--site-muted); }
.s-plan-feats li::before { content: "✓"; position: absolute; left: 0; color: var(--site-accent); font-weight: 800; }
.s-plan .s-btn { margin-top: auto; }

/* ---- equipo ---- */
.s-team-card { align-items: center; text-align: center; }
.s-avatar.s-img { width: 110px; height: 110px; min-height: 110px; border-radius: 50%; }
.s-role { font-size: 14px; font-weight: 600; color: var(--site-accent); }

/* ---- logos ---- */
.s-logos { display: flex; flex-wrap: wrap; gap: 18px; margin-top: 14px; }
.s-logo {
  width: 120px; height: 56px; border-radius: 12px; display: grid; place-items: center;
  background: var(--site-card); border: 1px solid var(--site-line); color: var(--site-muted); opacity: .7;
}
.s-logo svg { width: 26px; height: 26px; }

/* ---- newsletter ---- */
.s-news { display: flex; gap: 10px; max-width: 460px; margin-top: 8px; }
.swb-block[data-align="center"] .s-news { margin-left: auto; margin-right: auto; }
.s-news .s-field { flex: 1 1 auto; margin: 0; }
.s-news .s-btn { white-space: nowrap; }

/* ---- video ---- */
.s-video {
  position: relative; margin-top: 14px; border-radius: 16px; min-height: 320px; overflow: hidden;
  background:
    linear-gradient(135deg, color-mix(in srgb, var(--site-accent) 26%, transparent), transparent 60%),
    repeating-linear-gradient(45deg, color-mix(in srgb, var(--site-accent) 7%, var(--site-card)) 0 14px, var(--site-card) 14px 28px);
  border: 1px solid var(--site-line); display: grid; place-items: center; gap: 14px; grid-auto-flow: row;
}
.s-video-play { width: 76px; height: 76px; border-radius: 50%; display: grid; place-items: center; background: var(--site-accent); color: #fff; box-shadow: 0 14px 36px color-mix(in srgb, var(--site-accent) 45%, transparent); }
.s-video-play svg { width: 34px; height: 34px; }
.s-video-hint {
  font-size: 13px; font-weight: 600; color: var(--site-muted);
  background: color-mix(in srgb, var(--site-bg) 78%, transparent); backdrop-filter: blur(3px);
  padding: 7px 13px; border-radius: 10px; border: 1px solid var(--site-line);
}
.s-video.s-has-video .s-video-hint { display: none; }
.sitw-builder.is-preview .s-video-hint { display: none; }
.sitw-builder.is-preview .s-video.s-has-video { cursor: pointer; }
/* video subido desde la compu: ocupa todo el objeto */
.s-video-el {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover; background: #000; border-radius: inherit; display: block;
}
.s-video.has-video { background: #000; }
.s-video.has-video .s-video-play { display: none; }

/* ---- horarios ---- */
.s-hours { max-width: 480px; margin-top: 10px; }
.swb-block[data-align="center"] .s-hours { margin-left: auto; margin-right: auto; }
.s-hour-row { display: flex; justify-content: space-between; gap: 16px; padding: 13px 0; border-top: 1px solid var(--site-line); }
.s-hour-row:first-child { border-top: none; }
.s-hour-d { font-weight: 600; color: var(--site-fg); }
.s-hour-v { color: var(--site-muted); }

/* tira de logos / stats */
/* neon glow accents */
.swb-canvas[data-theme="neon"] .s-h1, .swb-canvas[data-theme="neon"] .s-h2 { text-shadow: 0 0 22px var(--site-glow); }
.swb-canvas[data-theme="neon"] .s-card, .swb-canvas[data-theme="neon"] .s-pill { box-shadow: 0 0 0 1px rgba(124,77,255,.12), 0 0 24px rgba(124,77,255,.08); }

/* =================================================================
   INSPECTOR (derecha)
   ================================================================= */
.swb-inspector {
  width: 290px; flex: 0 0 290px;
  background: linear-gradient(180deg, var(--swb-panel), var(--swb-bg2));
  border-left: 1px solid var(--swb-line);
  display: flex; flex-direction: column; min-height: 0; overflow-y: auto;
}
.swb-insp-body { padding: 6px 16px 26px; }
.swb-insp-empty { padding: 18px 16px 26px; }
.swb-insp-empty .swb-insp-hero {
  border: 1px solid var(--swb-line); border-radius: 14px; padding: 18px;
  background: radial-gradient(120px 80px at 80% 0%, rgba(124,77,255,.12), transparent), var(--swb-panel2);
  margin-bottom: 18px;
}
.swb-insp-empty .swb-insp-hero p { font-size: 13px; color: var(--swb-dim); line-height: 1.5; margin: 8px 0 0; }
.swb-insp-empty .swb-insp-hero b { color: var(--swb-violet-soft); }

.swb-field-group { margin-bottom: 18px; }
.swb-field-label {
  display: block; font-size: 10.5px; font-weight: 700; letter-spacing: 1.2px; text-transform: uppercase;
  color: var(--swb-dim); margin: 0 2px 9px;
}
.swb-seg {
  display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; gap: 3px; padding: 3px;
  background: var(--swb-bg2); border: 1px solid var(--swb-line); border-radius: 11px;
}
.swb-seg button {
  border: none; background: transparent; color: var(--swb-dim); cursor: pointer;
  font-family: var(--swb-ui); font-weight: 600; font-size: 12.5px;
  padding: 9px 6px; border-radius: 8px; transition: background .14s, color .14s;
  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
}
.swb-seg button svg { width: 15px; height: 15px; }
.swb-seg button:hover { color: var(--swb-violet-soft); }
.swb-seg button.is-on { background: var(--swb-elev); color: #fff; box-shadow: inset 0 0 0 1px var(--swb-line2); }

/* Seis destinos no entran en una sola fila del inspector. */
.swb-link-sec .swb-seg {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  grid-auto-flow: row; grid-auto-columns: unset; gap: 4px;
}
.swb-link-sec .swb-seg button { width: 100%; min-height: 38px; white-space: nowrap; }

/* swatches de color / tema */
.swb-swatches { display: flex; flex-wrap: wrap; gap: 8px; }
.swb-swatch {
  width: 30px; height: 30px; border-radius: 9px; cursor: pointer;
  border: 2px solid transparent; box-shadow: inset 0 0 0 1px rgba(255,255,255,.14);
  transition: transform .12s, border-color .12s;
}
.swb-swatch:hover { transform: translateY(-2px); }
.swb-swatch.is-active { border-color: #fff; transform: translateY(-2px); }
.swb-theme-row { display: grid; grid-template-columns: repeat(3,1fr); gap: 8px; }
.swb-theme-opt {
  border: 1px solid var(--swb-line); border-radius: 11px; cursor: pointer; overflow: hidden;
  background: var(--swb-panel2); transition: border-color .14s, transform .1s;
}
.swb-theme-opt:hover { border-color: var(--swb-violet); transform: translateY(-1px); }
.swb-theme-opt.is-on { border-color: var(--swb-violet); box-shadow: 0 0 0 1px var(--swb-violet); }
.swb-theme-prev { height: 34px; display: block; }
.swb-theme-prev.t-light { background: linear-gradient(135deg,#fff 60%, #e9e6f2); }
.swb-theme-prev.t-dark  { background: linear-gradient(135deg,#0f0d18 60%, #272338); }
.swb-theme-prev.t-neon  { background: linear-gradient(135deg,#0a0617 50%, #2c1d49); box-shadow: inset 0 0 16px rgba(124,77,255,.5); }
.swb-theme-name { font-size: 11px; font-weight: 600; color: var(--swb-dim); text-align: center; padding: 6px 2px; }
.swb-theme-opt.is-on .swb-theme-name { color: var(--swb-violet-soft); }

/* volver a estilo general + tip */
.swb-insp-back {
  display: inline-flex; align-items: center; gap: 6px;
  font-family: var(--swb-ui); font-weight: 600; font-size: 12.5px;
  color: var(--swb-violet-soft); background: var(--swb-panel2);
  border: 1px solid var(--swb-line); border-radius: 9px;
  padding: 8px 12px; margin: 14px 0 4px; cursor: pointer;
  transition: border-color .14s, background .14s, transform .1s;
}
.swb-insp-back:hover { border-color: var(--swb-violet); background: var(--swb-elev); transform: translateX(-2px); }
.swb-insp-tip {
  display: flex; align-items: flex-start; gap: 9px;
  font-size: 12.5px; line-height: 1.45; color: var(--swb-dim);
  background: radial-gradient(120px 80px at 85% 0%, rgba(124,77,255,.12), transparent), var(--swb-panel2);
  border: 1px solid var(--swb-line); border-radius: 12px; padding: 12px 13px; margin-bottom: 18px;
}
.swb-insp-tip svg { width: 16px; height: 16px; color: var(--swb-violet); flex: 0 0 16px; margin-top: 1px; }
.swb-insp-tip b { color: var(--swb-violet-soft); }

/* disparador del selector de color */
.swb-color-trigger {
  display: flex; align-items: center; gap: 10px; width: 100%;
  background: var(--swb-bg2); border: 1px solid var(--swb-line); border-radius: 11px;
  padding: 9px 11px; cursor: pointer; color: var(--swb-ink);
  transition: border-color .14s, background .14s;
}
.swb-color-trigger:hover { border-color: var(--swb-violet); background: var(--swb-elev); }
.swb-color-chip {
  width: 26px; height: 26px; flex: 0 0 26px; border-radius: 7px;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.18);
}
.swb-color-val { flex: 1 1 auto; text-align: left; font-family: var(--swb-mono); font-size: 16px; letter-spacing: .5px; color: var(--swb-violet-soft); }
.swb-color-ic { display: inline-flex; color: var(--swb-dim); }
.swb-color-ic svg { width: 17px; height: 17px; display: block; }

/* popover del selector de color (HSV) */
.swb-cp-pop {
  position: fixed; z-index: 2000080; width: 244px;
  background: var(--swb-panel2); border: 1px solid var(--swb-line2); border-radius: 14px;
  box-shadow: 0 22px 60px rgba(0,0,0,.7), 0 0 0 1px rgba(124,77,255,.15);
  padding: 12px;
}
.swb-cp { display: flex; flex-direction: column; gap: 11px; }
.swb-cp-sv {
  position: relative; width: 100%; height: 150px; border-radius: 10px; cursor: crosshair;
  touch-action: none; box-shadow: inset 0 0 0 1px rgba(255,255,255,.12);
}
.swb-cp-sv-thumb {
  position: absolute; width: 14px; height: 14px; border-radius: 50%;
  border: 2px solid #fff; box-shadow: 0 0 0 1px rgba(0,0,0,.5), 0 1px 4px rgba(0,0,0,.5);
  transform: translate(-50%, -50%); pointer-events: none;
}
.swb-cp-hue {
  position: relative; width: 100%; height: 16px; border-radius: 8px; cursor: pointer; touch-action: none;
  background: linear-gradient(to right, #f00 0%, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);
}
.swb-cp-hue-thumb {
  position: absolute; top: 50%; width: 8px; height: 22px; border-radius: 5px;
  border: 2px solid #fff; box-shadow: 0 0 0 1px rgba(0,0,0,.5);
  transform: translate(-50%, -50%); pointer-events: none;
}
.swb-cp-foot { display: flex; align-items: center; gap: 9px; }
.swb-cp-prev { width: 32px; height: 32px; flex: 0 0 32px; border-radius: 8px; box-shadow: inset 0 0 0 1px rgba(255,255,255,.18); }
.swb-cp-hex {
  flex: 1 1 auto; min-width: 0; background: var(--swb-bg2); border: 1px solid var(--swb-line);
  border-radius: 8px; padding: 9px 11px; color: var(--swb-ink);
  font-family: var(--swb-mono); font-size: 17px; letter-spacing: 1px; text-transform: uppercase;
}
.swb-cp-hex:focus { outline: none; border-color: var(--swb-violet); }
.swb-cp-presets { display: grid; grid-template-columns: repeat(10, 1fr); gap: 5px; }
.swb-cp-sw { aspect-ratio: 1; border-radius: 6px; cursor: pointer; box-shadow: inset 0 0 0 1px rgba(255,255,255,.16); transition: transform .1s; }
.swb-cp-sw:hover { transform: scale(1.15); }
.swb-cp-reset {
  width: 100%; margin-top: 11px; font-family: var(--swb-ui); font-weight: 600; font-size: 12.5px;
  color: var(--swb-dim); background: var(--swb-bg2); border: 1px solid var(--swb-line);
  border-radius: 9px; padding: 9px; cursor: pointer; transition: color .14s, border-color .14s;
}
.swb-cp-reset:hover { color: var(--swb-violet-soft); border-color: var(--swb-violet); }

/* lista de tipografías reales */
.swb-font-list { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.swb-font-opt {
  display: flex; align-items: center; justify-content: space-between; gap: 6px;
  background: var(--swb-panel2); border: 1px solid var(--swb-line); border-radius: 11px;
  padding: 10px 12px; cursor: pointer; color: var(--swb-ink); text-align: left;
  transition: border-color .14s, background .14s, transform .1s;
}
.swb-font-opt:hover { border-color: var(--swb-violet); background: var(--swb-elev); transform: translateY(-1px); }
.swb-font-opt.is-on { border-color: var(--swb-violet); box-shadow: 0 0 0 1px var(--swb-violet); }
.swb-font-name { font-size: 14px; font-weight: 600; color: var(--swb-ink); line-height: 1.1; }
.swb-font-eg { font-size: 17px; color: var(--swb-violet-soft); line-height: 1; }

.swb-insp-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 6px; }
.swb-insp-actions button {
  display: inline-flex; align-items: center; justify-content: center; gap: 7px;
  font-family: var(--swb-ui); font-weight: 600; font-size: 12.5px; cursor: pointer;
  padding: 11px; border-radius: 10px; border: 1px solid var(--swb-line); background: var(--swb-panel2); color: var(--swb-ink);
  transition: border-color .14s, background .14s, color .14s;
}
.swb-insp-actions button svg { width: 15px; height: 15px; }
.swb-insp-actions button:hover { border-color: var(--swb-violet); background: var(--swb-elev); }
.swb-insp-actions button.swb-act-del { color: var(--swb-pink); }
.swb-insp-actions button.swb-act-del:hover { border-color: var(--swb-pink); background: rgba(255,92,168,.12); }
.swb-insp-actions button.is-wide { grid-column: 1 / -1; }

.swb-insp-title {
  display: flex; align-items: center; gap: 10px; padding: 16px 0 14px; margin-bottom: 4px;
  border-bottom: 1px solid var(--swb-line);
}
.swb-insp-title .swb-insp-ic { width: 34px; height: 34px; border-radius: 9px; display: grid; place-items: center;
  background: color-mix(in srgb, var(--swb-violet) 18%, transparent); color: var(--swb-violet-soft); }
.swb-insp-title .swb-insp-ic svg { width: 17px; height: 17px; }
.swb-insp-title b { font-size: 15px; font-weight: 700; color: var(--swb-ink); display: block; }
.swb-insp-title small { font-size: 12px; color: var(--swb-dim2); }

/* =================================================================
   EDICIÓN POR ELEMENTO (seleccionar · mover · redimensionar)
   ================================================================= */
/* todo elemento editable resalta al pasar y al seleccionar */
.swb-block .swb-txt,
.swb-block .s-img,
.swb-block .s-card,
.swb-block .s-card-ic,
.swb-block .s-pill { transition: box-shadow .12s, outline-color .12s; }
.swb-block.is-selected .swb-txt,
.swb-block.is-selected .s-img,
.swb-block.is-selected .s-card,
.swb-block.is-selected .s-pill { cursor: grab; }
.swb-block[data-media].is-selected .s-video { cursor: grab; }
.swb-block[data-media].is-selected video.s-video-el { cursor: default; touch-action: auto; }
.swb-block[data-media] .swb-bt-grip { touch-action: none; }
.swb-block.is-selected .swb-txt:hover,
.swb-block.is-selected .s-img:hover,
.swb-block.is-selected .s-card:hover,
.swb-block.is-selected .s-pill:hover {
  box-shadow: 0 0 0 2px color-mix(in srgb, var(--site-accent) 45%, transparent);
  border-radius: 8px;
}
.swb-txt {
  outline: none; border-radius: 4px;
  /* el texto SIEMPRE se acomoda dentro de su caja: nunca desborda al redimensionar */
  white-space: normal; overflow-wrap: break-word; word-break: break-word;
  max-width: 100%; min-width: 0;
}
.swb-txt.is-editing { cursor: text !important; box-shadow: 0 0 0 2px rgba(124,77,255,.6) !important; background: rgba(124,77,255,.07); }
.swb-el-moving { z-index: 9 !important; opacity: .96; }
.swb-el-moving, .swb-el-resizing { user-select: none; }

/* caja de selección del elemento (overlay, no bloquea clics) */
.swb-selbox {
  position: absolute; z-index: 8; pointer-events: none;
  border: 1.5px solid var(--swb-violet);
  box-shadow: 0 0 0 1px rgba(255,255,255,.25), 0 0 16px rgba(124,77,255,.35);
  border-radius: 6px; display: none;
}
.swb-selbox.is-on { display: block; }
.swb-selbox-tag {
  position: absolute; left: -1px; top: -22px;
  font-size: 10px; font-weight: 700; letter-spacing: .4px; text-transform: uppercase;
  color: #fff; background: var(--swb-violet); padding: 3px 7px; border-radius: 6px 6px 0 0;
  white-space: nowrap;
}
/* manijas: 8 lados (4 esquinas + 4 lados) */
.swb-selbox .swb-rz {
  position: absolute; pointer-events: auto; width: 13px; height: 13px;
  background: #fff; border: 2px solid var(--swb-violet); border-radius: 4px;
  box-shadow: 0 2px 6px rgba(0,0,0,.4);
}
.swb-selbox .swb-rz.nw { left: -7px;  top: -7px;    cursor: nwse-resize; }
.swb-selbox .swb-rz.ne { right: -7px; top: -7px;    cursor: nesw-resize; }
.swb-selbox .swb-rz.sw { left: -7px;  bottom: -7px; cursor: nesw-resize; }
.swb-selbox .swb-rz.se { right: -7px; bottom: -7px; cursor: nwse-resize; }
.swb-selbox .swb-rz.n  { top: -7px;    left: 50%; transform: translateX(-50%); cursor: ns-resize; width: 22px; height: 9px; }
.swb-selbox .swb-rz.s  { bottom: -7px; left: 50%; transform: translateX(-50%); cursor: ns-resize; width: 22px; height: 9px; }
.swb-selbox .swb-rz.e  { right: -7px;  top: 50%; transform: translateY(-50%); cursor: ew-resize; height: 22px; width: 9px; }
.swb-selbox .swb-rz.w  { left: -7px;   top: 50%; transform: translateY(-50%); cursor: ew-resize; height: 22px; width: 9px; }

/* guías inteligentes de alineación */
.swb-guides { position: absolute; inset: 0; z-index: 7; pointer-events: none; overflow: visible; }
.swb-guide { position: absolute; background: var(--swb-pink); }
.swb-guide.v { width: 1px; }
.swb-guide.h { height: 1px; }

/* ===== panel del inspector para UN elemento ===== */
.swb-stepper {
  display: flex; align-items: center; gap: 8px;
  background: var(--swb-bg2); border: 1px solid var(--swb-line); border-radius: 11px; padding: 5px 6px;
}
.swb-stepper button {
  width: 30px; height: 30px; flex: 0 0 30px; border: none; border-radius: 8px;
  background: var(--swb-panel2); color: var(--swb-violet-soft); cursor: pointer;
  font-size: 17px; line-height: 1; display: inline-flex; align-items: center; justify-content: center;
  transition: background .14s, color .14s;
}
.swb-stepper button:hover { background: var(--swb-elev); color: #fff; }
.swb-stepper .swb-step-val { flex: 1 1 auto; text-align: center; font-family: var(--swb-mono); font-size: 17px; color: var(--swb-ink); letter-spacing: .5px; }
.swb-toggle {
  display: flex; align-items: center; justify-content: space-between; gap: 10px; width: 100%;
  background: var(--swb-bg2); border: 1px solid var(--swb-line); border-radius: 11px;
  padding: 11px 13px; cursor: pointer; color: var(--swb-ink);
  font-family: var(--swb-ui); font-weight: 600; font-size: 13px;
  transition: border-color .14s, background .14s;
}
.swb-toggle:hover { border-color: var(--swb-violet); }
.swb-toggle .swb-tg-knob {
  width: 38px; height: 22px; flex: 0 0 38px; border-radius: 999px; background: var(--swb-line2); position: relative; transition: background .16s;
}
.swb-toggle .swb-tg-knob::after {
  content: ""; position: absolute; top: 3px; left: 3px; width: 16px; height: 16px; border-radius: 50%;
  background: #fff; transition: transform .16s;
}
.swb-toggle.is-on .swb-tg-knob { background: var(--swb-violet); }
.swb-toggle.is-on .swb-tg-knob::after { transform: translateX(16px); }

/* inputs de texto / select (enlaces) */
.swb-text-input, .swb-select {
  width: 100%; background: var(--swb-bg2); border: 1px solid var(--swb-line); border-radius: 11px;
  padding: 11px 13px; color: var(--swb-ink); font-family: var(--swb-ui); font-weight: 600; font-size: 13px;
  transition: border-color .14s; outline: none;
}
.swb-text-input:focus, .swb-select:focus { border-color: var(--swb-violet); }
.swb-text-input::placeholder { color: var(--swb-dim2); font-weight: 500; }
.swb-select { appearance: none; cursor: pointer;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%239b93b8' stroke-width='2'%3E%3Cpath d='m3 5 3 3 3-3'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 13px center; padding-right: 32px;
}
.swb-link-sec { display: grid; gap: 0; }
.swb-link-hint {
  display: flex; align-items: center; gap: 7px; margin-top: -4px;
  font-size: 11.5px; color: var(--swb-dim); line-height: 1.4;
}
.swb-link-hint svg { width: 14px; height: 14px; flex: 0 0 14px; color: var(--swb-violet-soft); }
.swb-link-hint b { color: var(--swb-violet-soft); font-weight: 700; }
/* elemento con enlace en vista previa = puntero */
.sitw-builder.is-preview .s-has-link,
.sitw-builder.is-preview [data-link-type]:not([data-link-type="none"]) { cursor: pointer; }

/* reordenar capas arrastrando */
.swb-layer-blk { position: relative; }
.swb-layer-blk.is-dragging { opacity: .45; }
.swb-layer-grip { display: inline-flex; color: var(--swb-dim2); cursor: grab; opacity: .55; margin-right: -2px; }
.swb-layer-grip svg { width: 13px; height: 13px; }
.swb-layer-row:hover .swb-layer-grip { opacity: 1; color: var(--swb-violet-soft); }
.swb-layer-blk.drop-before::before,
.swb-layer-blk.drop-after::after {
  content: ""; position: absolute; left: 0; right: 0; height: 2px;
  background: var(--swb-violet); box-shadow: 0 0 8px var(--swb-violet); border-radius: 2px;
}
.swb-layer-blk.drop-before::before { top: -3px; }
.swb-layer-blk.drop-after::after { bottom: -3px; }

/* ===== TABS de la paleta (Piezas / Capas) ===== */
.swb-tabs { display: flex; gap: 4px; padding: 0 16px 4px; }
.swb-tab {
  flex: 1 1 auto; font-family: var(--swb-ui); font-weight: 700; font-size: 11px; letter-spacing: .5px; text-transform: uppercase;
  color: var(--swb-dim); background: var(--swb-bg2); border: 1px solid var(--swb-line); border-radius: 9px;
  padding: 8px; cursor: pointer; transition: color .14s, border-color .14s, background .14s;
  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
}
.swb-tab svg { width: 14px; height: 14px; }
.swb-tab:hover { color: var(--swb-violet-soft); }
.swb-tab.is-on { color: #fff; border-color: var(--swb-violet); background: var(--swb-elev); }

/* ===== panel de CAPAS ===== */
.swb-layers { overflow-y: auto; padding: 6px 12px 20px; flex: 1 1 auto; }
.swb-layer-blk { margin-bottom: 6px; }
.swb-layer-row {
  display: flex; align-items: center; gap: 8px; width: 100%;
  padding: 9px 10px; border-radius: 9px; cursor: pointer;
  color: var(--swb-ink); background: var(--swb-panel2); border: 1px solid var(--swb-line);
  font-family: var(--swb-ui); font-size: 13px; font-weight: 600; text-align: left;
  transition: border-color .12s, background .12s;
}
.swb-layer-row:hover { border-color: var(--swb-violet); }
.swb-layer-row.is-sel { border-color: var(--swb-violet); background: var(--swb-elev); box-shadow: 0 0 0 1px var(--swb-violet); }
.swb-layer-row .swb-layer-ic { color: var(--swb-violet-soft); display: inline-flex; }
.swb-layer-row .swb-layer-ic svg { width: 15px; height: 15px; }
.swb-layer-row .swb-layer-tx { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.swb-layer-kids { margin: 3px 0 4px 14px; display: grid; gap: 3px; border-left: 1px solid var(--swb-line); padding-left: 8px; }
.swb-layer-kid {
  display: flex; align-items: center; gap: 7px; width: 100%;
  padding: 6px 9px; border-radius: 8px; cursor: pointer;
  color: var(--swb-dim); background: transparent; border: 1px solid transparent;
  font-family: var(--swb-ui); font-size: 12px; text-align: left;
  transition: color .12s, background .12s;
}
.swb-layer-kid:hover { color: var(--swb-violet-soft); background: var(--swb-panel2); }
.swb-layer-kid.is-sel { color: #fff; background: var(--swb-elev); border-color: var(--swb-line2); }
.swb-layer-kid .swb-layer-ic svg { width: 13px; height: 13px; }
.swb-layers-empty { padding: 26px 16px; text-align: center; color: var(--swb-dim2); font-size: 13px; line-height: 1.5; }

/* zona de drop de imagen (arrastrar archivo desde la compu) */
.swb-block .s-img.is-dropping { outline: 3px dashed var(--swb-green); outline-offset: -3px; }
.sitw-builder.is-filedrag .swb-stage::after {
  content: "Soltá la imagen sobre un bloque de imagen"; position: absolute; left: 50%; top: 14px;
  transform: translateX(-50%); z-index: 40; pointer-events: none;
  background: rgba(54,227,160,.16); border: 1px solid var(--swb-green); color: var(--swb-green);
  font-size: 12.5px; font-weight: 700; padding: 8px 14px; border-radius: 999px;
}

/* =================================================================
   MODO VISTA PREVIA
   ================================================================= */
.sitw-builder.is-preview .swb-palette,
.sitw-builder.is-preview .swb-inspector { display: none; }
.sitw-builder.is-preview .swb-block-frame,
.sitw-builder.is-preview .swb-block-tag,
.sitw-builder.is-preview .swb-block-tools { display: none !important; }
.sitw-builder.is-preview .swb-block [contenteditable]:hover,
.sitw-builder.is-preview .swb-block [contenteditable]:focus { box-shadow: none; background: none; }
.sitw-builder.is-preview .s-img-hint { display: none; }
.sitw-builder.is-preview .swb-selbox,
.sitw-builder.is-preview .swb-guides { display: none !important; }
.sitw-builder.is-preview .swb-txt,
.sitw-builder.is-preview .s-img,
.sitw-builder.is-preview .s-card,
.sitw-builder.is-preview .s-pill { cursor: default !important; box-shadow: none !important; }
.sitw-builder.is-preview .swb-stage { padding: 30px 26px 60px; }

/* =================================================================
   DOCK NARRADOR (entidad)
   ================================================================= */
.swb-dock {
  position: absolute; left: 50%; bottom: 22px; transform: translateX(-50%);
  z-index: 40; width: min(640px, calc(100% - 600px));
  display: flex; align-items: center; gap: 14px;
  padding: 13px 15px; background: rgba(12,9,24,.96);
  border: 1px solid var(--swb-violet); border-radius: 14px;
  box-shadow: 0 18px 44px rgba(0,0,0,.6), 0 0 30px rgba(124,77,255,.25);
}
.swb-dock.is-hidden { display: none; }
.swb-dock-av {
  width: 40px; height: 40px; flex: 0 0 40px; border-radius: 10px;
  display: grid; place-items: center;
  background: linear-gradient(135deg, var(--swb-violet), var(--swb-violet-2));
  box-shadow: 0 0 18px rgba(124,77,255,.6);
}
.swb-dock-say { flex: 1 1 auto; font-size: 14px; line-height: 1.5; color: var(--swb-ink); }
.swb-dock-next {
  font-family: var(--swb-ui); font-weight: 700; font-size: 12.5px;
  color: #160a2b; background: var(--swb-violet-soft); border: none;
  border-radius: 10px; padding: 11px 15px; cursor: pointer; white-space: nowrap;
  transition: transform .12s, filter .12s;
}
.swb-dock-next:hover { transform: translateY(-1px); filter: brightness(1.05); }
.swb-dock-next:disabled { opacity: .4; cursor: default; }
.swb-caret { display: inline-block; width: 8px; height: 1.05em; background: var(--swb-green);
  margin-left: 2px; vertical-align: -2px; animation: swbBlink 1s steps(1) infinite; }
@keyframes swbBlink { 50% { opacity: 0; } }

/* =================================================================
   RESUMEN / BOCETO ENVIADO
   ================================================================= */
.swb-summary {
  position: absolute; inset: 0; z-index: 60;
  background: rgba(8,6,15,.94); backdrop-filter: blur(6px);
  display: none; align-items: flex-start; justify-content: center;
  overflow-y: auto; padding: 52px 20px;
}
.swb-summary.is-show { display: flex; }
.swb-summary-card {
  width: 100%; max-width: 660px;
  background: linear-gradient(180deg, var(--swb-panel2), var(--swb-bg2));
  border: 1px solid var(--swb-violet); border-radius: 18px;
  box-shadow: 0 0 60px rgba(124,77,255,.28); padding: 34px; position: relative;
  animation: swbPop .45s cubic-bezier(.2,.9,.2,1);
}
@keyframes swbPop { from { transform: translateY(18px) scale(.97); opacity: 0; } }
.swb-summary-badge {
  display: inline-flex; align-items: center; gap: 8px; margin: 0 auto 16px; padding: 7px 14px;
  font-size: 11.5px; font-weight: 700; letter-spacing: 1px; text-transform: uppercase;
  color: var(--swb-green); background: rgba(54,227,160,.1); border: 1px solid rgba(54,227,160,.35);
  border-radius: 999px; width: max-content;
}
.swb-summary-badge svg { width: 15px; height: 15px; }
.swb-summary-card h2 {
  font-family: var(--swb-pixel); font-size: 17px; line-height: 1.5;
  color: var(--swb-ink); text-align: center; margin: 0 0 8px; text-shadow: 2px 2px 0 #000;
}
.swb-summary-sub { text-align: center; color: var(--swb-dim); font-size: 15px; margin-bottom: 24px; }
.swb-summary-meta { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 20px; }
.swb-meta-box { background: var(--swb-bg2); border: 1px solid var(--swb-line); border-radius: 12px; padding: 14px 15px; }
.swb-meta-k { font-size: 10px; font-weight: 700; letter-spacing: 1px; text-transform: uppercase; color: var(--swb-dim2); margin-bottom: 7px; }
.swb-meta-v { font-size: 15.5px; font-weight: 600; color: var(--swb-violet-soft); }
.swb-summary-secs { margin-bottom: 24px; }
.swb-summary-secs h3 { font-size: 11px; font-weight: 700; letter-spacing: 1px; text-transform: uppercase; color: var(--swb-violet-soft); margin: 0 0 12px; }
.swb-seclist { list-style: none; margin: 0; padding: 0; counter-reset: s; display: grid; gap: 7px; }
.swb-seclist li {
  counter-increment: s; display: flex; align-items: center; gap: 12px;
  font-size: 15px; color: var(--swb-ink); font-weight: 500;
  padding: 11px 13px; background: var(--swb-bg2); border: 1px solid var(--swb-line); border-radius: 10px;
}
.swb-seclist li::before {
  content: counter(s, decimal-leading-zero);
  font-family: var(--swb-pixel); font-size: 9px; color: var(--swb-green);
  background: var(--swb-panel); border: 1px solid var(--swb-line2); border-radius: 7px;
  padding: 7px 8px; min-width: 30px; text-align: center;
}
.swb-summary-pitch {
  font-size: 15px; line-height: 1.6; text-align: center; color: var(--swb-dim);
  margin: 4px 0 22px; padding: 0 6px;
}
.swb-summary-pitch b { color: var(--swb-violet-soft); font-weight: 700; }
.swb-summary-actions { display: flex; flex-direction: column; gap: 12px; align-items: center; }
.swb-cta {
  width: 100%; display: inline-flex; align-items: center; justify-content: center; gap: 9px;
  font-family: var(--swb-ui); font-weight: 700; font-size: 15px;
  color: #06231a; background: linear-gradient(180deg, #4af0ad, var(--swb-green)); border: none; border-radius: 13px;
  padding: 17px; cursor: pointer; box-shadow: 0 12px 30px rgba(54,227,160,.32); transition: transform .12s, filter .12s;
}
.swb-cta:hover { transform: translateY(-2px); filter: brightness(1.04); }
.swb-cta svg { width: 17px; height: 17px; }
.swb-ghost {
  font-family: var(--swb-ui); font-weight: 600; font-size: 13px;
  color: var(--swb-dim); background: none; border: none; cursor: pointer;
  padding: 6px; transition: color .14s;
}
.swb-ghost:hover { color: var(--swb-violet-soft); }

/* =================================================================
   TOAST
   ================================================================= */
.swb-toast {
  position: absolute; left: 50%; top: 80px; transform: translateX(-50%) translateY(-12px);
  z-index: 50; font-size: 13px; font-weight: 600; color: var(--swb-ink);
  background: rgba(12,9,24,.97); border: 1px solid var(--swb-violet); border-radius: 11px; padding: 12px 18px;
  box-shadow: 0 14px 34px rgba(0,0,0,.6); opacity: 0; transition: opacity .25s, transform .25s;
  pointer-events: none; max-width: 80%;
}
.swb-toast.is-show { opacity: 1; transform: translateX(-50%) translateY(0); }

/* =================================================================
   RESPONSIVE del editor
   ================================================================= */
@media (max-width: 1180px) {
  .swb-inspector { width: 256px; flex-basis: 256px; }
  .swb-palette { width: 296px; flex-basis: 296px; }
  .swb-dock { width: min(520px, calc(100% - 600px)); }
}
@media (max-width: 980px) {
  .swb-inspector { position: absolute; right: 0; top: 0; bottom: 0; z-index: 35; width: 300px; flex-basis: 300px;
    transform: translateX(100%); transition: transform .3s; box-shadow: -20px 0 50px rgba(0,0,0,.5); }
  .sitw-builder.show-insp .swb-inspector { transform: none; }
  .swb-palette { width: 280px; flex-basis: 280px; }
  .swb-dock { width: calc(100% - 300px); }
}
/* el toggle de piezas solo existe en pantallas chicas */
.swb-pal-fab { display: none; }

@media (max-width: 720px) {
  /* barra superior en dos filas: el logo solo y grande arriba,
     los controles (solo iconos) debajo */
  .swb-top { flex-wrap: wrap; gap: 6px 8px; padding: 8px 10px 7px; justify-content: center; }
  .swb-brand { width: 100%; justify-content: center; }
  .swb-brand-logo { height: 30px; max-width: 240px; }
  .swb-brand-txt small { display: none; }
  .swb-spacer { display: none; }
  .swb-btn-ghost span, .swb-btn-primary span { display: none; } /* solo iconos */
  .swb-btn-ghost, .swb-btn-primary { padding: 9px 12px; }
  .swb-top .swb-devices { padding: 3px; }
  .swb-dev { width: 34px; height: 30px; }

  .swb-main { flex-direction: column; }

  /* lienzo: el boceto es el protagonista, a pantalla completa */
  .swb-stage { padding: 12px 8px 110px; }
  .swb-frame { border-radius: 12px; }
  .s-sec { padding: 40px 20px; }
  .s-hero { grid-template-columns: 1fr !important; gap: 26px; }
  .s-grid { grid-template-columns: 1fr !important; }
  .s-foot { grid-template-columns: 1fr; gap: 20px; }

  /* paleta: hoja inferior que se abre/cierra con el boton flotante */
  .swb-palette {
    position: absolute; left: 0; right: 0; bottom: 0; top: auto;
    width: 100%; flex: 0 0 auto; max-height: 62vh; z-index: 44;
    border-right: none; border-top: 1px solid var(--swb-line2);
    border-radius: 18px 18px 0 0;
    box-shadow: 0 -24px 60px rgba(0,0,0,.6);
    transform: translateY(calc(100% + 60px));
    transition: transform .3s cubic-bezier(.2,.8,.2,1);
  }
  .sitw-builder.show-pal .swb-palette { transform: none; }
  .swb-pane-head { position: relative; padding: 10px 12px 2px; }
  .swb-pane-head::before {
    content: ""; position: absolute; left: 50%; top: 6px;
    width: 44px; height: 4px; border-radius: 4px;
    background: var(--swb-line2); transform: translateX(-50%);
  }
  .swb-pane-note { display: none; }
  .swb-tabs { padding: 4px 12px 8px; }
  .swb-palette-list { padding: 2px 10px 16px; }
  .swb-pgroup-body { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
  .swb-pgroup.is-collapsed .swb-pgroup-body { display: none; }
  .swb-chip { margin: 0; }
  .swb-chip-thumb { height: 64px; }
  .swb-chip-scale { transform: scale(.16); }
  .swb-chip-cap { padding: 6px 8px; gap: 6px; }
  .swb-chip-name b { font-size: 11px; }
  .swb-chip-name small { display: none; }

  /* boton flotante de piezas (+ → ✕) */
  .swb-pal-fab {
    display: grid; place-items: center;
    position: absolute; left: 14px; bottom: 14px; z-index: 46;
    width: 52px; height: 52px; border-radius: 50%;
    background: linear-gradient(135deg, var(--swb-violet), var(--swb-violet-2));
    color: #fff; cursor: pointer;
    box-shadow: 0 10px 30px rgba(124,77,255,.5), inset 0 0 0 1px rgba(255,255,255,.2);
  }
  .swb-pal-fab svg { transition: transform .25s; }
  .sitw-builder.show-pal .swb-pal-fab svg { transform: rotate(45deg); }
  /* mientras la entidad habla (dock visible), el FAB espera su turno */
  .sitw-builder:has(.swb-dock:not(.is-hidden)) .swb-pal-fab { display: none; }

  /* inspector: hoja inferior (el boceto queda visible arriba) */
  .swb-inspector {
    position: absolute; left: 0; right: 0; bottom: 0; top: auto;
    width: 100%; flex-basis: auto; max-height: 54vh; z-index: 45;
    border-left: none; border-top: 1px solid var(--swb-line2);
    border-radius: 18px 18px 0 0;
    box-shadow: 0 -24px 60px rgba(0,0,0,.6);
    transform: translateY(calc(100% + 60px));
    transition: transform .3s cubic-bezier(.2,.8,.2,1);
  }
  .sitw-builder.show-insp .swb-inspector { transform: none; }
  .swb-inspector::before {
    content: ""; display: block; flex: 0 0 auto;
    width: 44px; height: 4px; border-radius: 4px;
    background: var(--swb-line2); margin: 8px auto 2px;
  }

  /* dock de la entidad */
  .swb-dock { width: calc(100% - 20px); bottom: 12px; }
  .swb-dock-say { font-size: 13px; }

  /* resumen final */
  .swb-summary { padding: 18px 12px; }
  .swb-summary-card { padding: 22px 16px; }
  .swb-summary-meta { grid-template-columns: 1fr 1fr; gap: 8px; }
}
