:root{
  --cream:#F7F3EC; --cream-soft:#FBF8F2; --surface:#FFFFFF;
  --ink:#2A2620; --ink-soft:#4A443C; --muted:#807769;
  --terracotta:#BE6A4A; --terracotta-d:#A8553A;
  --sage:#7E8C6B; --sage-deep:#5C6B4E; --gold:#A98B5E;
  --border:#E7DFD1; --border-soft:#EFE9DD;
  --ok:#4f7a4a; --okbg:#eaf1e7; --warn:#9a7b2e; --warnbg:#f6efdc;
  --bad:#a8553a; --badbg:#f6e7df; --info:#5a6f86; --infobg:#e8eef4;
  --font-display:"Fraunces",Georgia,serif;
  --font-body:"Manrope",system-ui,-apple-system,sans-serif;
  --font-script:"Great Vibes",cursive;
  --r-sm:10px; --r-md:16px; --r-lg:22px;
  --sh-sm:0 2px 8px rgba(42,38,32,.06); --sh-md:0 10px 30px -14px rgba(42,38,32,.2);
}
*{box-sizing:border-box}
body{margin:0;background:var(--cream);color:var(--ink);font-family:var(--font-body);font-size:15px;line-height:1.55}
a{color:var(--terracotta-d);text-decoration:none}
a:hover{text-decoration:underline}
h1,h2,h3{font-family:var(--font-display);font-weight:600;line-height:1.15;margin:0}
.script{font-family:var(--font-script);font-weight:400;color:var(--terracotta)}
.muted{color:var(--muted)}
.wrap{max-width:1080px;margin:0 auto;padding:0 22px}

/* App header */
.appbar{background:var(--cream-soft);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:20}
.appbar__in{max-width:1080px;margin:0 auto;padding:14px 22px;display:flex;align-items:center;gap:22px}
.appbar__brand{display:flex;align-items:center;gap:9px;font-family:var(--font-display);font-size:20px;font-weight:600;color:var(--ink)}
.appbar__brand:hover{text-decoration:none}
.appbar__nav{display:flex;gap:18px;margin-left:auto;font-size:14px}
.appbar__nav a{color:var(--ink-soft)}
.appbar__mode{font-size:12px;padding:4px 10px;border-radius:999px;border:1px solid var(--border)}
.appbar__mode.sim{background:var(--warnbg);color:var(--warn)}
.appbar__mode.real{background:var(--okbg);color:var(--ok)}
.appbar__user{font-size:13px;color:var(--muted)}
.appbar__logout{font-size:13px;color:var(--terracotta-d);font-weight:600}
@media(max-width:680px){.appbar__user{display:none}.appbar__nav{gap:12px}}

main{padding:30px 0 70px}
.page-head{margin-bottom:24px}
.page-head h1{font-size:30px}
.page-head p{color:var(--muted);margin:6px 0 0}

/* Cards / grid */
.grid{display:grid;gap:18px}
.grid.cols-2{grid-template-columns:repeat(2,1fr)}
.grid.cols-3{grid-template-columns:repeat(3,1fr)}
.grid.cols-4{grid-template-columns:repeat(4,1fr)}
@media(max-width:880px){.grid.cols-4{grid-template-columns:repeat(2,1fr)}.grid.cols-3,.grid.cols-2{grid-template-columns:1fr}}
@media(max-width:520px){.grid.cols-4{grid-template-columns:1fr}}
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:20px;box-shadow:var(--sh-sm)}
.card h2{font-size:19px;margin-bottom:4px}
.card h3{font-size:16px}
.section-title{font-size:14px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:34px 0 14px;font-family:var(--font-body);font-weight:600}

/* Stats */
.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:16px 18px}
.stat__num{font-family:var(--font-display);font-size:30px;font-weight:600;line-height:1}
.stat__label{font-size:13px;color:var(--muted);margin-top:4px}

/* Tables */
.table{width:100%;border-collapse:collapse;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);overflow:hidden}
.table th,.table td{text-align:left;padding:11px 14px;border-bottom:1px solid var(--border-soft);font-size:14px;vertical-align:middle}
.table th{background:var(--cream-soft);color:var(--muted);font-weight:600;font-size:12px;letter-spacing:.04em;text-transform:uppercase}
.table tr:last-child td{border-bottom:none}
.table td.num{font-variant-numeric:tabular-nums}

/* Badges */
.badge{display:inline-block;font-size:12px;font-weight:600;padding:3px 9px;border-radius:999px;border:1px solid transparent}
.badge.ok{background:var(--okbg);color:var(--ok)}
.badge.warn{background:var(--warnbg);color:var(--warn)}
.badge.bad{background:var(--badbg);color:var(--bad)}
.badge.info{background:var(--infobg);color:var(--info)}
.badge.mut{background:var(--border-soft);color:var(--muted)}

/* Forms */
.field{margin-bottom:14px}
.field label{display:block;font-size:13px;font-weight:600;color:var(--ink-soft);margin-bottom:5px}
.field input,.field select,.field textarea{
  width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:var(--r-sm);
  background:var(--surface);font:inherit;color:var(--ink)}
.field textarea{resize:vertical;min-height:90px}
.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid var(--terracotta);outline-offset:1px;border-color:var(--terracotta)}
.row{display:flex;gap:14px;flex-wrap:wrap}
.row>*{flex:1;min-width:160px}

/* Buttons */
.btn{display:inline-flex;align-items:center;gap:8px;padding:10px 18px;border-radius:999px;border:1px solid transparent;
  font:inherit;font-weight:600;font-size:14px;cursor:pointer;text-decoration:none;transition:.18s}
.btn:hover{text-decoration:none;transform:translateY(-1px)}
.btn--primary{background:var(--terracotta);color:#fff}
.btn--primary:hover{background:var(--terracotta-d)}
.btn--ghost{background:transparent;color:var(--ink);border-color:var(--border)}
.btn--ghost:hover{background:var(--cream-soft)}
.btn--sm{padding:6px 12px;font-size:13px}
.btn--block{width:100%;justify-content:center}

.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:18px}
.toolbar .spacer{flex:1}
.empty{text-align:center;color:var(--muted);padding:34px;border:1px dashed var(--border);border-radius:var(--r-md);background:var(--cream-soft)}
.notice{padding:12px 16px;border-radius:var(--r-sm);margin-bottom:16px;font-size:14px}
.notice.ok{background:var(--okbg);color:var(--ok)}
.notice.bad{background:var(--badbg);color:var(--bad)}
code.tok{font-family:ui-monospace,Menlo,monospace;font-size:12px;background:var(--cream-soft);padding:2px 6px;border-radius:6px;border:1px solid var(--border)}

/* Guest invitation */
.inv{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:30px 18px;
  background:radial-gradient(120% 80% at 50% 0%,#fff 0%,var(--cream) 60%)}
.inv__card{max-width:430px;width:100%;background:var(--surface);border:1px solid var(--border);
  border-radius:var(--r-lg);box-shadow:var(--sh-md);overflow:hidden;text-align:center}
.inv__media{padding:34px 24px 14px;background:linear-gradient(180deg,var(--cream-soft),#fff)}
.inv__kicker{font-size:12px;letter-spacing:.22em;text-transform:uppercase;color:var(--gold);margin:0 0 6px}
.inv__title{font-family:var(--font-script);font-size:46px;color:var(--terracotta);margin:0}
.inv__sub{color:var(--ink-soft);margin:6px 0 0}
.inv__body{padding:8px 26px 28px}
.inv__meta{margin:14px 0;color:var(--ink-soft);font-size:15px}
.inv__qr{margin:18px auto 6px;width:150px;height:150px}
.inv__qr img{width:100%;height:100%;image-rendering:pixelated}
.inv__hint{font-size:12px;color:var(--muted)}
.rsvp-box{border-top:1px solid var(--border-soft);margin-top:18px;padding-top:18px;text-align:left}
.rsvp-box h3{font-size:18px;text-align:center;margin-bottom:12px}
.choice{display:flex;gap:10px;margin-bottom:12px}
.choice .btn{flex:1;justify-content:center}
.choice .btn.active{outline:2px solid var(--terracotta);outline-offset:1px}

/* Check-in scanner */
.scan__view{position:relative;max-width:460px;margin:0 auto;border-radius:var(--r-md);overflow:hidden;background:#000;aspect-ratio:1}
.scan__view video{width:100%;height:100%;object-fit:cover}
.scan__result{max-width:460px;margin:16px auto 0}
.result-card{border-radius:var(--r-md);padding:18px 20px;text-align:center;border:1px solid var(--border)}
.result-card.ok{background:var(--okbg);border-color:#cfe0c6}
.result-card.bad{background:var(--badbg);border-color:#ecccbe}
.result-card.warn{background:var(--warnbg);border-color:#ead9ad}
.result-card h2{font-size:24px;margin-bottom:4px}
.result-card .big{font-size:15px}

/* =========================================================
   INVITACIÓN EDITORIAL (/i/:token)
   ========================================================= */
.viv-body{margin:0;color:var(--ink);background:linear-gradient(180deg,#ffffff,#FBF8F2 28%,#F7F3EC);
  font-family:"Cormorant Garamond",Georgia,serif;font-size:19px;line-height:1.7}
.viv-eyebrow{display:inline-block;font-family:var(--font-body);font-size:.72rem;letter-spacing:.3em;
  text-transform:uppercase;color:var(--gold);font-weight:600;margin-bottom:1rem}
.viv-eyebrow--light{color:rgba(255,255,255,.85)}
.viv-orn{display:flex;align-items:center;justify-content:center;gap:14px;color:var(--gold);margin:1.3rem 0;font-size:.85rem}
.viv-orn span{height:1px;width:46px;background:currentColor;opacity:.55}

/* Portada */
.viv-cover{position:relative;min-height:100svh;display:flex;flex-direction:column;align-items:center;
  justify-content:center;text-align:center;padding:40px 24px;color:#fff;
  background:linear-gradient(160deg,#6a785a 0%,#3a3a31 55%,#2A2620 100%)}
.viv-cover__frame{border:1px solid rgba(255,255,255,.28);max-width:560px;width:100%;
  padding:clamp(2.4rem,8vw,4.2rem) clamp(1.4rem,6vw,3.4rem)}
.viv-names{font-family:"Great Vibes",cursive;font-weight:400;font-size:clamp(3.4rem,13vw,6rem);
  line-height:1.02;margin:.15em 0;color:#fff}
.viv-cover .viv-orn{color:rgba(255,255,255,.8)}
.viv-cover__date{font-family:var(--font-display);font-size:1.15rem;margin:.3rem 0 .1rem;color:#fff}
.viv-cover__place{font-size:1rem;color:rgba(255,255,255,.82);margin:.1rem 0 0}
.viv-open{margin-top:2.2rem;padding:.85rem 2rem;border:1px solid rgba(255,255,255,.6);border-radius:999px;
  background:transparent;color:#fff;font-family:var(--font-body);font-size:.8rem;letter-spacing:.14em;
  text-transform:uppercase;cursor:pointer;transition:.22s}
.viv-open:hover{background:#fff;color:var(--ink)}
.viv-scrollcue{position:absolute;bottom:24px;left:50%;transform:translateX(-50%)}
.viv-scrollcue span{display:block;width:1px;height:46px;background:linear-gradient(rgba(255,255,255,.75),transparent);
  animation:vivcue 1.9s ease-in-out infinite}
@keyframes vivcue{0%{transform:scaleY(.3);transform-origin:top;opacity:.4}50%{transform:scaleY(1);opacity:1}100%{transform:scaleY(.3);transform-origin:bottom;opacity:.4}}

/* Cuerpo */
.viv-main{max-width:640px;margin:0 auto;padding:0 24px}
.viv-sec{padding:clamp(3rem,9vw,5.5rem) 0;text-align:center;border-bottom:1px solid var(--border-soft)}
.viv-h2{font-family:var(--font-display);font-weight:500;font-size:clamp(1.7rem,5vw,2.4rem);line-height:1.16;margin:0 0 1rem;color:var(--ink)}
.viv-h2 em,.viv-hi em{font-family:"Great Vibes",cursive;font-style:normal;color:var(--terracotta);font-weight:400}
.viv-h2 em{font-size:1.25em;line-height:.8}
.viv-hi{font-family:var(--font-display);font-size:1.5rem;margin:0 0 .6rem}
.viv-hi em{font-size:1.5em}
.viv-lead,.viv-text{font-size:1.18rem;color:var(--ink-soft);max-width:46ch;margin:0 auto}
.viv-text strong{color:var(--ink)}

/* Frase */
.viv-quote{padding:clamp(2.6rem,7vw,4rem) 0;text-align:center;border-bottom:1px solid var(--border-soft)}
.viv-quote p{font-family:"Fraunces",serif;font-style:italic;font-size:clamp(1.3rem,4vw,1.75rem);
  line-height:1.5;color:var(--ink-soft);max-width:32ch;margin:0 auto;position:relative}
.viv-quote p::before{content:"“";font-family:"Fraunces",serif;font-size:3rem;color:var(--gold);
  display:block;line-height:.5;margin-bottom:.6rem}

/* Cuenta regresiva */
.viv-count__grid{display:flex;justify-content:center;gap:clamp(.5rem,3vw,1.4rem);margin-top:1.5rem}
.viv-count__cell{min-width:64px;padding:1rem .55rem;border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface)}
.viv-count__cell span{display:block;font-family:var(--font-display);font-size:clamp(1.6rem,5vw,2.2rem);font-weight:600;color:var(--terracotta);line-height:1}
.viv-count__cell small{display:block;font-family:var(--font-body);font-size:.64rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin-top:.45rem}

/* Itinerario */
.viv-cards{display:flex;flex-direction:column;gap:1.2rem;margin-top:1.7rem}
@media(min-width:560px){.viv-cards{flex-direction:row}.viv-cards .viv-card{flex:1}}
.viv-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:2.1rem 1.5rem;box-shadow:var(--sh-sm)}
.viv-card__ico{width:46px;height:46px;margin:0 auto 1rem;color:var(--terracotta)}
.viv-card__ico svg{width:100%;height:100%}
.viv-card__title{font-family:var(--font-display);font-weight:500;font-size:1.35rem;margin:.3rem 0}
.viv-card__time{font-size:1.05rem;color:var(--ink-soft);margin:.2rem 0}
.viv-card__dir{font-size:.98rem;color:var(--muted);margin:.3rem 0 0}

/* Botones de la invitación */
.viv-btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;font-family:var(--font-body);
  font-size:.8rem;letter-spacing:.1em;text-transform:uppercase;padding:.7rem 1.5rem;border-radius:999px;
  border:1px solid var(--terracotta);color:var(--terracotta);background:transparent;cursor:pointer;
  text-decoration:none;transition:.2s;margin-top:1.2rem}
.viv-btn:hover{background:var(--terracotta);color:#fff}
.viv-btn--out{flex:1;margin-top:0}
.viv-btn--out.is-active{background:var(--terracotta);color:#fff}
.viv-btn--solid{background:var(--terracotta);color:#fff;width:100%;margin-top:1.3rem}
.viv-btn--solid:hover{background:var(--terracotta-d)}

/* Hashtag */
.viv-hashtag{font-family:"Great Vibes",cursive;font-size:clamp(2rem,7vw,2.8rem);color:var(--terracotta);margin:.4rem 0 0}

/* Pase QR */
.viv-qr{width:190px;height:190px;margin:1.5rem auto 0;padding:14px;background:#fff;border:1px solid var(--border);border-radius:var(--r-md)}
.viv-qr img{width:100%;height:100%;display:block;image-rendering:pixelated}
.viv-pase__hint{font-size:1rem;color:var(--muted);margin-top:1rem}

/* RSVP */
.viv-rsvp__limit{color:var(--muted);font-size:1rem;margin:-.2rem 0 .6rem}
.viv-rsvp__box{max-width:420px;margin:1.5rem auto 0;text-align:left}
.viv-choice{display:flex;gap:.8rem;margin-bottom:1rem}
.viv-field{margin-bottom:1rem}
.viv-field label{display:block;font-family:var(--font-body);font-size:.8rem;color:var(--ink-soft);margin-bottom:.4rem}
.viv-field input{width:100%;padding:.7rem .9rem;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface);font:inherit;color:var(--ink)}
.viv-field input:focus{outline:none;border-color:var(--terracotta);box-shadow:0 0 0 3px rgba(190,106,74,.15)}
.viv-gracias{text-align:center;padding:1.6rem;border-radius:var(--r-md);background:var(--cream-soft);border:1px solid var(--border)}
.viv-gracias.is-yes{background:#eef2e8;border-color:#cfe0c6}
.viv-gracias.is-no{background:#f6efdc;border-color:#ead9ad}
.viv-gracias__title{font-family:var(--font-display);font-size:1.5rem;margin:0;color:var(--ink)}
.viv-gracias__sub{color:var(--muted);margin:.3rem 0 0}

/* Cierre */
.viv-foot{text-align:center;padding:clamp(3rem,9vw,5rem) 24px}
.viv-foot__frase{font-family:"Great Vibes",cursive;font-size:clamp(2rem,6vw,2.6rem);color:var(--terracotta);margin:0}
.viv-foot__host{font-family:var(--font-display);font-style:italic;color:var(--ink-soft);margin:.6rem 0 0}
.viv-credit{display:inline-block;margin-top:1.7rem;font-family:var(--font-body);font-size:.74rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);text-decoration:none}
.viv-credit strong{color:var(--terracotta)}

/* Animación de aparición */
[data-rev]{opacity:0;transform:translateY(20px);transition:opacity .8s cubic-bezier(.22,1,.36,1),transform .8s cubic-bezier(.22,1,.36,1)}
[data-rev].is-in{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){
  [data-rev]{opacity:1!important;transform:none!important}
  .viv-scrollcue span{animation:none}
}

/* =========================================================
   CONSTRUCTOR: documento, temas y bloques nuevos
   ========================================================= */
.viv-body{background:#E8E1D4}
.viv-body.tema-blanco{background:#ECEAE5}
.viv-body.tema-oscuro{background:#14120f}
.viv-doc{max-width:560px;margin:0 auto;min-height:100vh;overflow:hidden;
  background:var(--inv-bg,#FBF8F2);color:var(--ink);
  font-family:var(--inv-ft,"Cormorant Garamond",Georgia,serif);
  --terracotta:var(--acc,#BE6A4A);box-shadow:0 0 80px -30px rgba(0,0,0,.4)}
.tema-blanco .viv-doc{--inv-bg:#ffffff}
.tema-oscuro .viv-doc{--inv-bg:#211e1a;--ink:#f3ebdf;--ink-soft:#d4ccbd;--muted:#9b9285;
  --surface:#2a2620;--cream-soft:#262219;--border:#3b362e;--border-soft:#332f29;--gold:#c9a86a}
/* el acento de cada bloque (b.color) cae a --acc y luego al default */
.viv-block,.viv-cover__frame{--terracotta:var(--ba,var(--acc,#BE6A4A))}
/* secciones de texto: ancho del documento con aire lateral */
.viv-sec{padding:clamp(2.6rem,8vw,4.6rem) 24px}
.viv-quote{padding:clamp(2.6rem,7vw,4rem) 24px}

/* Tamaño de texto (bloque "texto") */
.viv-block.is-s1 .viv-h2{font-size:clamp(1.2rem,4vw,1.5rem)}
.viv-block.is-s2 .viv-h2{font-size:clamp(1.45rem,4.5vw,1.9rem)}
.viv-block.is-s4 .viv-h2{font-size:clamp(2rem,6vw,2.9rem)}
.viv-block.is-s5 .viv-h2{font-size:clamp(2.4rem,8vw,3.6rem)}
.viv-block.is-s1 .viv-text{font-size:1rem}
.viv-block.is-s2 .viv-text{font-size:1.1rem}
.viv-block.is-s4 .viv-text{font-size:1.32rem}
.viv-block.is-s5 .viv-text{font-size:1.5rem}

/* Portada con imagen de fondo */
.viv-cover.has-img{background-color:#2a2620}
.viv-cover.has-img.is-claro{color:var(--ink)}
.viv-cover.has-img.is-claro .viv-eyebrow--light,
.viv-cover.has-img.is-claro .viv-cover__date{color:var(--ink)}
.viv-cover.has-img.is-claro .viv-cover__frame{border-color:rgba(42,38,32,.3)}
/* Logo / imagen sobre la portada */
.viv-cover__logo{display:block;height:auto;width:auto;margin:.3rem 0 1.1rem;object-fit:contain}
.viv-cover__logo.is-sm{max-width:90px;max-height:90px}
.viv-cover__logo.is-md{max-width:150px;max-height:150px}
.viv-cover__logo.is-lg{max-width:220px;max-height:220px}
.viv-cover__logo.is-xl{max-width:300px;max-height:300px}

/* Bloque imagen (full-bleed dentro del documento) */
.viv-img{margin:0;background:var(--cream-soft)}
.viv-img img{display:block;width:100%;object-fit:cover}
.viv-img.is-sm img{height:210px}
.viv-img.is-md img{height:330px}
.viv-img.is-lg img{height:470px}
.viv-img.is-full img{height:100svh}
.viv-img.is-original img{height:auto}  /* diseño completo sin recorte */
.viv-img figcaption{text-align:center;font-size:.86rem;color:var(--muted);padding:.6rem 24px}

/* Galería */
.viv-galeria{display:grid;gap:6px;margin-top:1.4rem}
.viv-galeria.cols-2{grid-template-columns:repeat(2,1fr)}
.viv-galeria.cols-3{grid-template-columns:repeat(3,1fr)}
.viv-galeria img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:8px}

/* Imagen de fondo en cualquier bloque (texto sobre foto) */
.viv-block[style*="--bg-img"]{
  background-image:var(--bg-ov),var(--bg-img);
  background-size:cover;background-position:center;background-color:#2a2620;
  color:var(--bg-fg,#fff)}
.viv-block[style*="--bg-img"] .viv-h2,
.viv-block[style*="--bg-img"] .viv-hi,
.viv-block[style*="--bg-img"] .viv-text,
.viv-block[style*="--bg-img"] .viv-lead,
.viv-block[style*="--bg-img"] .viv-text strong,
.viv-block[style*="--bg-img"] .viv-hashtag,
.viv-block[style*="--bg-img"] .viv-pase__hint,
.viv-block[style*="--bg-img"].viv-quote p{color:var(--bg-fg,#fff)}
.viv-block[style*="--bg-img"] .viv-eyebrow{color:var(--bg-fg,#fff);opacity:.82}

/* =========================================================
   EDITOR DE INVITACIÓN (admin)
   ========================================================= */
.ed{display:grid;grid-template-columns:1fr 380px;gap:26px;align-items:start}
@media(max-width:1000px){.ed{grid-template-columns:1fr}}
.ed__panel{min-width:0}
.ed__head{display:flex;align-items:center;gap:12px;margin-bottom:14px}
.ed__status{font-size:12px;color:var(--muted);margin-left:auto}
.ed__group{margin-bottom:14px;border:1px solid var(--border);border-radius:var(--r-sm);padding:10px 14px;background:var(--surface)}
.ed__group summary{cursor:pointer;font-weight:600;font-size:14px}
.ed__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(135px,1fr));gap:10px;margin-top:12px}
.ed__grid label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--ink-soft)}
.ed__grid select,.ed__grid input{padding:6px 8px;border:1px solid var(--border);border-radius:8px;font:inherit;background:var(--cream-soft)}
.ed__addbar{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:8px 0 16px}
.ed-add{padding:5px 11px;border:1px solid var(--border);border-radius:999px;background:var(--surface);font:inherit;font-size:12.5px;cursor:pointer}
.ed-add:hover{border-color:var(--terracotta);color:var(--terracotta-d)}
.ed__list{display:flex;flex-direction:column;gap:8px}
.ed-card{border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface);overflow:hidden}
.ed-card__h{display:flex;align-items:center;gap:8px;padding:8px 10px}
.ed-card__drag{cursor:grab;color:var(--muted);user-select:none}
.ed-card__t{flex:1;font-size:13.5px;font-weight:600;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ed-card__t small{font-weight:400;color:var(--muted)}
.ed-card__btns{display:flex;gap:2px}
.ed-card__btns button{border:none;background:transparent;cursor:pointer;font-size:14px;padding:3px 6px;border-radius:6px;color:var(--ink-soft)}
.ed-card__btns button:hover{background:var(--cream-soft)}
.ed-card__body{padding:2px 12px 14px;display:grid;gap:9px}
.ed-card__body[hidden]{display:none}
.ed-f{display:flex;flex-direction:column;gap:3px;font-size:12px;color:var(--ink-soft)}
.ed-f>span{font-weight:600}
.ed-f input,.ed-f select,.ed-f textarea{padding:7px 9px;border:1px solid var(--border);border-radius:8px;font:inherit;font-size:13px;background:var(--cream-soft);color:var(--ink)}
.ed-f input[type=color]{padding:2px;height:34px;width:54px}
.ed-f input[type=range]{padding:0}
.ed-align{display:inline-flex;gap:4px}
.ed-align button{width:36px;height:30px;border:1px solid var(--border);border-radius:6px;background:var(--surface);cursor:pointer;font-size:13px}
.ed-align button.on{background:var(--terracotta);color:#fff;border-color:var(--terracotta)}
.ed-img{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ed-img img{width:56px;height:56px;object-fit:cover;border-radius:6px;border:1px solid var(--border)}
.ed-gal{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.ed-gimg{position:relative}
.ed-gimg img{width:56px;height:56px;object-fit:cover;border-radius:6px}
.ed-gimg button{position:absolute;top:-6px;right:-6px;width:18px;height:18px;border-radius:50%;border:none;background:var(--ink);color:#fff;cursor:pointer;font-size:12px;line-height:1;display:flex;align-items:center;justify-content:center}
.ed-galadd{width:56px;height:56px;border:1px dashed var(--border);border-radius:6px;background:var(--cream-soft);cursor:pointer;font-size:11px;color:var(--muted)}
.ed__pv{position:sticky;top:78px}
.ed__phone{width:330px;max-width:100%;margin:0 auto;aspect-ratio:9/19.5;border:11px solid #1c1a17;border-radius:38px;overflow:hidden;background:#000;box-shadow:var(--sh-md)}
.ed__phone iframe{width:100%;height:100%;border:0;background:#fff;display:block}
@media(max-width:1000px){.ed__pv{position:static;margin-top:10px}}
