:root{
  --accent:#e8590c;
  --accent-ink:#a33f09;  /* acento oscurecido: texto pequeño sobre el fondo (WCAG AA) */
  --accent-chip:#a33f09; /* acento oscurecido: fondos con texto blanco pequeño (WCAG AA) */
  --accent-soft:#fce7d8;
  --bg:#faf6ef;
  --surface:#ffffff;
  --ink:#241f1b;
  --muted:#6f665c;
  --line:#e9e2d8;
  --radius:18px;
  --shadow:0 10px 30px rgba(42,38,34,.08);
  --shadow-lg:0 24px 60px rgba(42,38,34,.16);
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{font-family:'Manrope',system-ui,sans-serif;background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;line-height:1.55}
.serif{font-family:'Sora',sans-serif;letter-spacing:-.01em}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}
input,textarea,select{font-family:inherit;font-size:15px}
/* El texto de ejemplo salía casi tan oscuro como lo escrito y se confundía con contenido
   de verdad (Diego, viendo el editor de un menú con "12,50€" en cada plato). Va apagado
   y sin negrita: se lee como pista, no como dato. Todos los campos llevan su <label>. */
input::placeholder,textarea::placeholder{color:color-mix(in srgb, var(--ink) 38%, transparent);font-weight:400;opacity:1}
input:focus::placeholder,textarea:focus::placeholder{color:color-mix(in srgb, var(--ink) 26%, transparent)}
img{max-width:100%;display:block}
a{color:var(--accent)}

/* ---------- Layout shell ---------- */
.topbar{position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:14px;padding:14px clamp(16px,4vw,40px);
  background:rgba(246,243,238,.85);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
.brand{display:flex;align-items:center;gap:10px;font-weight:800;letter-spacing:-.02em;cursor:pointer;font-family:'Sora',sans-serif}
.brand .dot{width:30px;height:30px;border-radius:9px;background:var(--accent);display:grid;place-items:center;color:#fff;font-size:17px}
.topbar .spacer{flex:1}
.crumb{color:var(--muted);font-size:14px;display:flex;align-items:center;gap:8px;min-width:0}
.crumb b{color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.userchip{color:var(--muted);font-size:13px;display:flex;align-items:center;gap:8px;min-width:0}
#userEmail{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:34vw}
/* móvil: inputs a 16px (evita el auto-zoom de iOS al tocar un campo) */

.wrap{max-width:1120px;margin:0 auto;padding:clamp(20px,4vw,44px) clamp(16px,4vw,40px) 80px}

/* ---------- Buttons ---------- */
.btn{display:inline-flex;align-items:center;gap:8px;justify-content:center;padding:11px 18px;border-radius:12px;
  font-weight:600;font-size:14px;background:var(--surface);border:1px solid var(--line);color:var(--ink);transition:.18s;white-space:nowrap}
.btn:hover{border-color:#d8cfc2;transform:translateY(-1px)}
.btn.primary{background:var(--accent);color:#fff;border-color:var(--accent)}
.btn.primary:hover{filter:brightness(1.06)}
.btn.ghost{background:transparent;border-color:transparent;color:var(--muted)}
.btn.ghost:hover{color:var(--ink);background:rgba(0,0,0,.04)}
.btn.sm{padding:8px 13px;font-size:13px}
.btn.danger{color:#c0392b}
.btn.danger:hover{background:#fbeae8;border-color:#f1c9c4}
.btn:disabled{opacity:.55;pointer-events:none}

/* ---------- Home / projects ---------- */
.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;flex-wrap:wrap;margin-bottom:26px}
.page-head h1{font-size:clamp(26px,5vw,40px);font-weight:600;letter-spacing:-.02em}
.page-head p{color:var(--muted);margin-top:4px}
.sort-ctl{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--muted);font-weight:600;white-space:nowrap}
.sort-ctl select{font:inherit;font-weight:600;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:8px 12px;cursor:pointer}
.sort-ctl select:hover{border-color:#d8cfc2}
.grid{display:grid;gap:18px;grid-template-columns:repeat(auto-fill,minmax(255px,1fr))}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:22px;
  box-shadow:var(--shadow);transition:.2s;cursor:pointer;position:relative;overflow:hidden}
.card:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg)}
.card .logo{width:54px;height:54px;border-radius:14px;display:grid;place-items:center;font-size:26px;font-weight:700;color:#fff;margin-bottom:16px}
.card h3{font-size:20px;font-weight:600;letter-spacing:-.01em}
.lang-chip{font-family:'Manrope',sans-serif;font-size:11px;font-weight:700;letter-spacing:.05em;vertical-align:middle;background:var(--accent-soft);color:var(--accent);padding:2px 7px;border-radius:6px;margin-left:8px;position:relative;top:-2px}
.lang-row{display:flex;gap:6px;margin-top:10px;flex-wrap:wrap}
.lang-chip.lv{margin-left:0;top:0;cursor:pointer;border:1px solid transparent}
.lang-chip.lv:hover{border-color:var(--accent)}
.lang-chip.lv.pendv{background:#fdf3d7;color:#8a6d1a}
.lang-switch{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin:4px 0 18px}
.plan-row+.lang-switch{margin-top:10px}
.lang-switch .lbl{font-size:12.5px;color:var(--muted);margin-right:2px}
.lang-chip.lv.big{display:inline-flex;align-items:center;gap:7px;min-height:38px;font-size:12.5px;padding:8px 14px;border-radius:9px;background:var(--surface);border:1px solid var(--line);color:var(--muted);font-family:'Manrope',sans-serif;cursor:pointer}
.lang-chip.lv.big:hover{border-color:var(--accent);color:var(--accent)}
.lang-chip.lv.big.on{background:var(--accent);border-color:var(--accent);color:#fff}
.cocina-pills{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}
.cpill{font-family:'Manrope',sans-serif;font-size:13px;font-weight:600;padding:7px 13px;border-radius:999px;border:1px solid var(--line);background:var(--surface);color:var(--muted);cursor:pointer;user-select:none}
.cpill:hover{border-color:var(--accent);color:var(--accent)}
.cpill.on{background:var(--accent);border-color:var(--accent);color:#fff}
.up-motivo{background:#fdf3e2;border:1px solid #eed9b0;color:#6b4a08;border-radius:12px;padding:12px 14px;font-size:14px;margin-bottom:18px;line-height:1.5}
/* La Oferta Fundador iba perdida al final del modal; es el argumento mas fuerte que hay,
   asi que sube justo debajo del motivo, que es lo primero que se lee. */
.up-fund{background:#241f1b;color:#fff;border-radius:12px;padding:11px 14px;margin:10px 0 4px;
  font-size:13.5px;line-height:1.5}
.up-fund b{color:#ffc107}
.up-fund code{font-family:'Sora',sans-serif;font-weight:800;background:rgba(255,255,255,.16);
  border-radius:5px;padding:1px 7px;letter-spacing:.04em}
.up-plans{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:20px}
.up-plan{position:relative;border:1.5px solid var(--line);border-radius:16px;padding:22px 18px 18px;text-align:center;background:var(--surface)}
.up-plan.best{border-color:var(--accent);box-shadow:0 8px 24px rgba(179,84,30,.12)}
.up-tag{position:absolute;top:-11px;left:50%;transform:translateX(-50%);background:var(--accent);color:#fff;font-size:11.5px;font-weight:800;padding:4px 12px;border-radius:999px;white-space:nowrap}
.up-name{font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:6px}
.up-price{font-size:34px;font-weight:800;color:var(--ink);line-height:1}
.up-price span{font-size:15px;font-weight:600;color:var(--muted)}
.up-sub{font-size:12.5px;color:var(--muted);margin:8px 0 14px;line-height:1.45}
.up-cta{display:block;padding:12px;border-radius:11px;border:1.5px solid var(--accent);color:var(--accent);font-weight:700;font-size:14.5px;text-decoration:none}
.up-cta.primary{background:var(--accent);color:#fff}
.up-cta:hover{filter:brightness(.96)}
.up-bens{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px 16px;margin-bottom:6px}
.up-b{display:flex;gap:9px;align-items:flex-start;font-size:13.5px;color:#4a443c;line-height:1.45}
.up-b span{flex:0 0 auto}
.up-foot{text-align:center;font-size:12.5px;color:var(--muted);margin-top:14px;line-height:1.6;border-top:1px solid var(--line);padding-top:14px}
@media(max-width:560px){.up-plans,.up-bens{grid-template-columns:1fr}}
.onboard{background:var(--surface);border:1.5px solid var(--accent);border-radius:18px;padding:20px 22px;margin:0 0 22px;box-shadow:var(--shadow-lg)}
/* El botón de la guía competía con otros dos botones idénticos en la cabecera del
   restaurante: quien entra por primera vez no sabía por dónde empezar. Va en acento
   y lleva el porcentaje que le falta. */
.guide-cta{background:var(--accent);color:#fff;border-color:var(--accent);font-weight:700}
.guide-cta:hover{filter:brightness(1.07);color:#fff}
.guide-cta .gpct{background:rgba(255,255,255,.22);border-radius:999px;padding:2px 8px;
  font-size:12px;font-weight:800;font-variant-numeric:tabular-nums;margin-left:2px}
.onboard h3{margin:0 0 14px;font-size:19px}
.onboard h3 span{font-weight:400;font-size:13.5px;color:var(--muted)}
.ob-step{display:flex;align-items:center;gap:14px;padding:10px 0;border-top:1px solid var(--line);font-size:14.5px}
.ob-step span{color:var(--muted);font-size:13px}
.ob-step b{color:var(--ink)}
.ob-step>div{flex:1;min-width:0}
.ob-n{flex:0 0 30px;width:30px;height:30px;border-radius:50%;background:var(--accent-soft);color:var(--accent);display:grid;place-items:center;font-weight:800;font-size:14px}
.ob-step.done{opacity:.55}
.ob-step.done .ob-n{background:var(--accent);color:#fff}
@media(max-width:640px){.ob-step{flex-wrap:wrap;align-items:flex-start}.ob-step>div{flex:1 1 calc(100% - 44px)}.ob-step .btn{flex:0 0 calc(100% - 44px);box-sizing:border-box;margin:8px 0 2px 44px;text-align:center;justify-content:center}}
.card .meta{color:var(--muted);font-size:13.5px;margin-top:6px}
.card .del{position:absolute;top:12px;right:12px;opacity:0;transition:.15s;width:30px;height:30px;border-radius:9px;display:grid;place-items:center;color:var(--muted)}
.card:hover .del{opacity:1}
.card .del:hover{background:#fbeae8;color:#c0392b}
.card.new{border-style:dashed;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:var(--muted);min-height:172px;box-shadow:none;background:transparent}
.card.new:hover{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}
.card.new .plus{font-size:34px;line-height:1;margin-bottom:8px}
.empty{text-align:center;padding:70px 20px;color:var(--muted)}
.empty .ico{font-size:48px;margin-bottom:14px}

/* Registro / aprobación */
.auth-switch{margin-top:16px;text-align:center;font-size:13.5px;color:var(--muted)}
.auth-switch a{color:var(--accent);font-weight:600}
.pending-bar{background:#fff6d6;border:1px solid #e9cf7a;color:#8a6d12;border-radius:12px;padding:12px 16px;margin-bottom:20px;font-size:14px}
.card.pend{border-style:dashed;border-color:#e0b64a}
.card .pend-chip{display:inline-block;margin-top:10px;font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;background:#fff6d6;color:#8a6d12;padding:3px 9px;border-radius:7px}
.card .appr{position:absolute;bottom:14px;right:14px;padding:6px 12px;font-size:12px}
/* El atajo de la tarjeta con reclamación pendiente va EN EL FLUJO, debajo de los avisos,
   no en la esquina como .appr: es redundante con el clic en la tarjeta pero explícito, que
   es justo lo que hace falta — hay clientes que no caen en que se entra ahí para editar
   sus datos. Va a lo ancho para que se lea como lo que es: el siguiente paso. */
.card .card-edit{display:flex;width:100%;justify-content:center;margin-top:12px;padding:9px 12px;
  font-size:13px;border:1.5px solid var(--accent);background:var(--accent-soft);
  color:var(--accent-ink,var(--accent))}
/* .btn.ghost lleva borde y fondo TRANSPARENTES: está pensado para ir sobre una barra de
   color, y encima de la tarjeta blanca se leía como un enlace, no como un botón. Aquí el
   punto era justo que se viera, así que se le pone el borde y el fondo del acento. */
.card.pend{position:relative;padding-bottom:20px}
.pend-banner{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;background:#fff6d6;border:1px solid #e9cf7a;color:#8a6d12;border-radius:14px;padding:14px 18px;margin-bottom:22px;font-size:14px}
.pend-banner b{color:#6b530b}

/* Usuarios */
.user-list{display:flex;flex-direction:column;gap:12px}
.user-row{display:flex;align-items:center;justify-content:space-between;gap:16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px 20px}
.user-row .u-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px}
.user-row .u-email{font-size:16px;font-weight:600;color:var(--ink)}
.role-chip{font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:3px 9px;border-radius:7px}
.role-chip.admin{background:#efe3fb;color:#7d3c98}
.role-chip.user{background:var(--accent-soft);color:var(--accent)}
.u-you{font-size:11px;font-weight:600;color:var(--muted);background:rgba(0,0,0,.05);padding:3px 8px;border-radius:7px}
.u-access{display:flex;flex-wrap:wrap;gap:6px}
.u-tag{font-size:12px;font-weight:500;background:#f1efe8;color:#5f5e5a;padding:3px 9px;border-radius:7px}
.u-all{font-size:13px;color:#7d3c98;font-weight:500}
.u-none{font-size:13px;color:var(--muted)}
.u-actions{display:flex;gap:6px;flex-shrink:0}
.btn.ghost.danger{color:#c0392b}
.btn.ghost.danger:hover{background:#fbeae8}
.acc-list{display:flex;flex-direction:column;gap:2px;max-height:240px;overflow:auto;border:1px solid var(--line);border-radius:11px;padding:8px}
.acc-item{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:9px;font-size:14px;cursor:pointer;font-weight:500}
.acc-item:hover{background:var(--accent-soft)}
.acc-item input{width:auto;margin:0}
@media(max-width:560px){.user-row{flex-direction:column;align-items:flex-start}}

/* ---------- Project view ---------- */
/* Botonera de la ficha del restaurante: bloques separados, parejas en dos columnas.
   Antes iba todo apilado y pegado, y en el móvil no se distinguía una acción de otra. */
/* OJO: .pb-sub y .pub-bar declaran display, y una clase gana al [hidden] del navegador
   (que es display:none sin más). Sin esto los paneles "plegados" se veían igual. */
[hidden]{display:none!important}
.pback{margin:0 0 12px;font-weight:700;padding-left:0}
.pbtns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:0 0 14px}
.pbtns .pb{width:100%;min-height:54px;justify-content:center;font-size:15px;text-decoration:none;white-space:normal;line-height:1.25;text-align:center}
.pbtns .pb-wide{grid-column:1/-1}
.pbtns .pb.on{border-color:var(--accent);color:var(--accent-ink)}
/* Imagen para redes: es de lo que más rendimiento le saca el restaurante (un post
   listo del menú del día) y estaba escondida entre botones grises iguales. */
.btn.share-cta{background:linear-gradient(135deg,#1f6feb,#7c3aed);color:#fff;border-color:transparent;font-weight:700}
.btn.share-cta:hover{filter:brightness(1.08);color:#fff}
.share-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:14px 0 4px;
  padding:13px 16px;border:1px solid var(--line);border-radius:14px;background:var(--surface)}
.share-row .sr-t{flex:1;min-width:180px;font-size:13.5px;line-height:1.45;color:var(--muted)}
.share-row .sr-t b{color:var(--ink);display:block;font-size:14.5px;margin-bottom:2px}
.share-row .btn.share-cta{min-height:46px;flex:none}
.pb-sub{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:-4px}
.pb-sub .pb-quota{grid-column:1/-1;margin:2px 2px 0;line-height:1.45}
.ppanel{margin:0 0 14px}
@media(max-width:480px){.pb-sub{grid-template-columns:1fr}}
.proj-hero{display:flex;align-items:center;gap:18px;margin-bottom:8px}
.proj-hero .logo{width:62px;height:62px;border-radius:16px;display:grid;place-items:center;font-size:30px;font-weight:700;color:#fff;flex:none}
.proj-hero h1{font-size:clamp(24px,5vw,36px);font-weight:600;letter-spacing:-.02em}
.proj-hero .sub{color:var(--muted);font-size:15px}
.toolbar{display:flex;gap:10px;flex-wrap:wrap;margin:22px 0 8px;justify-content:center}
.toolbar .spacer{display:none}
.tabs{display:flex;gap:8px;overflow-x:auto;padding:6px 2px 14px;scrollbar-width:none;border-bottom:1px solid var(--line);margin-bottom:26px;-webkit-overflow-scrolling:touch}
.tabs::-webkit-scrollbar{display:none}
.tab{padding:9px 16px;border-radius:11px;font-weight:600;font-size:14px;color:var(--muted);white-space:nowrap;border:1px solid transparent;transition:.15s}
.tab:hover{color:var(--ink);background:rgba(0,0,0,.04)}
.tab.active{color:var(--accent);background:var(--accent-soft)}
.tab.all{font-weight:700}

/* public link + QR */
.pub-bar{display:flex;align-items:center;gap:16px;flex-wrap:wrap;background:var(--surface);border:1px solid var(--line);
  border-radius:16px;padding:16px 18px;margin-bottom:22px;box-shadow:var(--shadow)}
.pub-bar .qr{width:96px;height:96px;border-radius:10px;background:#fff;border:1px solid var(--line);padding:6px;flex:none}
.pub-bar .qr img,.pub-bar .qr canvas{width:100%;height:100%}
.pub-bar .info{flex:1;min-width:200px}
.pub-bar .info b{font-size:14px}
.pub-bar .link{display:flex;gap:8px;align-items:center;margin-top:8px;flex-wrap:wrap}
.pub-bar .link input{flex:1;min-width:0;padding:9px 11px;border:1px solid var(--line);border-radius:10px;background:var(--bg);font-size:13px;color:var(--muted)}

/* ---------- Menu render (modern) ---------- */
.menu{max-width:760px;margin:0 auto}
.menu-head{text-align:center;margin-bottom:34px}
.menu-head .kicker{text-transform:uppercase;letter-spacing:.28em;font-size:11px;color:var(--accent);font-weight:700}
.menu-head h2{font-size:clamp(28px,6vw,42px);font-weight:600;margin:8px 0 6px;letter-spacing:-.01em}
.menu-head .desc{color:var(--muted);max-width:520px;margin:0 auto;font-size:14px;line-height:1.6}
.pdf-dl{text-align:center;margin:0 0 30px}
.pdf-dl a{display:inline-block;text-decoration:none;padding:9px 18px;border:1px solid var(--line);border-radius:999px;font-size:13px;font-weight:600;color:var(--accent);background:var(--surface);transition:.15s}
.pdf-dl a:hover{border-color:var(--accent);background:var(--accent-soft)}
.section{margin-bottom:38px}
.section-title{display:flex;align-items:baseline;gap:14px;margin-bottom:18px}
.section-title h3{font-size:22px;font-weight:600;min-width:0;overflow-wrap:break-word}
.section-title .rule{flex:1;height:1px;background:var(--line)}
.section-note{color:var(--muted);font-size:13px;margin:-10px 0 16px}
/* Menú centrado (estilo pizarra): todo alineado al centro */
.menu.centered .section-title{justify-content:center}
.menu.centered .section-title .rule{display:none}
.menu.centered .section-title h3{text-align:center}
.menu.centered .section-note{text-align:center;margin-top:-12px}
.menu.centered .dish{flex-direction:column;align-items:center;text-align:center;gap:2px}
.menu.centered .alg-row{justify-content:center}
.menu.centered .dish .info{flex:none;min-width:0}
.menu.centered .dish .price{padding-top:2px}
.menu-banner{position:relative;text-align:center;border:1.5px solid var(--accent);border-radius:16px;padding:24px 18px 16px;margin:12px auto 28px;max-width:460px;background:var(--accent-soft)}
.menu-banner .mb-kind{position:absolute;top:-12px;left:50%;transform:translateX(-50%);background:var(--accent-chip);color:#fff;padding:4px 15px;border-radius:999px;text-transform:uppercase;letter-spacing:.16em;font-size:10.5px;font-weight:800;white-space:nowrap;box-shadow:0 3px 10px rgba(0,0,0,.14)}
.menu-banner .mb-prices{display:flex;justify-content:center;align-items:stretch;flex-wrap:wrap;row-gap:8px}
.menu-banner .mb-p{display:flex;flex-direction:column;justify-content:center;padding:2px 20px}
.menu-banner .mb-p+.mb-p{border-left:1.5px dashed var(--accent)}
.menu-banner .mb-amount{font-weight:800;font-size:29px;line-height:1.12;color:var(--accent)}
.menu-banner .mb-p.mb-long{padding:2px 6px}
/* Opciones con nombre ("2 platos + pan + postre… 13,95 €"): apiladas, el nombre
   como etiqueta legible y el importe como cifra; separador horizontal. */
.menu-banner .mb-prices.mb-stack{flex-direction:column;align-items:stretch;row-gap:0}
.menu-banner .mb-prices.mb-stack .mb-p{padding:13px 6px}
.menu-banner .mb-prices.mb-stack .mb-p+.mb-p{border-left:0;border-top:1.5px dashed var(--accent)}
.menu-banner .mb-prices.mb-stack .mb-amount{font-size:31px;line-height:1.05}
.menu-banner .mb-pname{font-size:13.5px;font-weight:700;line-height:1.35;color:var(--ink);letter-spacing:.02em;margin-bottom:3px}
.menu-banner.mb-board .mb-pname{color:#efe9db}
.menu-banner .mb-p.mb-long .mb-amount{font-size:17.5px;line-height:1.4;font-weight:700}
/* precio aún sin definir: se anuncia, pero sin el peso visual de un importe */
.menu-banner .mb-p.mb-tba .mb-amount{font-size:19px;font-weight:700;letter-spacing:.01em}
.menu-banner.mb-board .mb-p.mb-tba .mb-amount{color:#efe9db}
/* editor: casilla "precio a consultar" */
.mtba{display:flex;align-items:flex-start;gap:7px;margin-top:7px;font-size:12.5px;color:var(--muted);cursor:pointer;line-height:1.4}
.mtba input{width:15px;height:15px;margin-top:1px;flex:none;accent-color:var(--accent,#b3541e)}
.mtba b{color:var(--ink,#241f1a)}
/* avisos dentro de un modal (muestra desde foto) */
/* Vista previa de la imagen para redes, dentro del selector de formato y estilo */
.sh-prev{margin:14px 0 4px;border:1px solid var(--line);border-radius:14px;background:var(--bg);overflow:hidden}
.sh-prev-l{padding:9px 14px;font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  color:var(--muted);background:var(--surface);border-bottom:1px solid var(--line)}
.sh-prev-img{display:grid;place-items:center;min-height:190px;padding:14px}
.sh-prev-img img{max-height:260px;max-width:100%;border-radius:10px;box-shadow:var(--shadow)}
.sh-prev-wait{color:var(--muted);font-size:13.5px}
.mm-msg{margin-top:12px;padding:12px 14px;border-radius:10px;font-size:14px;font-weight:600;line-height:1.5}
.mm-msg.ok{background:#e7f6ec;color:#1c7a3f}
.mm-msg.ok a{color:#146031;text-decoration:underline}
.mm-msg.err{background:#fdeaea;color:#a5322a}
/* Vista previa del menú dentro del editor: mismo motor que la carta pública, para que
   elegir "pizarra" o "clásico" deje de ser a ciegas. */
/* Grupos del editor del menú: "Lo básico" abierto (lo que se cambia a diario) y
   "Aspecto" cerrado (se toca una vez). El resumen del título evita tener que abrirlo
   para saber qué hay dentro. */
.edg{border:1px solid var(--line);border-radius:14px;background:var(--surface);margin:0 0 12px}
.edg>summary{cursor:pointer;padding:14px 16px;font-size:14.5px;font-weight:700;color:var(--ink);
  list-style:none;display:flex;align-items:center;gap:10px;min-height:52px;box-sizing:border-box}
.edg>summary::-webkit-details-marker{display:none}
.edg>summary span{font-weight:500;font-size:13px;color:var(--muted);margin-left:auto;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:55%}
.edg>summary::after{content:"▾";margin-left:8px;color:var(--muted);transition:transform .15s;flex:none}
.edg[open]>summary::after{transform:rotate(180deg)}
.edg[open]>summary{border-bottom:1px solid var(--line)}
.edg-body{padding:16px 16px 4px}
.edg-body .field:last-child{margin-bottom:12px}
.mprev{border:1px solid var(--line);border-radius:14px;overflow:hidden;margin:2px 0 18px;background:var(--bg)}
.mprev-top{display:flex;align-items:center;gap:8px;padding:10px 14px;background:var(--surface);
  border-bottom:1px solid var(--line);font-size:12.5px;font-weight:700;color:var(--ink)}
.mprev-top span{font-weight:400;color:var(--muted)}
.mprev-top .ico{color:var(--muted)}
.mprev-body{max-height:330px;overflow:auto;padding:14px;-webkit-overflow-scrolling:touch}
/* la carta dentro de la caja va a escala reducida: cabe entera sin que el editor crezca */
.mprev-body>.menu{zoom:.72}
@media(max-width:640px){.mprev-body{max-height:260px}.mprev-body>.menu{zoom:.62}}
/* editor: precio del menú por opciones (una fila por precio) */
.mopts{display:flex;flex-direction:column;gap:8px;margin-top:2px}
.mopt{display:flex;align-items:center;gap:7px;flex-wrap:wrap;background:var(--bg);border:1px solid var(--line);border-radius:11px;padding:8px}
.mopt input{margin-top:0;padding:9px 11px}
.mopt .o-n{flex:1 1 100%;min-width:0}
.mopt .o-t{flex:1 1 120px;min-width:0}
.mopt .o-r{flex:1 1 100px;min-width:0}
.mopt .o-p{display:inline-flex;align-items:center;gap:3px;flex:none}
.mopt .o-p input{width:56px;text-align:center}
.mopt .o-p input:last-of-type{width:46px}
.mopt .o-p i{font-style:normal;font-weight:700;color:var(--muted)}
.mopt .o-p b{font-weight:700;color:var(--muted);margin-left:2px}
.mopt .o-x{flex:none;width:44px;height:44px;border-radius:10px;border:1px solid var(--line);background:var(--surface);color:var(--muted);font-size:13px;line-height:1;cursor:pointer}
.mopt .o-x:hover{color:#c0392b;border-color:#e6b6ae}
.btn.o-add{min-height:44px}
@media(max-width:520px){.mopt .o-t{flex:1 1 100%}}
.menu-banner .mb-plabel{font-size:12.5px;font-weight:600;color:var(--muted);margin-top:2px}
.menu-banner .mb-price{display:inline-block;font-weight:800;font-size:29px;color:var(--accent)}
.menu-banner .mb-inc{color:var(--ink);font-size:14px;margin-top:10px}
.menu-banner .mb-valid{display:inline-block;background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:4px 13px;color:var(--muted);font-size:12.5px;font-weight:600;margin-top:11px}
/* ===== Estilos de MENÚ ===== el recuadro (mb-*) se usa suelto en el widget incrustado;
   el bloque completo (menu-st-*) reviste carta + platos en la carta y en el embed 'full'. */

/* --- PIZARRA: recuadro (widget) --- */
.menu-banner.mb-board{background:#2c322d;border:2px solid #6f7669;border-radius:8px;box-shadow:inset 0 0 0 4px #2c322d,inset 0 0 0 5px #565c50,0 8px 24px rgba(0,0,0,.18);padding:20px 20px 16px;color:#eee8da}
.menu-banner.mb-board .mb-kind{position:static;transform:none;display:inline-block;background:transparent;box-shadow:none;border:0;padding:0;margin:0 0 12px;color:#efe9db;font-family:'Sora','Manrope',sans-serif;letter-spacing:.24em;font-size:11.5px;font-weight:700;text-shadow:0 1px 1px rgba(0,0,0,.35)}
.menu-banner.mb-board .mb-amount{color:#f6f1e6}
.menu-banner.mb-board .mb-p+.mb-p{border-left-color:#6f7669}
.menu-banner.mb-board .mb-plabel{color:#c3bdae}
.menu-banner.mb-board .mb-inc{color:#d8d2c3}
.menu-banner.mb-board .mb-valid{background:rgba(255,255,255,.09);border-color:#5c6255;color:#d8d2c3}
/* --- PIZARRA: bloque entero --- */
.menu.menu-st-board{background:#2c322d;border-radius:12px;padding:clamp(24px,5vw,40px) clamp(18px,5vw,34px) 30px;box-shadow:inset 0 0 0 6px #2c322d,inset 0 0 0 7px #565c50,0 12px 34px rgba(0,0,0,.22);color:#e9e3d5}
.menu.menu-st-board .kicker{color:#a7ad9e}
.menu.menu-st-board .menu-head h2{color:#f4eee1}
.menu.menu-st-board .menu-head .desc{color:#c3bdae}
.menu.menu-st-board .section-title h3{color:#f4eee1}
.menu.menu-st-board .section-title .rule{background:#565c50}
.menu.menu-st-board .section-note{color:#b8b2a4}
.menu.menu-st-board .dish{border-bottom-color:rgba(255,255,255,.13)}
.menu.menu-st-board .dish .name{color:#f2ecdf}
.menu.menu-st-board .dish .d{color:#aca699}
.menu.menu-st-board .price{color:#f2ecdf}
.menu.menu-st-board .diet-legend,.menu.menu-st-board .diet-legend span{color:#c3bdae}
.menu.menu-st-board .menu-banner.mb-board{background:rgba(255,255,255,.05);box-shadow:none;border-color:#7a8073}

/* --- CLÁSICO: recuadro (widget) — serif legible Lora --- */
.menu-banner.mb-classic{background:#fbf8f2;border:1px solid #e3dbcb;border-radius:4px;padding:22px 20px 18px}
.menu-banner.mb-classic .mb-kind{position:static;transform:none;background:transparent;box-shadow:none;color:var(--ink);font-family:'Lora',Georgia,serif;font-weight:700;letter-spacing:.14em;font-size:15px;padding:0 0 9px;border:0;border-bottom:1px solid #e3dbcb;border-radius:0;margin:0 auto 13px;display:inline-block}
.menu-banner.mb-classic .mb-amount{font-family:'Lora',Georgia,serif;color:var(--ink);font-weight:700}
.menu-banner.mb-classic .mb-p+.mb-p{border-left-style:solid;border-left-color:#e3dbcb}
.menu-banner.mb-classic .mb-plabel{color:var(--muted)}
.menu-banner.mb-classic .mb-inc{font-style:italic;color:var(--muted)}
.menu-banner.mb-classic .mb-valid{background:transparent;border-color:#e3dbcb;color:var(--muted)}
/* --- CLÁSICO: bloque entero — todo en Lora --- */
.menu.menu-st-classic{background:#fbf8f2;border:1px solid #e6ddcd;border-radius:6px;padding:clamp(24px,5vw,42px) clamp(18px,5vw,36px) 30px}
.menu.menu-st-classic .menu-head h2,.menu.menu-st-classic .section-title h3,.menu.menu-st-classic .dish .name,.menu.menu-st-classic .dish .d,.menu.menu-st-classic .price,.menu.menu-st-classic .mb-kind,.menu.menu-st-classic .mb-amount{font-family:'Lora',Georgia,serif}
.menu.menu-st-classic .section-title h3{font-weight:600;letter-spacing:.02em}
.menu.menu-st-classic .dish .name{font-weight:600}
.menu.menu-st-classic .price{font-weight:700;color:var(--ink)}
.menu.menu-st-classic .menu-banner.mb-classic{background:#fff;border-color:#e6ddcd}
.dish{display:flex;align-items:flex-start;gap:14px;padding:11px 0;border-bottom:1px dashed var(--line)}
.dish:last-child{border-bottom:none}
.dish .info{flex:1;min-width:0}
.dish .name{font-weight:600;font-size:16px;line-height:1.45}
.dish .name .tag{margin-left:3px;vertical-align:middle}
.dish .d{color:var(--muted);font-size:13.5px;margin-top:3px}
.dish .price{font-weight:700;color:var(--accent-ink);white-space:nowrap;font-variant-numeric:tabular-nums;font-size:16px;padding-top:1px}
.tag{font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:2px 7px;border-radius:6px;background:var(--accent-soft);color:var(--accent)}
.tag.veg{background:#e6f4ea;color:#2e7d44}
.tag.spicy{background:#fce8e6;color:#c0392b}
.tag.gf{background:#eef0fb;color:#3f51b5}
.tag.new{background:#fff4d6;color:#a87c00}
.ddot{display:inline-block;width:9px;height:9px;border-radius:50%;vertical-align:middle;margin-left:2px}
.dstar{color:#c0392b;font-weight:700;margin-left:2px}
.diet-legend{display:flex;flex-wrap:wrap;gap:12px 18px;justify-content:center;margin-top:26px;padding-top:18px;border-top:1px solid var(--line);color:var(--muted);font-size:12px}
.diet-legend span{display:inline-flex;align-items:center;gap:6px}
/* ---------- Alérgenos: burbuja de color + glifo blanco ---------- */
.alg{display:inline-grid;place-items:center;width:17px;height:17px;border-radius:50%;background:var(--ac,#999);flex:none;vertical-align:middle}
.alg svg{width:11px;height:11px;stroke:#fff;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.alg-row{display:flex;flex-wrap:wrap;gap:4px;margin-top:7px}
.alg-legend{display:flex;flex-wrap:wrap;gap:9px 16px;justify-content:center;align-items:center;margin-top:22px;padding-top:16px;border-top:1px solid var(--line);color:var(--muted);font-size:12px}
.alg-legend-t{font-weight:700;letter-spacing:.1em;text-transform:uppercase;font-size:10.5px;color:var(--muted);width:100%;text-align:center}
.alg-l{display:inline-flex;align-items:center;gap:6px}
.alg-note{max-width:560px;margin:12px auto 0;text-align:center;font-size:11.5px;line-height:1.5;color:var(--muted)}
.alg-note::before{content:"⚠ ";opacity:.75}
/* variante pizarra (menú oscuro) */
.menu.menu-st-board .alg-legend,.menu.menu-st-board .alg-legend-t,.menu.menu-st-board .alg-note{color:#c3bdae;border-top-color:rgba(255,255,255,.13)}
/* tema clásico (platos centrados) */
.menu.classic .alg-row{justify-content:center;margin-top:6px}
.menu.classic .alg-legend{color:#857d73;border-top-color:rgba(32,32,30,.18)}
.menu.classic .alg-legend-t{color:#857d73}
.menu.classic .alg-note{color:#857d73}

/* ---------- Classic theme ---------- */
.menu.classic{max-width:660px;background:#fdfbf5;border:1.5px solid #20201e;padding:clamp(26px,5vw,46px) clamp(18px,5vw,40px) 34px;position:relative;overflow:hidden}
.menu.classic::before{content:"";position:absolute;inset:6px;border:1px solid #20201e;pointer-events:none;z-index:0}
.menu.classic>*{position:relative;z-index:1}
.menu.classic .lang-badge{position:absolute;top:clamp(18px,4vw,30px);right:clamp(18px,5vw,34px);font-weight:700;letter-spacing:.06em;color:#20201e;font-size:15px}
.menu.classic .brand{display:block;font-family:'Cormorant Garamond',serif;text-align:center;font-size:clamp(26px,6vw,46px);font-weight:600;letter-spacing:.04em;line-height:1.05;color:#1a1714;margin-bottom:6px}
.menu.classic .menu-sub{text-align:center;color:#7a736a;font-size:13px;margin-bottom:24px}
.menu.classic .c-section{margin:30px 0}
.menu.classic .section-note{text-align:center;font-style:italic;color:#857d73;font-size:13.5px;margin:0 auto 16px;max-width:520px}
.menu.classic .c-section.boxed{border:1.5px solid var(--accent);border-radius:4px;padding:24px 18px 18px;margin:34px 0}
.menu.classic .c-head{display:flex;align-items:center;justify-content:center;gap:14px;margin-bottom:18px}
.menu.classic .c-head .rule{height:1.5px;background:var(--accent);flex:1;max-width:110px}
.menu.classic .c-head h3{font-family:'Manrope',sans-serif;font-weight:800;text-transform:uppercase;letter-spacing:.15em;color:var(--accent);font-size:clamp(14px,3.4vw,18px);text-align:center;overflow-wrap:break-word}
.menu.classic .c-dish{text-align:center;margin:14px 0}
.menu.classic .c-dish.boxed{border:1.5px solid var(--accent);border-radius:4px;padding:14px 12px;margin:18px auto;max-width:560px}
.menu.classic .c-dish .name{font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:#1f1c19;font-size:15px;line-height:1.4}
.menu.classic .c-dish .name .pr{white-space:nowrap}
.menu.classic .c-dish .name .sep{color:var(--accent);font-weight:400;padding:0 2px}
.menu.classic .c-dish .d{color:#857d73;font-size:13px;margin-top:3px;max-width:520px;margin-left:auto;margin-right:auto}
.menu.classic .dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-left:4px;vertical-align:baseline}
.menu.classic .dot.veg{background:#3aa64a}
.menu.classic .legend{display:flex;gap:18px;justify-content:center;margin-top:16px;color:#857d73;font-size:12px}
.menu.classic .legend span{display:inline-flex;align-items:center;gap:6px}
.menu.classic .foot-note{margin-top:32px;text-align:center;color:#857d73;font-size:12px;line-height:1.7}

/* image / pdf cartas */
/* carta subida como imagen (menús prediseñados): encajada a la pantalla para verla entera
   de un vistazo, sin scroll infinito; al tocarla se amplía en el lightbox */
.img-carta{display:grid;gap:16px;max-width:860px;margin:0 auto;justify-items:center}
.img-carta img{max-width:100%;width:auto;height:auto;max-height:78vh;border-radius:14px;box-shadow:var(--shadow);cursor:zoom-in;border:1px solid var(--line)}
.img-carta-hint{text-align:center;font-size:12.5px;color:var(--muted);margin-top:10px;display:flex;align-items:center;justify-content:center;gap:6px}
@media print{.img-carta img{max-height:none;width:100%}}
.pdf-carta{max-width:900px;margin:0 auto}
.pdf-carta iframe{width:100%;height:80vh;border:1px solid var(--line);border-radius:14px;background:#fff}
.carta-block{margin-bottom:60px;scroll-margin-top:120px}
.carta-actions{display:flex;justify-content:center;gap:10px;margin-top:24px;flex-wrap:wrap}
/* Las acciones de la carta eran un flex centrado con los botones a su ancho
   natural (124, 156, 139, 101px): se envolvían en filas irregulares y
   descentradas, al lado de .pbtns que sí es una rejilla de dos columnas
   iguales. Dos sistemas distintos en la misma pantalla. En móvil pasan a la
   MISMA rejilla, y se agrupan en tarjeta para que la sección se distinga del
   fondo (solo en el panel: #app no existe en la carta pública). */
#app .carta-actions{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:12px;margin-top:18px}

/* general view sub-nav */
.subnav{position:sticky;top:62px;z-index:30;display:flex;gap:8px;overflow-x:auto;padding:12px 0;margin-bottom:8px;background:linear-gradient(var(--bg),var(--bg) 70%,transparent);scrollbar-width:none}
.subnav::-webkit-scrollbar{display:none}
.subnav .pill{padding:8px 15px;border-radius:999px;font-size:13px;font-weight:600;background:var(--surface);border:1px solid var(--line);color:var(--muted);white-space:nowrap;transition:.15s}
.subnav .pill:hover{color:var(--ink);border-color:#d8cfc2}
.subnav .pill.active{background:var(--accent);color:#fff;border-color:var(--accent)}

/* ---------- Modal ---------- */
.overlay{position:fixed;inset:0;background:rgba(30,26,22,.55);backdrop-filter:blur(4px);z-index:100;display:none;align-items:center;justify-content:center;padding:18px}
.overlay.open{display:flex}
.modal{background:var(--surface);border-radius:22px;width:min(640px,100%);max-height:92vh;overflow:auto;box-shadow:var(--shadow-lg);animation:pop .22s}
@keyframes pop{from{transform:translateY(14px) scale(.98);opacity:0}to{transform:none;opacity:1}}
.modal-head{display:flex;align-items:center;justify-content:space-between;padding:22px 24px 0}
.modal-head h2{font-size:21px;font-weight:600}
.modal-body{padding:18px 24px 24px}
.modal-foot{position:sticky;bottom:0;background:var(--surface);display:flex;gap:10px;justify-content:flex-end;padding:16px 24px;border-top:1px solid var(--line)}
/* Modal de incrustación en vivo */
.emb-modal .emb-intro{font-size:14px;color:var(--muted);line-height:1.55;margin:0 0 18px}
.emb-modal .emb-intro b{color:var(--ink)}
.emb-modal .emb-sect{font-weight:800;font-size:15px;margin:20px 0 10px;display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.emb-modal .emb-sect:first-of-type{margin-top:4px}
.emb-modal .emb-sect span{font-weight:500;font-size:12.5px;color:var(--muted)}
.emb-item{background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:12px 13px;margin-bottom:10px}
.emb-item .emb-h{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.emb-item .emb-h b{font-size:13px}
.emb-item .emb-h span{font-size:12px;color:var(--muted)}
.emb-code{display:flex;gap:8px;align-items:stretch}
.emb-code textarea{flex:1;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;line-height:1.45;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:9px;padding:9px 10px;resize:vertical;white-space:pre;overflow:auto}
.emb-code .btn{align-self:stretch;white-space:nowrap}
.emb-modal .emb-note{font-size:12.5px;color:var(--muted);line-height:1.55;margin:16px 0 0;padding-top:14px;border-top:1px dashed var(--line)}
.emb-modal .emb-note a{color:var(--accent);font-weight:600;text-decoration:none}
/* ---- Modo app en móvil: barra inferior fija del panel + aviso de instalación ---- */
.mnav{display:none}
.pwa-hint{display:none}
@media(max-width:820px){
  .mnav{position:fixed;left:0;right:0;bottom:0;z-index:95;display:flex;background:var(--surface);border-top:1px solid var(--line);box-shadow:0 -8px 24px rgba(0,0,0,.08);padding:6px 4px calc(6px + env(safe-area-inset-bottom))}
  .mnav button{flex:1;min-width:0;background:none;border:0;font-family:inherit;display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 2px;color:var(--muted);font-size:10px;font-weight:700;cursor:pointer}
  .mnav button svg{width:20px;height:20px;flex:none}
  .mnav button:active{color:var(--accent)}
  body:has(.mnav) .wrap{padding-bottom:88px}
  .pwa-hint{position:fixed;left:10px;right:10px;bottom:calc(72px + env(safe-area-inset-bottom));z-index:94;background:var(--ink);color:#fff;border-radius:14px;padding:12px 14px;display:flex;gap:10px;align-items:center;font-size:13px;line-height:1.4;box-shadow:0 12px 30px rgba(0,0,0,.25)}
  .pwa-hint span{flex:1;min-width:0}
  .pwa-hint .btn{flex:none}
  .pwa-hint .pwa-x{background:none;border:0;color:#fff;opacity:.7;font-size:15px;cursor:pointer;padding:2px 4px;flex:none}
}
@media(display-mode:standalone){.mnav .mnav-app{display:none}.pwa-hint{display:none!important}}
#pStats,#statsCard,.tabs,#cartaArea{scroll-margin-top:76px}
.modal-head>.btn.ghost.sm{width:40px;height:40px;min-width:40px;flex:none;border-radius:50%;border:1.5px solid var(--line);padding:0;display:grid;place-items:center;font-size:17px;font-weight:700;background:var(--bg);line-height:1}
.modal-head>.btn.ghost.sm:active{border-color:var(--accent);color:var(--accent)}
.pick-carta{display:flex;justify-content:space-between;align-items:center;gap:10px;width:100%;background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:14px 16px;font-family:inherit;font-weight:700;font-size:15px;color:var(--ink);cursor:pointer;margin-bottom:8px;text-align:left}
.pick-carta span{flex:none;font-size:11px;font-weight:800;color:var(--accent);background:var(--accent-soft);border-radius:999px;padding:3px 10px}
.pick-carta:active,.pick-carta:hover{border-color:var(--accent)}
.pwa-steps{margin:4px 0 4px 20px;line-height:1.65;font-size:14.5px}
.pwa-steps li{margin-bottom:9px}
.field{margin-bottom:16px}
.field label{display:block;font-size:13px;font-weight:600;margin-bottom:6px;color:var(--ink)}
.field input,.field textarea,.field select{width:100%;padding:11px 13px;border:1px solid var(--line);border-radius:11px;background:#fff;outline:none;transition:.15s}
.field input:focus,.field textarea:focus,.field select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.field .hint{font-size:12px;color:var(--muted);margin-top:5px}
.row{display:flex;gap:12px;flex-wrap:wrap}
.row>*{flex:1 1 240px;min-width:0}
.row>.field.wide{flex:1 1 100%}
.swatches{display:flex;gap:9px;flex-wrap:wrap}
.swatch{width:34px;height:34px;border-radius:10px;cursor:pointer;border:2px solid transparent;transition:.12s}
.swatch.sel{border-color:var(--ink);transform:scale(1.08)}
/* muestra "color personalizado": anillo arcoíris + selector de color nativo */
.swatch.custom{position:relative;display:grid;place-items:center;background:conic-gradient(#e8590c,#e3a11c,#1f7a5c,#1565c0,#7d3c98,#b02a1f,#e8590c)}
.swatch.custom input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;border:0;padding:0}
.swatch.custom .in{width:22px;height:22px;border-radius:7px;background:var(--surface);display:grid;place-items:center;font-size:14px;font-weight:700;color:var(--muted);pointer-events:none;line-height:1}

/* herramientas técnicas plegadas para clientes (incrustar/HTML) */
.adv-tools{margin:34px 0 8px;border:1px dashed var(--line);border-radius:14px;background:var(--surface)}
.adv-tools summary{cursor:pointer;padding:14px 18px;font-size:13.5px;font-weight:700;color:var(--muted);list-style:none;display:flex;align-items:center;gap:8px}
.adv-tools summary::-webkit-details-marker{display:none}
.adv-tools summary::after{content:"▾";margin-left:auto;transition:transform .15s}
.adv-tools[open] summary::after{transform:rotate(180deg)}
.adv-tools[open] summary{color:var(--ink)}
.adv-tools .adv-body{padding:0 18px 16px}

/* propiedad de fichas en Usuarios: dueño = corona, no editable por checkbox */
.u-tag.own{background:#f4e8d0;color:#8a5a00;border-color:#eed9b0}
.acc-item.own{opacity:.85}
.acc-item .own-tag{font-size:11px;font-weight:800;color:#8a5a00;background:#f4e8d0;border-radius:999px;padding:2px 8px;margin-left:4px}

/* vista Suscripciones (admin): semáforo de vencimientos */
.subs-list{display:flex;flex-direction:column;gap:10px}
.subs-row{display:flex;align-items:center;gap:14px;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:14px 18px}
.subs-row .sem{width:12px;height:12px;border-radius:50%;flex:none}
.subs-row .sem.ok{background:#1c7a3f}
.subs-row .sem.mid{background:#e3a11c;box-shadow:0 0 0 4px rgba(227,161,28,.18)}
.subs-row .sem.ko{background:#b02a1f;box-shadow:0 0 0 4px rgba(176,42,31,.16)}
.subs-row .s-who{flex:1;min-width:0}
.subs-row .s-who b{display:block;font-size:14.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.subs-row .s-who span{font-size:12.5px;color:var(--muted);display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.subs-row .s-until{text-align:right;flex:none}
.subs-row .s-until b{display:block;font-size:14px}
.subs-row .s-until span{font-size:12px;color:var(--muted)}
.subs-row .s-orig{flex:none;font-size:12px;font-weight:700;border-radius:999px;padding:5px 11px}
.subs-row .s-orig.stripe{background:#e8f0fb;color:#274f82}
.subs-row .s-orig.manual{background:#f4e8d0;color:#8a5a00}
@media(max-width:640px){
  .subs-row{flex-wrap:wrap;gap:8px 12px}
  .subs-row .s-who{flex:1 1 100%;order:-1}
  .subs-row .btn{margin-left:auto}
}

/* selector de estilo de la página pública (temas Premium) */
.prem-mini{font-size:11px;font-weight:800;color:#8a5a00;background:#f4e8d0;border-radius:999px;padding:2px 9px;vertical-align:1px}
/* minmax(0,1fr) y no 1fr: el minimo de una columna 'auto' es su contenido sin
   cortar, y como las lineas de la miniatura van en nowrap las columnas se
   ensanchaban y la tercera se salia del modal. */
.ptheme-pick{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.ptheme-card{border:2px solid var(--line);border-radius:12px;padding:7px;cursor:pointer;transition:.13s;background:var(--surface)}
.ptheme-card:hover{border-color:var(--muted)}
.ptheme-card.sel{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.ptheme-pick.lock .ptheme-card{opacity:.65}
/* La miniatura es una carta de verdad en pequeño: rótulo de sección y dos platos
   con precio, cada uno en la tipografía de su tema. Es lo único que distingue a
   simple vista Bistró de Premium oscura y de Carta, que como manchas de color
   son el mismo rectángulo negro. */
.pt-prev{position:relative;height:66px;border-radius:8px;border:1px solid rgba(0,0,0,.07);overflow:hidden;
  padding:9px 8px 7px;display:flex;flex-direction:column;gap:4px}
.pt-bar{position:absolute;top:0;left:0;right:0;height:3px}
.pt-sec{font-size:7px;font-weight:600;line-height:1;white-space:nowrap;overflow:hidden}
.pt-sec.caps{text-transform:uppercase;letter-spacing:.2em;text-align:center;font-size:6.5px}
.pt-sec i{font-style:normal;font-size:4.5px;vertical-align:.22em;margin:0 5px;opacity:.8}
.pt-sec i.fil{display:inline-block;width:8px;height:1px;background:currentColor;vertical-align:.3em}
.pt-row{display:flex;justify-content:space-between;gap:5px;font-size:8.5px;line-height:1.2;white-space:nowrap}
.pt-row b{font-weight:500;min-width:0;overflow:hidden;text-overflow:ellipsis}
.pt-row em{font-style:normal;opacity:.8}
.pt-name{display:block;text-align:center;font-size:12.5px;font-weight:700;margin-top:7px}
.pfont-pick{display:flex;gap:8px;flex-wrap:wrap}
.pfont-pill{border:2px solid var(--line);border-radius:999px;background:var(--surface);padding:8px 16px;font-size:16px;cursor:pointer;color:var(--ink);transition:.13s}
.pfont-pill:hover{border-color:var(--muted)}
.pfont-pill.sel{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.pfont-pick.lock .pfont-pill{opacity:.65}
@media(max-width:560px){.ptheme-pick{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.pt-name{font-size:11.5px}}
.seg{display:flex;gap:8px;background:var(--bg);padding:5px;border-radius:13px;margin-bottom:18px}
.seg button{flex:1;padding:10px;border-radius:9px;font-weight:600;font-size:13.5px;color:var(--muted)}
.seg button.on{background:var(--surface);color:var(--ink);box-shadow:var(--shadow)}
.drop{border:2px dashed var(--line);border-radius:14px;padding:30px 18px;text-align:center;color:var(--muted);transition:.15s;cursor:pointer}
.drop:hover,.drop.drag{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}
.drop .ico{font-size:32px;margin-bottom:8px}
.thumbs{display:grid;grid-template-columns:repeat(auto-fill,minmax(86px,1fr));gap:10px;margin-top:14px}
.thumb{position:relative;border-radius:10px;overflow:hidden;aspect-ratio:1;border:1px solid var(--line)}
.thumb img{width:100%;height:100%;object-fit:cover}
.thumb .x{position:absolute;top:4px;right:4px;width:22px;height:22px;border-radius:7px;background:rgba(0,0,0,.6);color:#fff;display:grid;place-items:center;font-size:13px}
/* input de archivo accesible pero invisible (Safari no abre file inputs con display:none) */
.vh{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
label.drop{display:block;cursor:pointer}
label.cover-pick{cursor:pointer}
label.ai-btn{cursor:pointer;display:inline-block;background:linear-gradient(135deg,#7d3c98,#5b3a99);color:#fff;font-weight:800;font-size:15.5px;padding:12px 26px;border-radius:999px;box-shadow:0 6px 18px rgba(91,58,153,.28)}
label.ai-btn:hover{filter:brightness(1.1)}
.ai-row{display:block;text-align:center;background:linear-gradient(135deg,#f7f0ff,#fff);border:2px dashed #b591e6;border-radius:14px;padding:18px 16px}
.ai-row .hint{display:block;margin:10px auto 0;max-width:440px}
.btn.ai-cta{background:linear-gradient(135deg,#7d3c98,#5b3a99);color:#fff;border:none;font-weight:700}
.btn.ai-cta:hover{filter:brightness(1.1)}
.ai-row.working{background:#efe4ff;border-style:solid;border-color:#9b7ad1}
.ai-row .hint.ai-working{color:#5b3a99;font-weight:700;font-size:14px;display:flex;align-items:center;justify-content:center;gap:9px}
label.ai-btn.busy{opacity:.45;pointer-events:none}
.ai-spin{width:16px;height:16px;border:2.5px solid #cdb6f0;border-top-color:#5b3a99;border-radius:50%;flex-shrink:0;animation:aispin .8s linear infinite}
@keyframes aispin{to{transform:rotate(360deg)}}
.ed-section{border:1px solid var(--line);border-radius:14px;padding:14px;margin-bottom:14px;background:#fcfaf7}
.ed-section .sec-top{display:flex;gap:10px;align-items:center;margin-bottom:10px}
.ed-section .sec-top input{font-weight:600}
.ed-section .sec-note{width:100%;padding:9px 12px;border:1px solid var(--line);border-radius:10px;background:#fff;outline:none;font-size:13px;color:var(--muted);margin-bottom:10px}
.ed-section .sec-note:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.ed-item{display:flex;gap:8px;align-items:flex-start;margin-bottom:8px;flex-wrap:wrap}
.ed-item input.nm{flex:2;min-width:130px}
.ed-item input.pr{flex:none;width:84px}
.ed-item textarea.ds{flex:1 1 100%;min-height:38px;resize:vertical}
.ed-item .tagsel{flex:1 1 100%;display:flex;gap:6px;flex-wrap:wrap;margin-top:-2px}
.ed-item .tagsel button{font-size:11px;padding:4px 9px;border-radius:7px;border:1px solid var(--line);background:#fff;color:var(--muted);font-weight:600}
.ed-item .tagsel button.on{background:var(--accent);color:#fff;border-color:var(--accent)}
.ed-item .tagsel button .tsw{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:5px;vertical-align:middle}
.ed-item .tagsel button .tsw.star{width:auto;height:auto;border-radius:0;background:none;color:#c0392b;font-weight:700}
/* selector de alérgenos por plato */
.ed-item .algsel{flex:1 1 100%;display:flex;flex-wrap:wrap;align-items:center;gap:5px;margin-top:2px}
.ed-item .algsel-lbl{font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-right:3px}
.ed-item .algtog{width:26px;height:26px;padding:0;border-radius:50%;border:1px solid var(--line);background:#fff;display:inline-grid;place-items:center;cursor:pointer;opacity:.5;transition:.12s;flex:none}
.ed-item .algtog svg{width:15px;height:15px;stroke:var(--muted);fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.ed-item .algtog svg [fill]{fill:var(--muted)}
.ed-item .algtog:hover{opacity:.8}
.ed-item .algtog.on{background:var(--ac);border-color:var(--ac);opacity:1}
.ed-item .algtog.on svg{stroke:#fff}
.ed-item .algtog.on svg [fill]{fill:#fff}
.icon-btn{width:34px;height:34px;border-radius:9px;display:grid;place-items:center;color:var(--muted);border:1px solid var(--line);background:#fff;flex:none}
.icon-btn:hover{color:#c0392b;border-color:#f1c9c4}

/* lightbox */
.lightbox{position:fixed;inset:0;background:rgba(0,0,0,.9);z-index:200;display:none;align-items:center;justify-content:center;padding:16px}
.lightbox.open{display:flex}
.lightbox img{max-width:100%;max-height:92vh;border-radius:8px;object-fit:contain}
.lightbox .close{position:absolute;top:18px;right:20px;color:#fff;font-size:30px;background:none}

.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(20px);background:var(--ink);color:#fff;padding:13px 20px;border-radius:12px;font-size:14px;font-weight:500;box-shadow:var(--shadow-lg);opacity:0;pointer-events:none;transition:.25s;z-index:300}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* ---------- Auth screen ---------- */
.auth-wrap{min-height:100vh;display:grid;place-items:center;padding:24px}
.auth-card{background:var(--surface);border:1px solid var(--line);border-radius:22px;box-shadow:var(--shadow-lg);width:min(420px,100%);padding:34px}
.auth-card .logo{width:52px;height:52px;border-radius:14px;background:var(--accent);display:grid;place-items:center;color:#fff;font-size:24px;margin-bottom:18px}
.auth-card h1{font-size:24px;font-weight:600;margin-bottom:4px}
.auth-card p.sub{color:var(--muted);font-size:14px;margin-bottom:22px}
.auth-card .btn{width:100%;margin-top:6px}
.auth-err{color:#c0392b;font-size:13px;margin-top:10px;min-height:18px}

/* ---------- Public viewer ---------- */
.pub-shell{max-width:820px;margin:0 auto;padding:24px 16px 90px;overflow-wrap:break-word}
.pub-tabs{display:flex;flex-wrap:wrap;justify-content:center;gap:7px;margin:0 0 28px}
.pub-tab{padding:12px 16px;min-height:44px;border:1px solid var(--line);border-radius:999px;font-size:13px;font-weight:600;color:var(--muted);background:var(--surface);cursor:pointer;transition:.15s}
.pub-tab:hover{border-color:#d8cfc2;color:var(--ink)}
.pub-tab.on{background:var(--accent-chip);color:#fff;border-color:var(--accent-chip)}
/* Landing pública del restaurante */
.pub-langs{display:flex;gap:6px;justify-content:center;margin:0 0 18px}
.pub-lang{font-size:12px;font-weight:700;letter-spacing:.05em;padding:5px 12px;border-radius:999px;border:1px solid var(--line);background:var(--surface);color:var(--muted);text-decoration:none}
a.pub-lang:hover{border-color:var(--accent);color:var(--accent)}
.pub-lang.on{background:var(--accent);border-color:var(--accent);color:#fff}
a.pub-lang.on:hover{color:#fff}
.pub-cover{margin:0 0 22px;border-radius:18px;overflow:hidden;box-shadow:var(--shadow-lg);background:#f7f2ea}
.pub-cover img{width:100%;height:min(38vw,240px);object-fit:contain;display:block;padding:8px}
/* logo (imagen cuadrada/vertical): integrado sin recorte ni marco */
.pub-cover.logo{box-shadow:none;border-radius:0;background:transparent;margin-bottom:10px}
.pub-cover.logo img{width:auto;max-width:60%;height:auto;max-height:150px;object-fit:contain;margin:0 auto}
.pub-gal-thumbs{display:flex;gap:8px;justify-content:center;margin:-8px 0 20px;overflow-x:auto;padding:4px 2px;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.pub-gal-thumbs::-webkit-scrollbar{display:none}
.pub-gal-t{width:72px;height:54px;border-radius:10px;overflow:hidden;border:2px solid transparent;padding:0;background:#f7f2ea;cursor:pointer;flex:none}
.pub-gal-t.on{border-color:var(--accent)}
.pub-gal-t img{width:100%;height:100%;object-fit:cover;display:block}
/* Cabecera rediseñada: foto héroe a sangre + tarjeta superpuesta */
.pub-hero{position:relative;margin:-24px -16px 0;overflow:hidden;background:#f7f2ea;border-radius:0 0 24px 24px}
.pub-hero img{width:100%;height:clamp(200px,54vw,340px);object-fit:cover;display:block}
.pub-langs+.pub-hero{margin-top:0}
@media(min-width:641px){.pub-hero{margin:0;border-radius:24px}}
.pub-hero.logo{background:transparent;margin:6px 0 0;border-radius:0;text-align:center}
.pub-hero.logo img{width:auto;max-width:60%;height:auto;max-height:160px;object-fit:contain;margin:0 auto}
.pub-count{position:absolute;right:12px;top:12px;display:inline-flex;align-items:center;gap:5px;background:rgba(22,17,12,.55);color:#fff;font-size:12px;font-weight:700;padding:5px 11px;border-radius:999px;backdrop-filter:blur(5px);cursor:zoom-in}
.pub-count svg{display:block}
.pub-headcard{position:relative;z-index:2;background:var(--surface);border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow-lg);padding:22px 16px 20px;margin:-46px 10px 26px;text-align:center}
@media(min-width:641px){.pub-headcard{margin:-54px 42px 30px;padding:26px 28px 24px}}
.pub-headcard.nohero,.pub-hero.logo+.pub-headcard{margin:0 0 26px;box-shadow:var(--shadow)}
.pub-hero.logo+.pub-headcard{margin-top:12px}
.pub-headcard .pub-logo{width:86px;height:86px;margin:-66px auto 10px;display:block;border-radius:20px}
.pub-headcard.nohero .pub-logo,.pub-hero.logo+.pub-headcard .pub-logo{margin-top:0}
.pub-name{font-size:clamp(27px,6.6vw,42px);font-weight:600;line-height:1.14;letter-spacing:-.01em;overflow-wrap:break-word}
.pub-sub{color:var(--muted);font-size:15px;margin-top:5px}
.pub-headcard+.pub-gal-thumbs{margin:-8px 0 26px}
/* Horario por días */
.pub-hrs{display:flex;flex-direction:column;gap:4px;margin-top:2px;max-width:340px}
.pub-hr{display:flex;justify-content:space-between;gap:14px;font-size:14.5px}
.pub-hr span{color:var(--muted)}
.pub-hr b{font-weight:600;white-space:nowrap;font-variant-numeric:tabular-nums;color:var(--ink)}
.pub-titlerow{display:flex;align-items:center;justify-content:center;gap:16px;text-align:left}
.pub-titlerow>div{min-width:0}
.pub-logo{width:76px;height:76px;border-radius:16px;object-fit:contain;background:#fff;border:1px solid var(--line);flex:none;padding:5px;box-shadow:var(--shadow)}
.pub-soc{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:50%;vertical-align:middle;box-shadow:var(--shadow);transition:.15s}
.pub-soc:hover{transform:translateY(-2px)}
.pub-soc.ig{background:radial-gradient(circle at 30% 110%,#fdf497 0%,#fd5949 45%,#d6249f 60%,#285AEB 90%)}
.pub-soc.fb{background:#1877F2}
.pub-soc.tk{background:#111}
.pub-soc.ta{background:#34E0A1}
/* lightbox del visor */
.pub-lb{position:fixed;inset:0;background:rgba(24,20,16,.93);z-index:9000;display:none;align-items:center;justify-content:center}
.pub-lb.open{display:flex}
.pub-lb img{max-width:94vw;max-height:86vh;object-fit:contain;border-radius:10px;box-shadow:var(--shadow-lg)}
.pub-lb-x,.pub-lb-p,.pub-lb-n{position:absolute;z-index:2;background:rgba(255,255,255,.14);color:#fff;border:0;border-radius:50%;width:46px;height:46px;font-size:24px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center}
.pub-lb-x:hover,.pub-lb-p:hover,.pub-lb-n:hover{background:rgba(255,255,255,.28)}
.pub-lb-x{top:14px;right:14px;font-size:19px}
.pub-lb-p{left:10px;top:50%;transform:translateY(-50%)}
.pub-lb-n{right:10px;top:50%;transform:translateY(-50%)}
.pub-lb-c{position:absolute;bottom:18px;left:50%;transform:translateX(-50%);color:#fff;font-size:13px;letter-spacing:.08em;opacity:.85}
/* barra fija móvil (carta + reservar) */
.pub-stickybar{position:fixed;left:0;right:0;bottom:0;z-index:70;display:none;gap:10px;padding:10px 14px calc(10px + env(safe-area-inset-bottom));background:rgba(255,255,255,.94);backdrop-filter:blur(10px);border-top:1px solid var(--line);box-shadow:0 -8px 26px rgba(42,38,34,.10)}
.pub-stickybar .sb-carta,.pub-stickybar .sb-res{flex:1;display:flex;align-items:center;justify-content:center;gap:7px;min-height:48px;padding:11px 8px;border-radius:13px;font-weight:700;font-size:14.5px;text-decoration:none;font-family:inherit;cursor:pointer}
.pub-stickybar .sb-carta{background:var(--accent);color:#fff;border:0}
.pub-stickybar .sb-res{background:var(--surface);border:1.5px solid var(--accent);color:var(--accent)}
@media(max-width:640px){
  .pub-stickybar{display:flex}
  body.has-stickybar #app{padding-bottom:80px}
}
/* Modal de solicitud de reserva (info.reserva_form) */
.pub-resv{position:fixed;inset:0;background:rgba(24,20,16,.55);z-index:9500;display:none;align-items:flex-end;justify-content:center}
.pub-resv.open{display:flex}
.pub-resv-card{background:var(--surface,#fff);border-radius:18px 18px 0 0;padding:24px 22px calc(22px + env(safe-area-inset-bottom));width:100%;max-width:480px;max-height:88vh;overflow:auto;position:relative;text-align:left}
@media(min-width:640px){.pub-resv{align-items:center;padding:20px}.pub-resv-card{border-radius:18px;padding:26px}}
.pub-resv-x{position:absolute;top:12px;right:12px;width:34px;height:34px;border-radius:50%;border:1px solid var(--line);background:var(--surface,#fff);font-size:15px;cursor:pointer;color:var(--muted)}
.pub-resv-card h3{font-size:21px;margin:0 34px 4px 0}
.pub-resv-sub{color:var(--muted);font-size:13.5px;margin:0 0 16px}
.pub-resv-card form label{display:block;font-size:13.5px;font-weight:600;margin-bottom:12px}
.pub-resv-card input,.pub-resv-card select,.pub-resv-card textarea{width:100%;margin-top:4px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;font:inherit;font-size:15px;background:var(--surface,#fff)}
.pub-resv-card input:focus,.pub-resv-card select:focus,.pub-resv-card textarea:focus{outline:0;border-color:var(--accent)}
.pub-resv-row{display:flex;gap:10px}
.pub-resv-row label{flex:1}
.pub-hp{position:absolute!important;left:-9999px!important;width:1px!important;height:1px!important}
.pub-resv-priv{display:flex;gap:9px;align-items:flex-start;font-size:12.5px!important;font-weight:400!important;color:var(--muted);line-height:1.45}
.pub-resv-priv input{width:auto!important;margin:2px 0 0!important;flex:none;accent-color:var(--accent)}
.pub-resv-priv a{color:var(--accent);font-weight:600}
.pub-resv-btn{width:100%;padding:13px;background:var(--accent);color:#fff;border:0;border-radius:12px;font:inherit;font-size:15.5px;font-weight:700;cursor:pointer}
.pub-resv-btn:disabled{opacity:.6;cursor:default}
.pub-resv-msg{margin-top:12px;padding:11px 13px;border-radius:10px;font-size:13.5px;font-weight:600}
.pub-resv-msg.ok{background:#e7f6ec;color:#1c7a3f}
.pub-resv-msg.err{background:#fdeaea;color:#c0392b}
.pub-desc{color:var(--muted);margin:0;font-size:15px;line-height:1.75;text-align:left}
html{scroll-behavior:smooth}
/* Bloque "Información" (estilo menumallorca) */
.pub-info-sec{max-width:720px;margin:26px auto 0;text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:22px 20px;box-shadow:var(--shadow)}
@media(max-width:560px){.pub-info-sec{padding:20px 16px}}
.pub-info-sec h3{font-size:22px;font-weight:700;margin:0 0 16px;padding-bottom:10px;border-bottom:2px solid var(--line)}
.pub-info{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 26px}
.pub-info-i{display:flex;gap:12px;align-items:flex-start}
.pub-info-i .ic{font-size:20px;line-height:1.2;flex:0 0 auto;color:var(--accent)}
.pub-info-i .ic .ico{display:block}
.pub-chip .ico,.pub-stickybar .ico{vertical-align:-3px}
.pub-resv-card h3 .ico{vertical-align:-2px;color:var(--accent)}
.pub-info-i b{display:block;font-size:13px;color:var(--muted);font-weight:600;margin-bottom:2px}
.pub-info-i a,.pub-info-i .v{color:var(--ink);text-decoration:none;word-break:break-word;font-size:15.5px}
.pub-info-i a:hover{text-decoration:underline}
@media(max-width:560px){.pub-info{grid-template-columns:1fr;gap:16px}}
.pub-chips{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:14px}
.pub-chip{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:7px 14px;text-decoration:none}
button.pub-chip{font-family:inherit;cursor:pointer}
button.pub-chip:hover{border-color:var(--accent);color:var(--accent)}
a.pub-chip:hover{border-color:var(--accent);color:var(--accent)}
a.pub-chip.res,button.pub-chip.res{background:var(--accent);border-color:var(--accent);color:#fff}
a.pub-chip.res.wa{background:#25D366;border-color:#25D366;color:#fff}
.pub-stickybar .sb-res.wa{background:#25D366;border-color:#25D366;color:#fff}
a.pub-chip.res:hover,button.pub-chip.res:hover{filter:brightness(1.06);color:#fff}
/* Modal restaurante: sección landing */
.info-sep{margin:22px 0 14px;padding-top:16px;border-top:1px solid var(--line);font-size:13px;font-weight:700;color:var(--ink)}
.info-sep span{font-weight:400;color:var(--muted)}
.cover-pick{border:1.5px dashed var(--line);border-radius:12px;min-height:74px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--muted);font-size:13px;overflow:hidden;background:#fff}
.cover-pick:hover{border-color:var(--accent);color:var(--accent)}
.cover-pick img{width:100%;height:120px;object-fit:cover;display:block}
/* Banner de cookies */
#mm-cookie{position:fixed;left:12px;right:12px;bottom:12px;z-index:9999;max-width:780px;margin:0 auto;background:var(--surface);border:1px solid var(--line);border-radius:16px;box-shadow:0 12px 44px rgba(0,0,0,.18);padding:16px 18px;display:flex;gap:16px;align-items:center;justify-content:space-between;flex-wrap:wrap}
#mm-cookie .mm-ck-txt{flex:1;min-width:220px;font-size:13.5px;color:var(--ink);line-height:1.5}
#mm-cookie .mm-ck-txt a{color:var(--accent-ink);font-weight:600}
#mm-cookie .mm-ck-btns{display:flex;gap:10px;flex-shrink:0}
#mm-cookie button{font:inherit;font-size:13px;font-weight:700;padding:12px 18px;min-height:44px;border-radius:11px;cursor:pointer;border:1px solid var(--line);transition:.15s}
#mm-cookie .mm-ck-rej{background:var(--surface);color:var(--muted)}
#mm-cookie .mm-ck-rej:hover{color:var(--ink);border-color:#d8cfc2}
#mm-cookie .mm-ck-acc{background:var(--accent-chip);color:#fff;border-color:var(--accent-chip)}
#mm-cookie .mm-ck-acc:hover{filter:brightness(1.06)}
/* Páginas legales */
.legal-wrap{max-width:760px;margin:0 auto;padding:26px 18px 80px}
.legal-wrap .legal-top{display:flex;align-items:center;justify-content:space-between;padding:6px 0 26px}
.legal-wrap .legal-brand{display:flex;align-items:center;gap:9px;font-weight:800;font-size:17px;color:var(--ink);text-decoration:none}
.legal-wrap .legal-brand .dot{width:30px;height:30px;border-radius:9px;background:var(--accent);display:grid;place-items:center;color:#fff;font-size:17px}
.legal-wrap h1{font-family:'Playfair Display',serif;font-size:clamp(26px,5vw,38px);font-weight:600;margin-bottom:6px}
.legal-wrap .updated{color:var(--muted);font-size:13px;margin-bottom:26px}
.legal-wrap h2{font-size:19px;font-weight:700;margin:30px 0 8px}
.legal-wrap h3{font-size:15.5px;font-weight:700;margin:20px 0 5px;color:var(--accent)}
.legal-wrap p,.legal-wrap li{color:var(--ink);font-size:15px;line-height:1.7}
.legal-wrap ul,.legal-wrap ol{margin:8px 0 8px 20px}
.legal-wrap ol li{margin-bottom:5px}
/* información precontractual en el modal de pago (renovación automática y cancelación) */
.up-legal{margin-top:10px;padding-top:9px;border-top:1px solid var(--line);font-size:11.5px;line-height:1.55;color:var(--muted);text-align:left}
.up-legal a{color:var(--accent)}

/* aviso destacado dentro de un texto legal (renovación automática, alérgenos, IA…) */
.legal-wrap .legal-note{background:var(--accent-soft,#fdf3e2);border-left:3px solid var(--accent,#b3541e);border-radius:0 8px 8px 0;padding:12px 15px;margin:12px 0}
.legal-wrap .ph{background:#fff6d6;border-bottom:1px dashed #d4a017;padding:0 3px;border-radius:3px;font-weight:600}
.legal-wrap table{width:100%;border-collapse:collapse;margin:12px 0;font-size:13.5px}
.legal-wrap th,.legal-wrap td{border:1px solid var(--line);padding:8px 10px;text-align:left;vertical-align:top}
.legal-wrap th{background:var(--accent-soft);color:var(--accent);font-weight:700}
.legal-wrap a{color:var(--accent)}
/* Pie legal del visor (solo marca MyMenu) */
.pub-legal{margin:48px auto 0;padding:22px 0 8px;border-top:1px solid var(--line);text-align:center;color:var(--muted);font-size:12.5px}
.pub-legal a{color:var(--muted);margin:0 7px}
.pub-legal a:hover{color:var(--accent)}
.pub-loading,.pub-error{text-align:center;color:var(--muted);padding:80px 20px}
.pub-error .ico{font-size:46px;margin-bottom:12px}

@media (max-width:560px){
  .dish{gap:10px}
}

/* logo + galería del restaurante */
.logo-pick{display:flex;align-items:center;justify-content:center;width:110px;height:110px;border:2px dashed var(--line);border-radius:14px;background:#fff;cursor:pointer;overflow:hidden;color:var(--muted);font-size:13px;text-align:center;padding:6px}
.logo-pick img{width:100%;height:100%;object-fit:contain}
.logo-pick:hover{border-color:var(--accent)}
.gal-grid{display:flex;gap:10px;flex-wrap:wrap}
.gal-item{position:relative;width:86px;height:64px;border-radius:10px;overflow:hidden;border:1px solid var(--line);background:#fff}
.gal-item img{width:100%;height:100%;object-fit:cover;display:block}
.gal-item.gal-up{display:grid;place-items:center;font-size:20px}
.gal-x{position:absolute;top:3px;right:3px;width:22px;height:22px;border-radius:50%;background:rgba(30,26,22,.68);color:#fff;font-size:11px;display:grid;place-items:center;cursor:pointer;border:0}
.gal-add{display:grid;place-items:center;width:86px;height:64px;border:2px dashed var(--line);border-radius:10px;color:var(--muted);font-size:22px;cursor:pointer}
.gal-add:hover{border-color:var(--accent);color:var(--accent)}

/* estrella premium en las tarjetas (vista admin) */
.card-prem{position:absolute;top:12px;left:14px;font-size:15px;background:#fff6d6;border:1px solid #eed9b0;border-radius:999px;width:28px;height:28px;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow)}

/* editor de FAQs (panel) */
.faq-ed{border:1px solid var(--line);border-radius:14px;padding:13px 16px;margin-bottom:18px;background:var(--surface)}
.faq-ed summary{cursor:pointer;font-weight:700;font-size:14px;list-style:none}
.faq-ed summary::-webkit-details-marker{display:none}
.faq-row{display:grid;grid-template-columns:1fr 40px;gap:8px;margin:10px 0;align-items:start}
.faq-row .fq{grid-column:1;padding:10px 13px;border:1px solid var(--line);border-radius:10px;font:inherit;font-size:14px;outline:none}
.faq-row .fq:focus{border-color:var(--accent)}
.faq-row .icon-btn{grid-column:2;grid-row:1}
.faq-row .fa{grid-column:1 / -1;padding:9px 13px;border:1px solid var(--line);border-radius:10px;font:inherit;font-size:14px;resize:vertical;outline:none}
.faq-row .fa:focus{border-color:var(--accent)}

/* FAQs en la carta pública */
.pub-faq details{background:var(--bg);border:1px solid var(--line);border-radius:12px;margin-bottom:9px;overflow:hidden}
.pub-faq summary{cursor:pointer;font-weight:700;padding:13px 42px 13px 16px;list-style:none;position:relative;font-size:15px}
.pub-faq summary::-webkit-details-marker{display:none}
.pub-faq summary:after{content:"+";position:absolute;right:16px;top:9px;font-size:21px;color:var(--muted)}
.pub-faq details[open] summary:after{content:"–"}
.pub-faq p{padding:0 16px 14px;color:var(--ink);opacity:.85;font-size:14.5px;line-height:1.55}

/* chips de servicios en el visor */
.pub-svc{display:flex;gap:7px;flex-wrap:wrap;margin-top:4px}
.pub-svc-chip{background:var(--bg);border:1px solid var(--line);border-radius:999px;padding:5px 11px;font-size:12.5px;font-weight:600;color:var(--ink);white-space:nowrap}

/* chip de plan */
.plan-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:9px;font-size:13px;color:var(--muted)}
.plan-chip{display:inline-flex;align-items:center;gap:6px;background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:6px 13px;font-size:12.5px;font-weight:700;color:var(--muted)}
.plan-chip.prem{background:#fff6d6;border-color:#eed9b0;color:#8a5a00}
.plan-chip.cta{background:var(--accent);border-color:var(--accent);color:#fff;cursor:pointer}
.plan-chip.lnk{text-decoration:none;color:var(--ink)}
.plan-chip.lnk:hover{border-color:var(--accent);color:var(--accent)}

/* estadísticas de visitas */
.stats-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px 22px;margin:16px 0;box-shadow:var(--shadow)}
.st-head{display:flex;justify-content:space-between;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.st-head b{font-family:'Sora',sans-serif;font-size:16px}
/* Tarjeta de visitas plegable */
.st-toggle{display:flex;align-items:center;gap:12px;width:100%;background:none;border:0;padding:0;font:inherit;cursor:pointer;text-align:left;color:inherit}
.st-toggle>b{font-family:'Sora',sans-serif;font-size:15px;display:flex;align-items:center;gap:7px;flex:none}
.st-sum{color:var(--muted);font-size:13px;min-width:0}
.st-sum b{color:var(--ink);font-size:14px}
.st-toggle .hint{margin-left:auto;flex:none}
.st-chev{color:var(--muted);flex:none;transition:transform .15s ease}
.stats-card.closed .st-chev{transform:rotate(-90deg)}
.st-more{flex:none;color:var(--accent);font-weight:700;font-size:13.5px;border:1.5px solid var(--accent);border-radius:999px;padding:7px 16px;transition:.15s}
.st-toggle:hover .st-more{background:var(--accent);color:#fff}
.stats-card.closed{padding:16px 22px}
.stats-card.closed .st-body{display:none}
.st-body{margin-top:14px}
@media(max-width:640px){.st-toggle .hint{display:none}}
/* Iconos SVG en botones y textos */
.ico{vertical-align:-2.5px;flex:none}
.btn .ico{margin-right:1px}
.st-act .ico{vertical-align:-2px}
.st-tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:14px}
.st-tile{background:var(--bg);border:1px solid var(--line);border-radius:13px;padding:11px 8px 9px;text-align:center}
.st-tile b{display:block;font-size:26px;font-family:'Sora',sans-serif;color:var(--ink);line-height:1.1;font-weight:700}
.st-tile span{font-size:11.5px;color:var(--muted);font-weight:600;letter-spacing:.03em}
.st-tile.hoy{background:var(--accent-soft);border-color:var(--accent)}
.st-tile.hoy b{color:var(--accent)}
.st-chart{border:1px solid var(--line);border-radius:13px;padding:12px 12px 8px;background:linear-gradient(180deg,#fff, var(--bg))}
.st-bars{display:flex;align-items:flex-end;gap:3px;height:64px;border-bottom:1.5px solid var(--line);padding-bottom:1px}
.st-bars .stb{flex:1;display:flex;flex-direction:column;justify-content:flex-end;height:100%;opacity:.88;border-radius:3px 3px 0 0}
.st-bars .stb:hover{opacity:1;background:var(--accent-soft)}
.st-bars .stb.zero{opacity:.3}
.st-bars i{display:block;border-radius:2.5px 2.5px 0 0}
.st-bars i.c{background:var(--accent)}
.st-bars i.g{background:#ffc107;margin-bottom:1px}
.st-axis{display:flex;justify-content:space-between;align-items:center;font-size:10.5px;color:var(--muted);padding-top:5px;letter-spacing:.03em}
.st-peak{font-weight:700;color:var(--ink);opacity:.7}
.st-dir{font-size:13px;color:var(--muted);margin:-4px 0 12px;background:#fff8e1;border:1px solid #f2e3ae;border-radius:10px;padding:8px 12px}
.st-dir b{color:#8a5a00}
.st-acts{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:-2px 0 12px}
.st-act{background:var(--bg);border:1px solid var(--line);border-radius:999px;padding:6px 12px;font-size:12.5px;color:var(--muted);font-weight:600}
.st-act b{color:var(--ink);font-family:'Sora',sans-serif}
.st-acts-hint{font-size:11px;color:var(--muted);opacity:.8;margin-left:2px}
.st-leg{display:flex;align-items:center;gap:7px;font-size:11.5px;color:var(--muted);margin-top:9px}
.st-leg i{width:10px;height:10px;border-radius:3px;display:inline-block}
.st-leg i.c{background:var(--accent)}
.st-leg i.g{background:#ffc107;margin-left:10px}

/* marca */
.mm-o{color:var(--accent)}
.mm-a{color:#ffc107}
.dot img,.auth-card .logo img{display:block}

/* ── Móvil: gestión cómoda (al final para ganar la cascada) ── */
@media(max-width:640px){
  .auth-card{padding:26px 18px}
  .field input,.field select,.field textarea,.auth-card input,#modal input,#modal select,#modal textarea{font-size:16px}
  /* topbar compacta: fuera la miga, botones a mano */
  .topbar{gap:8px;padding:10px 14px}
  .topbar .crumb{display:none}
  .topbar .btn.sm{padding:8px 11px}
  /* La barra no cabe en la cuenta de administrador: Usuarios + Suscripciones +
     Actividad + Ayuda + Salir suman 483px de botones en una pantalla de 375, y
     al ser flex sin envolver se salían de la página entera — 552px de documento
     en 375 de pantalla, que es la franja muerta a la derecha y la sensación de
     "todo pequeño". Envolver lo arregla pero dispara la barra de 65 a 117px de
     alto, y es sticky. Se hace desplazable dentro de sí misma, igual que .tabs
     y .subnav: la página deja de desbordar y la barra mantiene su altura.
     Al cliente no le afectaba (su barra son tres cosas y cabía). */
  .topbar{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .topbar::-webkit-scrollbar{display:none}
  .topbar>*{flex:none}
  .topbar .spacer{display:none}
  /* héroe del restaurante apilado y botón Editar a lo ancho */
  .proj-hero{flex-wrap:wrap;gap:12px}
  .proj-hero .logo{width:46px;height:46px;font-size:22px;border-radius:12px}
  .proj-hero h1{font-size:25px}
  .proj-hero>button,.proj-hero>a.btn{margin-left:0!important;width:100%;justify-content:center}
  .st-tiles{gap:7px}
  .st-tile{padding:9px 4px 8px}
  .st-tile b{font-size:21px}
  .st-tile span{font-size:10.5px;letter-spacing:.01em;white-space:nowrap}
  /* botonera de cartas: rejilla 2×2 CON etiquetas visibles */
  .toolbar{display:grid;grid-template-columns:1fr 1fr;gap:8px}
  .toolbar .btn{width:100%;min-height:48px;padding:11px 8px;font-size:13.5px;white-space:normal;line-height:1.25}
  .toolbar .spacer{display:none}
  .carta-actions{display:flex;flex-wrap:wrap;gap:8px}
  /* editor a pantalla completa con Guardar siempre visible */
  .overlay{padding:0;align-items:stretch}
  .modal{width:100%;height:100dvh;max-height:100dvh;border-radius:0;display:flex;flex-direction:column}
  .modal-head{padding:14px 16px 0;flex:none}
  .modal-body{padding:12px 16px 16px;flex:1;overflow:auto}
  .modal-foot{padding:12px 16px calc(12px + env(safe-area-inset-bottom));flex:none}
  .modal-foot .btn.primary{flex:1;min-height:48px}
  /* editor de platos: precio corto y botones tocables */
  .ed-item .pr{width:88px;flex:none}
  .icon-btn{min-width:42px;min-height:42px}
  .ed-section .sec-top{flex-wrap:nowrap}
  /* varios */
  .lang-switch .lbl{display:none}
  .st-nums{gap:20px}
  .st-nums b{font-size:22px}
  .pub-bar{flex-direction:column;align-items:stretch;text-align:center}
  .pub-bar .qr{margin:0 auto}
  .pub-bar .link input{flex:1 1 100%}
  .pub-bar .link .btn{flex:1;justify-content:center}
}

/* ---- Actividad (panel admin) ---- */
.ac-filter{padding:8px 12px;border:1px solid var(--line);border-radius:10px;background:#fff;font:inherit;color:var(--ink);max-width:100%}
.ac-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:12px;background:#fff}
.ac-table{width:100%;border-collapse:collapse;font-size:14px;min-width:560px}
.ac-table th{text-align:left;padding:11px 14px;font-weight:700;color:var(--muted);border-bottom:1px solid var(--line);white-space:nowrap;font-size:12.5px;text-transform:uppercase;letter-spacing:.02em}
.ac-table td{padding:11px 14px;border-bottom:1px solid var(--line);vertical-align:top}
.ac-table tr:last-child td{border-bottom:none}
.ac-when{color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}
.ac-act{font-weight:600;white-space:nowrap}
.ac-user{color:var(--ink)}
.ac-meta{color:var(--muted)}
.ac-pager{display:flex;align-items:center;justify-content:center;gap:14px;margin:16px 0;color:var(--muted);font-size:13.5px}
@media(max-width:640px){.ac-table{font-size:13px}.ac-table th,.ac-table td{padding:9px 10px}}
.ac-controls{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.ac-controls .ac-filter{max-width:220px}
@media(max-width:640px){.ac-controls{width:100%}.ac-controls .ac-filter{flex:1 1 140px;max-width:none}}

/* ============================================================
   Landing pública del restaurante (diseño editorial "pl-")
   caliza clara · tinta espresso · acento por restaurante
   Display serif (Marcellus) + cuerpo sans (Manrope)
   ============================================================ */
:root{--pl-dark:#2c3329;--pl-display:'Marcellus','Cormorant Garamond',Georgia,serif;--pl-head-bg:rgba(250,246,239,.85);--pl-head-bg-s:rgba(250,246,239,.94)}
.pl-serif{font-family:var(--pl-display);font-weight:400;letter-spacing:-.01em}

/* ---------- Temas Premium de la página pública (info.ptheme) ---------- */
/* Elegante: papel cálido, tinta sepia */
body.pl-t-elegante{--bg:#f6efe3;--surface:#fffcf4;--ink:#2e2418;--muted:#6e6252;--line:#e6dbc6;--pl-dark:#2a2118;
  --pl-head-bg:rgba(246,239,227,.85);--pl-head-bg-s:rgba(246,239,227,.94);
  --shadow:0 10px 30px rgba(60,48,30,.09);--shadow-lg:0 24px 60px rgba(60,48,30,.16)}
/* Premium clara: el papel de la "carta impresa" — Cinzel grabado en los rótulos y
   EB Garamond en el cuerpo, con el oro quemado para que las versalitas se lean a
   4,5:1 sobre el papel (el #c9a15a del cartel se queda en 3:1 con letra pequeña). */
body.pl-t-premium{--bg:#f7f3ea;--surface:#fdfbf5;--ink:#221e18;--muted:#6d6252;--line:#e6ddca;--pl-dark:#1d1a15;
  --pl-head-bg:rgba(247,243,234,.86);--pl-head-bg-s:rgba(247,243,234,.95);
  --pl-display:'Cinzel',Georgia,serif;
  --shadow:0 10px 30px rgba(70,55,30,.09);--shadow-lg:0 24px 60px rgba(70,55,30,.16)}
/* Premium oscura: el mismo grabado sobre negro cálido. Solo cambia la paleta —
   la tipografía va en .pl-fam-premium, que llevan las dos versiones. */
body.pl-t-premiumosc{--bg:#0e0c0a;--surface:#16120c;--ink:#efe7d6;--muted:#a89a7e;--line:#2b2519;--pl-dark:#080705;
  --pl-head-bg:rgba(14,12,10,.84);--pl-head-bg-s:rgba(14,12,10,.95);
  --pl-display:'Cinzel',Georgia,serif;
  --shadow:0 10px 30px rgba(0,0,0,.45);--shadow-lg:0 24px 60px rgba(0,0,0,.6)}
body.pl-fam-premium .pl-serif{font-weight:600;letter-spacing:.03em}
body.pl-fam-premium .pl-hero-copy h1,body.pl-fam-premium .pl-foot-brand{text-transform:uppercase}
/* el cuerpo de la carta, en EB Garamond: es lo que le da el aire de carta impresa */
body.pl-fam-premium .menu,body.pl-fam-premium .menu .dish .name,body.pl-fam-premium .menu .dish .d,
body.pl-fam-premium .menu-head .desc{font-family:'EB Garamond',Georgia,serif}
body.pl-fam-premium .menu .dish .name{font-size:18.5px;font-weight:500;letter-spacing:0}
body.pl-fam-premium .menu .dish .d{font-size:15.5px}
body.pl-fam-premium .menu-head .desc{font-style:italic;font-size:16px}
/* rótulo de sección: versalita grabada con filetes cortos, como en el cartel */
body.pl-fam-premium .section-title{justify-content:center;gap:16px}
body.pl-fam-premium .section-title h3{font-family:'Cinzel',Georgia,serif;font-weight:500;
  font-size:15px;letter-spacing:.26em;text-transform:uppercase;color:var(--accent-ink)}
body.pl-fam-premium .section-title .rule{max-width:26px;flex:0 0 26px;background:var(--accent-soft)}
body.pl-fam-premium .section-title::before{content:"";flex:0 0 26px;height:1px;background:var(--accent-soft)}
/* recuadro del menú: papel con filete, sin pastilla flotante */
body.pl-fam-premium .menu-banner{background:var(--surface);border:1px solid var(--line);border-radius:3px;box-shadow:none}
body.pl-fam-premium .menu-banner .mb-kind{position:static;transform:none;display:block;background:none;
  color:var(--muted);box-shadow:none;padding:0;font-family:'Cinzel',Georgia,serif;font-size:11px;letter-spacing:.24em;margin-bottom:14px}
body.pl-fam-premium .menu-banner .mb-prices .mb-amount{font-family:'Cinzel',Georgia,serif;font-weight:600}
body.pl-fam-premium .dish{border-bottom-style:dotted}

/* Carta (oscura) y Carta clara: Cormorant Garamond en los platos y Jost en los
   rótulos, como el cartel del mismo nombre. Misma tipografía, dos papeles. */
body.pl-t-carta{--bg:#14130f;--surface:#1c1a15;--ink:#f3ecdd;--muted:#b0a892;--line:#332f26;--pl-dark:#100f0b;
  --pl-head-bg:rgba(20,19,15,.84);--pl-head-bg-s:rgba(20,19,15,.95);
  --pl-display:'Cormorant Garamond',Georgia,serif;
  --shadow:0 10px 30px rgba(0,0,0,.4);--shadow-lg:0 24px 60px rgba(0,0,0,.55)}
body.pl-t-cartaclara{--bg:#faf7ef;--surface:#fffdf7;--ink:#24211a;--muted:#6f6857;--line:#e8e0cf;--pl-dark:#1e1b15;
  --pl-head-bg:rgba(250,247,239,.86);--pl-head-bg-s:rgba(250,247,239,.95);
  --pl-display:'Cormorant Garamond',Georgia,serif;
  --shadow:0 10px 30px rgba(60,48,30,.09);--shadow-lg:0 24px 60px rgba(60,48,30,.16)}
body.pl-fam-carta .pl-serif{font-weight:600;letter-spacing:.005em}
body.pl-fam-carta .menu .dish .name,body.pl-fam-carta .menu-head .desc{font-family:'Cormorant Garamond',Georgia,serif}
body.pl-fam-carta .menu .dish .name{font-size:20px;font-weight:600;letter-spacing:0}
body.pl-fam-carta .menu,body.pl-fam-carta .menu .dish .d{font-family:'Jost','Manrope',sans-serif}
body.pl-fam-carta .menu .dish .d{font-size:14px}
body.pl-fam-carta .menu-head .desc{font-style:italic;font-size:17.5px}
body.pl-fam-carta .section-title{justify-content:center;gap:0}
body.pl-fam-carta .section-title h3{font-family:'Jost','Manrope',sans-serif;font-weight:500;
  font-size:13.5px;letter-spacing:.32em;text-transform:uppercase;color:var(--accent-ink)}
body.pl-fam-carta .section-title .rule{display:none}
/* recuadro del menú con el filete doble del cartel (el interior lo dibuja la sombra) */
body.pl-fam-carta .menu-banner{background:var(--surface);border:1px solid var(--line);border-radius:2px;
  box-shadow:inset 0 0 0 4px var(--surface),inset 0 0 0 5px var(--line)}
body.pl-fam-carta .menu-banner .mb-kind{position:static;transform:none;display:block;background:none;
  color:var(--accent-ink);box-shadow:none;padding:0;font-family:'Jost','Manrope',sans-serif;
  font-size:11px;letter-spacing:.32em;font-weight:500;margin-bottom:13px}
body.pl-fam-carta .menu-banner .mb-prices .mb-amount{font-family:'Cormorant Garamond',Georgia,serif;font-weight:700}

/* Clásico: marfil cálido y terracota, con Bricolage Grotesque en los titulares.
   La firma del cartel —los filetes que lo enmarcan— se queda en una franja fina
   arriba del todo; abajo no cabe porque ahí vive la barra fija de acciones. */
body.pl-t-clasico{--bg:#f5efe4;--surface:#faf6ec;--ink:#2a2119;--muted:#6f6250;--line:#e5d9c6;--pl-dark:#241d15;
  --pl-head-bg:rgba(245,239,228,.86);--pl-head-bg-s:rgba(245,239,228,.95);
  --pl-display:'Bricolage Grotesque','Sora',sans-serif;
  --shadow:0 10px 30px rgba(60,40,25,.10);--shadow-lg:0 24px 60px rgba(60,40,25,.18)}
body.pl-t-clasico .pl-serif{font-weight:700;letter-spacing:-.02em}
/* 81 y no 80: la cabecera pegajosa también es 80 y, al ir después en el marcado,
   ganaba el empate y se comía el filete (su fondo es translúcido, así que no se
   veía que estuviera debajo, se veía lavado). */
body.pl-t-clasico::before{content:"";position:fixed;top:0;left:0;right:0;height:5px;background:var(--accent);z-index:81}
body.pl-t-clasico .menu,body.pl-t-clasico .menu .dish .name,body.pl-t-clasico .menu .dish .d,
body.pl-t-clasico .menu-head .desc{font-family:'Jost','Manrope',sans-serif}
body.pl-t-clasico .menu .dish .name{font-size:17.5px;font-weight:400;letter-spacing:.005em}
body.pl-t-clasico .menu-head .desc{font-size:15px}
body.pl-t-clasico .section-title{justify-content:center;gap:0}
body.pl-t-clasico .section-title h3{font-family:'Jost','Manrope',sans-serif;font-weight:500;
  font-size:14px;letter-spacing:.3em;text-transform:uppercase;color:var(--accent-ink)}
body.pl-t-clasico .section-title .rule{display:none}
body.pl-t-clasico .menu-banner{background:var(--surface);border:1px solid var(--line);border-radius:4px;box-shadow:none}
body.pl-t-clasico .menu-banner .mb-kind{position:static;transform:none;display:block;background:none;
  color:var(--accent-ink);box-shadow:none;padding:0;font-family:'Jost','Manrope',sans-serif;
  font-size:11px;letter-spacing:.3em;font-weight:600;margin-bottom:12px}
body.pl-t-clasico .menu-banner .mb-prices .mb-amount{font-family:'Bricolage Grotesque','Sora',sans-serif;
  font-weight:700;letter-spacing:-.02em}
/* El título de la carta usa .serif, que es Sora: en estos temas desentonaba
   (rótulos en Cinzel, platos en Garamond… y el título en una sans geométrica).
   Pasa a la tipografía de titulares del tema, como en el cartel. */
body.pl-fam-premium .menu-head h2,body.pl-fam-carta .menu-head h2,
body.pl-t-clasico .menu-head h2{font-family:var(--pl-display)}
body.pl-fam-premium .menu-head h2,body.pl-fam-carta .menu-head h2{letter-spacing:.01em}
/* los rombos que flanquean el rótulo en los carteles Clásico y Carta */
body.pl-t-clasico .section-title h3::before,body.pl-t-clasico .section-title h3::after,
body.pl-fam-carta .section-title h3::before,body.pl-fam-carta .section-title h3::after{
  content:"◆";font-size:8px;vertical-align:.18em;opacity:.7;margin:0 13px}

/* Bistró: pizarra oscura (el acento se aclara desde JS para que sea legible) */
body.pl-t-bistro{--bg:#1b1f1c;--surface:#242925;--ink:#efece2;--muted:#a6a294;--line:#383e38;--pl-dark:#121512;
  --pl-head-bg:rgba(27,31,28,.82);--pl-head-bg-s:rgba(27,31,28,.94);
  --shadow:0 10px 30px rgba(0,0,0,.35);--shadow-lg:0 24px 60px rgba(0,0,0,.5)}
body.pl-t-bistro .pub-stickybar{background:rgba(30,35,31,.94);box-shadow:0 -8px 26px rgba(0,0,0,.4)}
body.pl-t-bistro .pl-res-card{box-shadow:0 24px 60px -30px rgba(0,0,0,.85)}
body.pl-t-bistro .pub-stickybar .sb-carta{color:#1b1f1c}
body.pl-t-bistro .pl-btn.primary{color:#1b1f1c}
body.pl-t-bistro .menu-banner .mb-kind{color:#1b1f1c}
/* Los dos temas oscuros nuevos necesitan los mismos ajustes que Bistró: sobre el
   acento (que en oscuro se aclara) el texto va en el color del fondo, y lo que
   flota pide su propia sombra. Aquí sale por variable, no a mano como en Bistró. */
body.pl-t-carta .pub-stickybar,body.pl-t-premiumosc .pub-stickybar{background:var(--pl-head-bg-s);box-shadow:0 -8px 26px rgba(0,0,0,.4)}
body.pl-t-carta .pub-stickybar .sb-carta,body.pl-t-premiumosc .pub-stickybar .sb-carta,
body.pl-t-carta .pl-btn.primary,body.pl-t-premiumosc .pl-btn.primary{color:var(--bg)}
body.pl-t-carta .pl-res-card,body.pl-t-premiumosc .pl-res-card{box-shadow:0 24px 60px -30px rgba(0,0,0,.85)}

/* ---------- Tipografías Premium de los rótulos (info.pfont) ----------
   Van DESPUÉS de los temas a propósito: a igual especificidad gana la última, y
   una tipografía elegida a mano debe pisar la que trae el estilo. Sin pfont no
   hay clase pl-f-* y manda la del tema, que es la opción "La del estilo". */
body.pl-f-marcellus{--pl-display:'Marcellus',Georgia,serif}
body.pl-f-marcellus .pl-serif{font-weight:400;letter-spacing:-.01em}
/* Cinzel + EB Garamond: el par de los estilos Premium, disponible suelto. Toca
   también el cuerpo de la carta (el resto de pfont solo cambian los titulares),
   porque lo que pidió Diego es la PAREJA, no solo el rótulo. */
body.pl-f-cinzel{--pl-display:'Cinzel',Georgia,serif}
body.pl-f-cinzel .pl-serif{font-weight:600;letter-spacing:.03em}
body.pl-f-cinzel .menu,body.pl-f-cinzel .menu .dish .name,body.pl-f-cinzel .menu .dish .d,
body.pl-f-cinzel .menu-head .desc{font-family:'EB Garamond',Georgia,serif}
body.pl-f-cinzel .menu .dish .name{font-size:18.5px;font-weight:500;letter-spacing:0}
body.pl-f-cinzel .menu .dish .d{font-size:15.5px}
body.pl-f-cinzel .menu-head .desc{font-style:italic;font-size:16px}
body.pl-f-cinzel .menu-head h2{font-family:var(--pl-display);letter-spacing:.01em}
/* también el rótulo de sección: es un título, y dejarlo en Sora rompía la pareja
   (titulares Cinzel, platos Garamond… y las secciones en la sans de antes). Solo
   cambia la familia: si hay un tema puesto, su versalita y su filete siguen. */
body.pl-f-cinzel .section-title h3{font-family:'Cinzel',Georgia,serif;font-weight:500}
body.pl-f-cormorant{--pl-display:'Cormorant Garamond',Georgia,serif}
body.pl-f-cormorant .pl-serif{font-weight:600}
body.pl-f-lora{--pl-display:'Lora',Georgia,serif}
body.pl-f-lora .pl-serif{font-weight:500}
body.pl-f-sora{--pl-display:'Sora','Manrope',sans-serif}
body.pl-f-sora .pl-serif{font-weight:700;letter-spacing:-.02em}
body.pl-mode .pub-shell{max-width:none;padding:0}
body.pl-mode{background:var(--bg)}
.pl-wrap{width:100%;max-width:1200px;margin-inline:auto;padding-inline:clamp(18px,5vw,48px)}
.pl-wrap.narrow{max-width:920px}
.pl-kicker{display:inline-block;font-size:11.5px;letter-spacing:.15em;text-transform:uppercase;color:var(--accent-ink);font-weight:700;background:var(--accent-soft);padding:6px 15px;border-radius:999px;margin-bottom:16px}
/* en el héroe el rótulo es una entradilla, sin pastilla */
.pl-hero-copy .pl-kicker{background:none;padding:0;margin-bottom:12px}
.pl-mode section{padding-block:clamp(48px,8vw,104px)}
.pl-mode h2.pl-serif{font-size:clamp(30px,4.2vw,48px);line-height:1.1}

/* botones */
.pl-btn{display:inline-flex;align-items:center;justify-content:center;gap:.5em;min-height:48px;padding:0 24px;border-radius:8px;font-size:15px;font-weight:600;letter-spacing:.01em;cursor:pointer;border:1px solid transparent;text-decoration:none;transition:transform .12s ease,background .2s,color .2s,border-color .2s;white-space:nowrap;font-family:inherit}
.pl-btn:active{transform:translateY(1px)}
.pl-btn.primary{background:var(--accent);color:#fff}
.pl-btn.primary:hover{filter:brightness(1.07)}
.pl-btn.ghost{background:transparent;color:var(--ink);border-color:var(--line)}
.pl-btn.ghost:hover{border-color:var(--ink)}
.pl-btn.wa{background:#25D366;color:#fff}
.pl-btn.wa:hover{filter:brightness(1.05)}
.pl-btn.sm{min-height:44px;padding:0 16px;font-size:14px}
.pl-btn.block{display:flex;width:100%}
.pl-btn.block+.pl-btn.block{margin-top:10px}
.pl-btn .ico{flex:none}

/* cabecera sticky */
.pl-head{position:sticky;top:0;z-index:80;background:var(--pl-head-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid transparent;transition:border-color .3s,background .3s}
.pl-head.scrolled{border-bottom-color:var(--line);background:var(--pl-head-bg-s)}
.pl-nav{display:flex;align-items:center;justify-content:space-between;min-height:66px;gap:14px}
.pl-brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink);min-width:0;min-height:44px}
.pl-brand-logo{width:40px;height:40px;border-radius:10px;object-fit:contain;background:#fff;border:1px solid var(--line);flex:none}
.pl-brand-txt{display:flex;flex-direction:column;line-height:1.05;min-width:0}
.pl-brand-txt .name{font-size:20px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pl-brand-txt .sub{font-size:9.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--muted);margin-top:3px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pl-links{display:flex;align-items:center;gap:26px;margin-left:auto}
.pl-links a{font-size:14.5px;font-weight:600;color:var(--ink);text-decoration:none;position:relative;padding:11px 0}
.pl-links a::after{content:"";position:absolute;left:0;bottom:3px;width:0;height:1.5px;background:var(--accent);transition:width .22s ease}
.pl-links a:hover::after{width:100%}
.pl-nav-cta{display:flex;align-items:center;gap:10px;flex:none}
@media(max-width:900px){.pl-links{display:none}}
@media(max-width:640px){.pl-nav-cta .pl-btn{display:none}}
@media(max-width:560px){.pl-brand-txt .sub{display:none}.pl-brand-txt .name{font-size:18px}}

/* menú hamburguesa + panel lateral (móvil/tablet) */
.pl-burger{display:none;width:44px;height:44px;border:1px solid var(--line);border-radius:8px;background:var(--surface);cursor:pointer;align-items:center;justify-content:center;color:var(--ink);flex:none}
@media(max-width:900px){.pl-burger{display:inline-flex}}
.pl-drawer{position:fixed;inset:0;z-index:200;background:rgba(30,35,28,.42);opacity:0;pointer-events:none;transition:opacity .25s ease}
.pl-drawer.open{opacity:1;pointer-events:auto}
.pl-drawer-panel{position:absolute;top:0;right:0;height:100%;width:min(84vw,340px);background:var(--surface);transform:translateX(100%);transition:transform .28s cubic-bezier(.4,0,.2,1);display:flex;flex-direction:column;padding:22px 24px;overflow:auto}
.pl-drawer.open .pl-drawer-panel{transform:none}
.pl-drawer-top{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:18px}
.pl-drawer-x{width:44px;height:44px;border:1px solid var(--line);border-radius:50%;background:var(--surface);cursor:pointer;font-size:16px;color:var(--muted);flex:none}
.pl-drawer a.dl{font-family:var(--pl-display);font-size:23px;padding:14px 0;border-bottom:1px solid var(--line);color:var(--ink);text-decoration:none}
.pl-drawer .pl-btn{margin-top:24px}

/* selector de idioma */
.pl-lang{position:relative}
.pl-lang-btn{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 11px;border:1px solid var(--line);border-radius:8px;background:var(--surface);cursor:pointer;font:inherit;font-size:13px;font-weight:700;color:var(--ink);letter-spacing:.03em}
.pl-lang-btn:hover{border-color:var(--ink)}
.pl-lang-menu{position:absolute;top:calc(100% + 8px);right:0;min-width:150px;background:var(--surface);border:1px solid var(--line);border-radius:10px;box-shadow:0 16px 40px -18px rgba(0,0,0,.35);padding:6px;opacity:0;transform:translateY(-6px);pointer-events:none;transition:opacity .16s,transform .16s;z-index:90}
.pl-lang.open .pl-lang-menu{opacity:1;transform:none;pointer-events:auto}
.pl-lang-opt{display:flex;align-items:center;min-height:44px;padding:8px 12px;border-radius:6px;font-size:14px;color:var(--ink);text-decoration:none}
.pl-lang-opt:hover{background:var(--bg)}
.pl-lang-opt.active{font-weight:700;color:var(--accent)}

/* héroe */
.pl-hero{padding-block:0!important}
.pl-hero-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(24px,4vw,56px);align-items:stretch;min-height:min(70vh,600px)}
.pl-hero-grid.nomedia{grid-template-columns:1fr;min-height:0;text-align:center}
.pl-hero-grid.nomedia .pl-hero-actions{justify-content:center}
.pl-hero-grid.nomedia .pl-hero-meta{width:max-content;max-width:100%;margin-inline:auto}
.pl-hero-copy{display:flex;flex-direction:column;justify-content:center;padding-block:clamp(36px,6vw,72px)}
.pl-hero-copy h1{font-size:clamp(34px,5.6vw,66px);line-height:1.08;margin:0}
.pl-hero-copy .lede{font-size:clamp(17px,2vw,21px);color:var(--muted);max-width:38ch;margin-top:18px}
/* valoración de Google: icono de trazo en vez del emoji que traía el subtítulo */
.pl-rating{display:inline-flex;align-items:center;gap:8px}
.pl-rating .ico{color:#e0a02b;flex:none}
.pl-rating b{color:var(--ink);font-weight:700;font-variant-numeric:tabular-nums}
.pl-hero-actions{display:flex;gap:12px;margin-top:30px;flex-wrap:wrap}
.pl-hero-meta{display:flex;flex-direction:column;gap:15px;margin-top:32px;padding-top:26px;border-top:1px solid var(--line)}
.pl-hero-meta .m{display:flex;align-items:flex-start;gap:13px}
.pl-hero-meta .mi{flex:none;width:38px;height:38px;border-radius:50%;background:var(--accent-soft);color:var(--accent);display:grid;place-items:center;margin-top:1px}
.pl-hero-meta .mi .ico{display:block}
.pl-hero-meta .mt{min-width:0;padding-top:1px}
.pl-hero-meta .lbl{display:block;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-weight:700;margin-bottom:3px}
.pl-hero-meta .val{font-size:15.5px;font-weight:600;line-height:1.4;color:var(--ink)}
.pl-hero-meta a.val{color:var(--ink);text-decoration:none}
.pl-hero-meta a.val:hover{color:var(--accent);text-decoration:underline}
/* La foto se muestra completa y su tamaño manda: sin caja, sin fondo, sin recortes */
.pl-hero-media{position:relative;align-self:center;justify-self:center;max-width:100%;padding-block:clamp(20px,3vw,40px)}
.pl-hero-media img{display:block;max-width:100%;width:auto;height:auto;max-height:min(68vh,600px);border-radius:16px;margin:0 auto;box-shadow:var(--shadow)}
.pub-count{z-index:2;top:calc(12px + clamp(20px,3vw,40px))}
.pl-hero-media.logo img{max-height:260px;border-radius:0;box-shadow:none}
/* retrato (foto vertical): en escritorio se estira a la altura del héroe para no quedar mínima */
@media(min-width:961px){
  /* Foto apaisada normal: en escritorio llena su columna como tarjeta 4:3 en vez de flotar
     contenida con huecos enormes (medido: 203px de foto en 935px de columna = 27% vacío).
     Excluye el LOGO (va contenido, sin recorte) y las fotos verticales (.tall, ya tienen su
     regla). El móvil no entra aquí, así que sigue apilando la foto completa. */
  .pl-hero-grid:not(.nomedia){align-items:center}
  .pl-hero-media:not(.logo){align-self:center;justify-self:stretch;width:100%;padding-block:0}
  .pl-hero-media:not(.logo):not(.tall) img{width:100%;height:auto;aspect-ratio:4/3;max-height:min(68vh,520px);object-fit:cover;border-radius:20px}
  .pl-hero-media:not(.logo) .pub-count{top:12px}
  .pl-hero-media.tall img{height:min(62vh,560px);width:auto;max-width:100%;object-fit:contain}
}
@media(max-width:960px){
  .pl-hero-grid{grid-template-columns:1fr;min-height:0}
  .pl-hero-copy{padding-block:clamp(28px,7vw,48px) 26px}
  .pl-hero-media{padding-block:0;margin-bottom:26px}
  .pub-count{top:12px}
}

/* la carta */
.pl-carta{background:var(--surface);border-block:1px solid var(--line);scroll-margin-top:84px}
.pl-carta .pub-tabs{justify-content:center;margin:6px 0 26px}
.pl-carta .carta-block{margin-bottom:0}
.pl-carta-top{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:6px}
.pl-pdf-btn{display:inline-flex;align-items:center;gap:7px;font:inherit;font-size:13px;font-weight:600;color:var(--muted);background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:12px 16px;min-height:44px;cursor:pointer;transition:.15s}
.pl-pdf-btn:hover{border-color:var(--accent);color:var(--accent)}
.pl-pdf-btn .ico{flex:none}
.pl-print-head{display:none}

/* el local */
.pl-local-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(28px,5vw,64px);align-items:center}
.pl-desc{color:var(--muted);font-size:16.5px;line-height:1.75;margin-top:16px;max-width:56ch}
.pl-svcs{display:flex;gap:8px;flex-wrap:wrap;margin-top:22px}
.pl-svc-chip{display:inline-flex;align-items:center;gap:7px;background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:8px 14px;font-size:13.5px;font-weight:600;color:var(--ink);white-space:nowrap}
.pl-local-media{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.pl-local-media img{width:100%;height:100%;min-height:170px;max-height:260px;object-fit:cover;border-radius:12px;display:block}
.pl-local-media img:first-child{grid-column:1/-1;max-height:300px}
@media(max-width:900px){.pl-local-grid{grid-template-columns:1fr}}

/* galería */
.pl-gal{background:var(--surface);border-block:1px solid var(--line)}
.pl-gal-grid{display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:190px;gap:12px;grid-auto-flow:dense}
.pl-gal-grid img{width:100%;height:100%;object-fit:cover;border-radius:10px;display:block}
.pl-gal-grid .g-wide{grid-column:span 2}
@media(max-width:900px){.pl-gal-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:640px){.pl-gal-grid{grid-template-columns:repeat(2,1fr);grid-auto-rows:140px}}

/* reservas (sección oscura) */
.pl-res{background:var(--pl-dark);color:#f2f1ea}
.pl-res .pl-kicker{color:#e8b18c;background:rgba(232,177,140,.16)}
.pl-res h2{color:#fff}
.pl-res-grid{display:grid;grid-template-columns:.85fr 1.15fr;gap:clamp(28px,5vw,64px);align-items:start}
.pl-res-info{display:flex;flex-direction:column;margin-top:26px}
.pl-res-info .ri{padding:18px 0;border-bottom:1px solid rgba(255,255,255,.14);display:flex;flex-direction:column;gap:5px}
.pl-res-info .lbl{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:rgba(255,255,255,.55);font-weight:700}
.pl-res-info .val{font-size:17px;color:#fff;text-decoration:none;font-family:var(--pl-display)}
.pl-res-info a.val:hover{text-decoration:underline}
.pl-res-card{border-radius:14px!important;padding:clamp(22px,3vw,36px)!important;max-height:none!important;box-shadow:0 24px 60px -30px rgba(0,0,0,.5);overflow:visible!important;width:auto;color:var(--ink)}
.pl-res-card.center{text-align:center}
.pl-res-card.center h3{margin-bottom:18px}
.pl-res-or{color:var(--muted);font-size:13px;text-align:center;margin:14px 0 10px}
@media(max-width:900px){.pl-res-grid{grid-template-columns:1fr}}

/* contacto */
.pl-contact-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(28px,5vw,64px);align-items:start;margin-top:8px}
.pl-contact-lines{display:flex;flex-direction:column;gap:0;font-size:15.5px}
.pl-contact-lines a{display:inline-flex;align-items:flex-start;gap:10px;color:var(--ink);text-decoration:none;padding-block:10px;min-height:44px}
.pl-contact-lines a:hover{color:var(--accent)}
.pl-contact-lines .ico{color:var(--accent);flex:none;margin-top:2px}
.pl-contact-lines .pl-maps{font-weight:700;color:var(--accent-ink)}
.pl-contact-meta{display:flex;flex-direction:column;gap:10px;margin-top:22px;padding-top:18px;border-top:1px solid var(--line);font-size:14.5px}
.pl-contact-meta .lbl{display:block;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-weight:700;margin-bottom:2px}
.pl-socrow{display:flex;gap:10px;margin-top:22px}
.pl-soc{width:44px;height:44px;border:1px solid var(--line);border-radius:10px;display:grid;place-items:center;color:var(--ink);background:var(--surface);cursor:pointer;transition:all .16s ease;text-decoration:none}
.pl-soc:hover{border-color:var(--ink)}
.pl-soc svg{display:block}
.pl-hours-lbl{display:block;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-weight:700;margin-bottom:8px}
.pl-hours{width:100%;border-collapse:collapse;max-width:420px}
.pl-hours td{padding:10px 0;border-bottom:1px solid var(--line);font-size:14.5px;text-transform:capitalize}
.pl-hours td:last-child{text-align:right;font-variant-numeric:tabular-nums;color:var(--muted);text-transform:none}
.pl-hours tr.today td{font-weight:700;color:var(--ink)}
.pl-hours tr.today td:last-child{color:var(--accent)}
@media(max-width:820px){.pl-contact-grid{grid-template-columns:1fr}}

/* faq + pie */
.pl-faq h2{font-size:clamp(24px,3.4vw,34px);margin-bottom:18px}
.pl-foot{background:var(--pl-dark);color:rgba(255,255,255,.72);padding:44px 0 30px;text-align:center;margin-top:0}
.pl-foot-brand{font-size:24px;color:#fff}
.pl-foot-sub{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:rgba(255,255,255,.58);margin-top:6px;font-weight:600}
.pl-foot-legal{margin-top:22px;padding-top:18px;border-top:1px solid rgba(255,255,255,.12);font-size:12.5px;color:rgba(255,255,255,.5)}
.pl-foot-legal a{color:rgba(255,255,255,.65);margin:0 7px;text-decoration:none}
.pl-foot-legal a:hover{color:#fff}
.pl-mode .pl-faq{padding-block:clamp(40px,6vw,72px)}
body.pl-mode.has-stickybar .pl-foot{padding-bottom:96px}

/* ---------- Impresión / Descargar PDF: solo la carta activa ---------- */
@media print{
  .pl-head,.pl-hero,.pl-local,.pl-gal,.pl-res,.pl-contact,.pl-faq,.pl-foot,.pub-stickybar,.pl-drawer,#mm-cookie,.pl-carta-top,.pl-carta .pub-tabs,.pub-lb,.pub-resv,.pl-loading{display:none!important}
  html,body,.pl-carta,.pub-shell{background:#fff!important}
  /* el PDF siempre en tinta oscura sobre blanco, aunque el tema de la web sea oscuro */
  body.pl-t-bistro,body.pl-t-elegante{--bg:#fff;--surface:#fff;--ink:#241f1b;--muted:#8a8178;--line:#e9e2d8}
  body.pl-t-bistro{--accent:var(--accent-base,#b3541e);--accent-soft:var(--accent-soft-base,rgba(179,84,30,.12))}
  body.pl-t-bistro .menu-banner .mb-kind{color:#fff}
  body.pl-mode .pl-mode section,.pl-carta{padding:0!important;border:0!important}
  .pl-carta .pl-wrap{max-width:none;padding:0}
  .pl-print-head{display:flex!important;flex-direction:column;align-items:center;text-align:center;gap:6px;margin:0 0 20px}
  .pl-print-head img{width:62px;height:62px;object-fit:contain;margin:0 auto}
  .pl-print-head .pl-serif{font-size:26px;line-height:1.1}
  .pl-print-head .pl-print-sub{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:#777}
  .carta-block{margin:0!important}
  .menu,.menu.classic{max-width:none}
  .section,.c-section{break-inside:avoid}
  .dish,.c-dish{break-inside:avoid}
  *{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}
  @page{margin:14mm}
}


/* ── Accesibilidad (auditoría 25/07/2026) ────────────────────────────────
   Foco visible para quien navega con teclado y respeto por «reducir
   movimiento» (activado por quien se marea con las animaciones). */
:where(a,button,input,select,textarea,summary,[tabindex]):focus-visible{
  outline:3px solid var(--accent-ink);
  outline-offset:2px;
  border-radius:6px;
}
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{
    animation-duration:.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.01ms !important;
    scroll-behavior:auto !important;
  }
}

/* Objetivos táctiles (WCAG 2.5.5 / 2.5.8) --------------------------------- */
/* Los enlaces sueltos de la web del restaurante llegan a 44 px de alto. */
.pl-hero-meta a.val{display:inline-block;padding-block:9px;min-height:44px}
.pl-res-info a.val{display:inline-block;padding-block:9px;min-height:44px}
/* Los enlaces dentro de una frase no pueden crecer a 44 px sin solaparse con
   la línea de al lado: se les da holgura vertical hasta 34 px, muy por encima
   del mínimo de 24 px que pide el criterio AA. */
.pl-foot-legal a,.pl-foot p a,#mm-cookie .mm-ck-txt a{padding-block:8px}

/* ── Móvil: objetivos táctiles de 44px ──────────────────────────────────────
   Medido a 375px sobre el panel real: 105 controles por debajo de 44px, el
   mínimo que recomienda Apple. Los peores eran los que más se usan: el
   segmentado Del día/Semanal (36), las pestañas Menú/Carta (37), los botones
   pequeños como Salir o Añadir plato (33) y el icono de borrar fila (34).
   Se toca solo el alto y por debajo de 560px, que es donde ya aparece la barra
   inferior de navegación: en escritorio no cambia nada.
   NO se tocan los círculos de alérgenos (.algtog, 26px): son catorce por plato
   y subirlos a 44 triplicaría el alto de cada fila del editor. Pendiente para
   el rediseño del editor a hoja completa. */
@media(max-width:560px){
  .btn.sm{min-height:44px}
  .tab{display:inline-flex;align-items:center;min-height:44px}
  .seg button{min-height:44px}
  .icon-btn{width:44px;height:44px}
  .lang-chip.lv.big{min-height:44px}
}

@media(max-width:560px){
  /* Fila de acceso del restaurante: el .field del botón lleva flex:.5 en un
     atributo style, y como .btn no parte, "Guardar acceso" se salía 60px del
     modal. En móvil los campos de una fila se apilan y el botón ocupa el ancho. */
  #modal .row>.field{flex:1 1 100%}
  #modal .row>.field>.btn{width:100%;justify-content:center}
  /* Un solo ritmo de botones en la pantalla del restaurante */
  #app .carta-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  #app .carta-actions>.btn{width:100%;white-space:normal;line-height:1.25;text-align:center;min-height:48px}
}
