/* Chefbyte — paleta de marca sacada del logo: crema #FEFAEB, azul marino #032C4C, naranja #FCA842, azul #135989.
   Contrastes WCAG AA comprobados con cálculo (ver DISENO.md). Sin CSS libre del usuario. */
:root {
  --c-bg:#FEFAEB; --c-surface:#FFFFFF; --c-surface-2:#F7EFD8; --c-line:#E6DCC0; --c-line-strong:#6B7F90;
  --c-ink:#032C4C; --c-ink-2:#26475F; --c-muted:#4F6577;
  /* Acento = azul de marca para enlaces y detalles; el naranja se reserva para la acción principal (botón). */
  --c-accent:#135989; --c-accent-hover:#0B4670; --c-on-accent:#FFFFFF; --c-accent-soft:#DCEBF5; --c-on-accent-soft:#0B4670;
  --c-cta:#FCA842; --c-cta-hover:#F59A2E; --c-on-cta:#032C4C;
  --c-success:#1F6B3A; --c-danger:#A12A22; --c-warn-bg:#FFEFC2; --c-warn-ink:#6B4500; --c-focus:#1F4E8C;
  --c-ad-bg:#F1E8CC; --c-ad-ink:#4F6577;
  --f-serif:"Fraunces","Iowan Old Style",Georgia,serif;
  --f-sans:"Inter",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --fs-xs:.8125rem; --fs-sm:.9375rem; --fs-base:1rem; --fs-md:1.125rem; --fs-lg:1.375rem; --fs-xl:1.75rem;
  --fs-2xl:clamp(2rem,1.4rem + 2.6vw,3rem); --fs-3xl:clamp(2.5rem,1.5rem + 4.5vw,4.25rem);
  --sp-1:.25rem; --sp-2:.5rem; --sp-3:.75rem; --sp-4:1rem; --sp-5:1.5rem; --sp-6:2rem; --sp-7:3rem; --sp-8:4.5rem;
  --gutter:1rem; --container:72rem; --container-menu:44rem;
  --r-sm:.25rem; --r-md:.5rem; --r-lg:.875rem; --r-pill:999px; --hit:2.75rem;
}
@media (min-width:768px){:root{--gutter:1.5rem}}
@media (min-width:1280px){:root{--gutter:2rem}}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important;scroll-behavior:auto!important}}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--c-bg);color:var(--c-ink);font:400 var(--fs-base)/1.6 var(--f-sans);overflow-wrap:anywhere}
/* Marca Chefbyte: titulares en sans redondeada y firme, como el logotipo. Las cartas de restaurante conservan su serif editorial. */
h1,h2,h3{font-family:var(--f-sans);font-weight:800;line-height:1.12;letter-spacing:-.02em;margin:0 0 var(--sp-3)}
.menu h1,.menu h2,.menu h3{font-family:var(--f-serif);font-weight:600;letter-spacing:-.015em}
h1{font-size:var(--fs-2xl)} h2{font-size:var(--fs-xl)} h3{font-size:var(--fs-lg)}
p{margin:0 0 var(--sp-4);max-width:62ch}
a{color:var(--c-accent)} a:hover{color:var(--c-accent-hover)}
img{max-width:100%;height:auto}
:focus-visible{outline:3px solid var(--c-focus);outline-offset:2px;box-shadow:0 0 0 2px var(--c-bg)}

.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
fieldset{border:0;padding:0;margin:0 0 var(--sp-3);border-bottom:1px solid var(--c-line)}
.skip{position:absolute;left:var(--sp-2);top:-4rem;background:var(--c-ink);color:var(--c-bg);padding:var(--sp-2) var(--sp-4);border-radius:var(--r-md);z-index:10}
.skip:focus{top:var(--sp-2)}
.wrap{max-width:var(--container);margin:0 auto;padding:0 var(--gutter)}
.wrap-narrow{max-width:34rem;margin:0 auto;padding:0 var(--gutter)}
main{padding:var(--sp-6) 0 var(--sp-8)}

.op-banner{display:flex;flex-wrap:wrap;gap:var(--sp-2) var(--sp-4);align-items:center;justify-content:space-between;background:var(--c-cta);color:var(--c-ink);padding:var(--sp-2) var(--gutter);font-size:var(--fs-sm);border-bottom:2px solid var(--c-ink)}
.op-banner .btn-secondary{color:var(--c-ink);border-color:var(--c-ink)} .op-banner .btn-secondary:hover{background:var(--c-ink);color:var(--c-bg)}
.op-banner form{margin:0}
.timeline{list-style:none;margin:0;padding:0;border-left:2px solid var(--c-line-strong)}
.timeline li{padding:0 0 var(--sp-3) var(--sp-4);position:relative}
.timeline li::before{content:"";position:absolute;left:-6px;top:.5rem;width:10px;height:10px;border-radius:50%;background:var(--c-accent)}
.timeline time{display:block;font-size:var(--fs-xs);color:var(--c-muted)}
.amounts{display:grid;grid-template-columns:auto auto;gap:var(--sp-1) var(--sp-4);max-width:22rem}
.amounts dd{margin:0;text-align:right;font-variant-numeric:tabular-nums} .amounts dt{color:var(--c-ink-2)}
.amounts .total{font-weight:700;border-top:1px solid var(--c-line-strong);padding-top:var(--sp-1)}
/* Cabecera de marca: franja azul marino con el logo y la navegación por secciones */
.site-header{background:var(--c-ink);color:var(--c-bg);border-bottom:4px solid var(--c-cta)}
.site-header .wrap{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2) var(--sp-5);min-height:4rem;padding-top:var(--sp-2);padding-bottom:var(--sp-2)}
.brand{display:inline-flex;align-items:center;gap:var(--sp-3);color:var(--c-bg);text-decoration:none;font:700 var(--fs-lg)/1 var(--f-sans);letter-spacing:-.01em}
.brand:hover{color:var(--c-cta)}
.brand img{width:2.75rem;height:auto;border-radius:var(--r-md);background:var(--c-bg);padding:.15rem;display:block}
.brand .brand-sub{font-weight:500;color:var(--c-cta)}
.nav{display:flex;flex-wrap:wrap;gap:var(--sp-1) var(--sp-4);margin-left:auto;align-items:center}
.nav a,.nav button{min-height:var(--hit);display:inline-flex;align-items:center}
.nav a{color:var(--c-bg);text-decoration:none} .nav a:hover{color:var(--c-cta);text-decoration:underline}
.nav a[aria-current=page]{color:var(--c-cta);text-decoration:underline;text-underline-offset:.35em}
.nav form{margin:0}
.nav .btn-link{color:var(--c-bg)} .nav .btn-link:hover{color:var(--c-cta)}
.site-footer{background:var(--c-ink);color:var(--c-bg);padding:var(--sp-5) 0;font-size:var(--fs-sm)}
.site-footer a{color:var(--c-cta)} .site-footer a:hover{color:var(--c-bg)}
.site-footer p{max-width:none}

/* Botón principal: naranja de marca con texto azul marino (7,4:1). El resto, discretos. */
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:3rem;padding:0 var(--sp-5);border-radius:var(--r-md);
  border:2px solid transparent;font:700 var(--fs-base)/1 var(--f-sans);text-decoration:none;cursor:pointer;background:var(--c-cta);color:var(--c-on-cta);
  transition:background var(--t-fast,120ms)}
.btn:hover{background:var(--c-cta-hover);color:var(--c-on-cta)}
.btn-secondary{background:transparent;color:var(--c-ink);border-color:var(--c-ink)}
.btn-secondary:hover{background:var(--c-ink);color:var(--c-bg)}
.btn-link{background:none;border:0;color:var(--c-accent);padding:0 var(--sp-2);min-height:var(--hit);font:inherit;cursor:pointer;text-decoration:underline}
.btn-danger{background:transparent;color:var(--c-danger);border-color:var(--c-danger)}
.btn-danger:hover{background:var(--c-surface-2);color:var(--c-danger)}
.btn-row{display:flex;flex-wrap:wrap;gap:var(--sp-2)}

.field{margin-bottom:var(--sp-4)}
.field label{display:block;font-weight:600;margin-bottom:var(--sp-1)}
.field .hint{display:block;color:var(--c-muted);font-size:var(--fs-sm);margin-bottom:var(--sp-1)}
input[type=text],input[type=email],input[type=password],input[type=tel],input[type=search],textarea,select{
  width:100%;min-height:var(--hit);padding:var(--sp-2) var(--sp-3);border:1px solid var(--c-line-strong);border-radius:var(--r-md);
  background:var(--c-surface);color:var(--c-ink);font:inherit}
textarea{min-height:6rem}
.check{display:flex;gap:var(--sp-2);align-items:flex-start;min-height:var(--hit)}
.check input{width:1.25rem;height:1.25rem;margin-top:.2rem;accent-color:var(--c-accent)}
.field-error,.validation-summary-errors{color:var(--c-danger);font-size:var(--fs-sm);margin-top:var(--sp-1)}
/* Sin errores, el resumen de validación no debe pintar ningún recuadro (antes salía un cuadro grande vacío). */
.validation-summary-valid,.alert:empty{display:none}
.alert ul{margin:0;padding-left:1.1rem}
.alert{padding:var(--sp-3) var(--sp-4);border-radius:var(--r-md);margin-bottom:var(--sp-4);border:1px solid var(--c-line-strong);background:var(--c-surface)}
.alert-ok{border-color:var(--c-success)} .alert-error{border-color:var(--c-danger);border-width:2px} .alert-warn{background:var(--c-warn-bg);color:var(--c-warn-ink)}

.card{background:var(--c-surface);border:1px solid var(--c-line);border-radius:var(--r-md);padding:var(--sp-5);margin-bottom:var(--sp-4)}
.eyebrow{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.08em;font-weight:600;color:var(--c-muted)}
.badge{display:inline-block;padding:0 var(--sp-2);border-radius:var(--r-sm);background:var(--c-accent-soft);color:var(--c-on-accent-soft);font-size:var(--fs-xs);font-weight:600}
.badge-muted{background:var(--c-surface-2);color:var(--c-ink-2)}
.grid-3{display:grid;gap:var(--sp-4);grid-template-columns:repeat(auto-fit,minmax(min(100%,16rem),1fr))}
.table-wrap{overflow-x:auto}
table{border-collapse:collapse;width:100%} th,td{text-align:left;padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--c-line);vertical-align:top}
.price{font:600 var(--fs-md)/1 var(--f-sans);font-variant-numeric:tabular-nums lining-nums;white-space:nowrap}
.inline-form{display:inline}
.dish-edit{display:grid;gap:var(--sp-3);grid-template-columns:repeat(auto-fit,minmax(min(100%,12rem),1fr));align-items:end}

/* Carta pública */
.menu{max-width:var(--container-menu);margin:0 auto;padding:0 var(--gutter) var(--sp-8)}
.menu-head{padding:var(--sp-6) 0 var(--sp-4);border-bottom:1px solid var(--c-line)}
.menu-head h1{font-size:var(--fs-xl)} @media(min-width:768px){.menu-head h1{font-size:var(--fs-2xl)}}
.menu-meta{color:var(--c-ink-2);font-size:var(--fs-sm)}
.cat-nav{position:sticky;top:0;background:var(--c-bg);padding:var(--sp-2) 0;display:flex;gap:var(--sp-2);overflow-x:auto;border-bottom:1px solid var(--c-line);z-index:2}
.cat-nav a{white-space:nowrap;min-height:var(--hit);display:inline-flex;align-items:center;padding:0 var(--sp-4);border:1px solid var(--c-line-strong);border-radius:var(--r-pill);color:var(--c-ink);text-decoration:none;font-size:var(--fs-sm)}
.cat-nav a:hover{background:var(--c-surface-2)}
.cat{padding-top:var(--sp-5);scroll-margin-top:4rem}
.cat h2{font-size:var(--fs-lg);border-bottom:1px solid var(--c-line);padding-bottom:var(--sp-2)}
.dish{padding:var(--sp-3) 0;border-bottom:1px dotted var(--c-line-strong)}
.dish-photo{display:block;width:100%;max-width:20rem;aspect-ratio:4/3;object-fit:cover;border-radius:var(--r-md);margin-bottom:var(--sp-2);background:var(--c-surface-2)}
.dish-top{display:flex;justify-content:space-between;gap:var(--sp-4);align-items:baseline}
.dish-name{font:600 var(--fs-md)/1.3 var(--f-serif);margin:0}
.dish-desc{color:var(--c-ink-2);font-size:var(--fs-sm);margin:var(--sp-1) 0 0}
.variants{list-style:none;margin:var(--sp-1) 0 0;padding:0}
.variants li{display:flex;justify-content:space-between;gap:var(--sp-4)}
.dish-allergens{font-size:var(--fs-xs);color:var(--c-muted);margin:var(--sp-1) 0 0}
.soldout{opacity:.75} .soldout .dish-name::after{content:" · Agotado";font:600 var(--fs-xs) var(--f-sans);color:var(--c-danger)}
.disclaimer{font-size:var(--fs-xs);color:var(--c-muted);margin-top:var(--sp-6)}
.ad-slot{background:var(--c-ad-bg);color:var(--c-ad-ink);padding:var(--sp-3);margin:var(--sp-6) auto 0;max-width:var(--container-menu);font-size:var(--fs-xs)}
.ad-label{margin:0 0 var(--sp-1);font-weight:600;text-transform:uppercase;letter-spacing:.08em}
.ad-fixture{border:1px dashed var(--c-ad-ink);padding:var(--sp-3)}

/* Acento del local (se sobrescribe con /theme/*.css, validado en servidor) */
.menu a,.menu .price-accent{color:var(--c-accent)}
.menu .cat-nav a{color:var(--c-ink)}
.lang-switch{margin:var(--sp-2) 0 0;font-size:var(--fs-sm)}
.menu-search{margin-top:var(--sp-3)} .menu-search label{display:block;font-size:var(--fs-sm);font-weight:600}
.menu [hidden]{display:none!important}
.soldout-tag{font:600 var(--fs-xs) var(--f-sans);color:var(--c-danger)}
.soldout .dish-name::after{content:none}

pre.plain{white-space:pre-wrap;font:inherit;margin:0 0 var(--sp-3)}
/* Menú del día */
.daily{margin:var(--sp-5) 0 0;padding:var(--sp-4);background:var(--c-surface);border:2px solid var(--c-accent);border-radius:var(--r-md)}
.daily h2{margin-bottom:var(--sp-2)}
.daily-sec h3{font:600 var(--fs-sm) var(--f-sans);text-transform:uppercase;letter-spacing:.08em;color:var(--c-muted);margin:var(--sp-3) 0 var(--sp-1)}
.daily-sec ul{margin:0;padding-left:1.1rem}
.daily-dates{font-size:var(--fs-sm);color:var(--c-muted);margin:var(--sp-1) 0 0}

/* Plantillas: clásica (base), visual y compacta */
.menu--visual .dish{border:1px solid var(--c-line);border-radius:var(--r-md);padding:var(--sp-3);margin-top:var(--sp-3);background:var(--c-surface)}
.menu--visual .dish-photo{max-width:none;aspect-ratio:16/10;margin:calc(var(--sp-3) * -1) calc(var(--sp-3) * -1) var(--sp-2);width:calc(100% + var(--sp-3) * 2);border-radius:var(--r-md) var(--r-md) 0 0}
.menu--visual .dish.featured{border-color:var(--c-accent)}
.menu--compact .dish{padding:var(--sp-2) 0;border-bottom:1px solid var(--c-line)}
.menu--compact .dish-name{font:600 var(--fs-base)/1.3 var(--f-sans)}
.menu--compact .dish-desc{font-size:var(--fs-xs);margin-top:0}
.menu--compact details.cat > summary{cursor:pointer;min-height:var(--hit);display:flex;align-items:center;list-style:none}
.menu--compact details.cat > summary h2{margin:0;border:0;padding:0}
.menu--compact details.cat > summary::after{content:"▾";margin-left:auto;color:var(--c-muted)}
.menu--compact details.cat:not([open]) > summary::after{content:"▸"}

/* QR */
.qr-svg{background:#fff;padding:var(--sp-3);display:inline-block;line-height:0;border:1px solid var(--c-line)}
.qr-svg svg{width:min(100%,16rem);height:auto}
.qr-svg-big svg{width:min(100%,22rem)}
.qr-sheet{text-align:center;padding:var(--sp-6) var(--gutter)}
.qr-sheet h1{font-size:var(--fs-2xl)}
.qr-sheet-lead{font:600 var(--fs-lg) var(--f-serif);margin:0 auto var(--sp-4)}
.qr-sheet-foot{margin:var(--sp-4) auto 0;color:var(--c-ink-2)}
@media print{
  .no-print,.site-header,.site-footer,.skip{display:none!important}
  body{background:#fff} main{padding:0}
}

/* Comercial */
h1,h2,h3{color:var(--c-ink)}
.hero{padding-top:var(--sp-5)}
.hero h1{font-size:var(--fs-3xl);max-width:16ch}
.hero p.lead{font-size:var(--fs-md);color:var(--c-ink-2)}
.hero-agency{display:grid;gap:var(--sp-5);align-items:center}
.hero-agency img{width:min(100%,14rem);height:auto;border-radius:var(--r-lg);justify-self:center}
@media(min-width:768px){.hero-agency{grid-template-columns:1fr auto}.hero-agency img{justify-self:end}}
.section{padding-top:var(--sp-6);padding-bottom:var(--sp-6)}
.section-line{padding-top:var(--sp-7)}
.section-line > h2::before{content:"";display:block;width:3rem;height:.3rem;background:var(--c-cta);border-radius:2px;margin-bottom:var(--sp-3)}
.hero{padding-bottom:var(--sp-4)}
.section h2{font-size:var(--fs-xl)}
.sections-grid{display:grid;gap:var(--sp-4);grid-template-columns:repeat(auto-fit,minmax(min(100%,18rem),1fr))}
.section-card{background:var(--c-surface);border:1px solid var(--c-line);border-top:6px solid var(--c-cta);border-radius:var(--r-md);padding:var(--sp-5);display:flex;flex-direction:column;gap:var(--sp-3)}
.section-card h3{margin:0}
.section-card p{margin:0}
.section-card .btn{align-self:flex-start;margin-top:auto}
.section-soon{border-top-color:var(--c-line-strong);background:var(--c-surface-2)}
.contact-list{list-style:none;padding:0;margin:0;display:grid;gap:var(--sp-2)}
.contact-list a{font-weight:600}
.plan h3{margin-bottom:var(--sp-1)} .plan .big{font:700 var(--fs-xl)/1 var(--f-sans);margin:var(--sp-2) 0;color:var(--c-ink)}
.plan ul{padding-left:1.1rem;margin:0 0 var(--sp-4)}
.plan{border-top:6px solid var(--c-cta);display:flex;flex-direction:column}
.plan .big .eyebrow{display:block;margin-top:var(--sp-1)}
.plan .btn{margin-top:auto;align-self:flex-start}
.plan p.eyebrow{margin-bottom:var(--sp-4)}
.dev-mail{border-left:6px solid var(--c-cta)}

/* Tablas del panel: en pantallas estrechas cada fila pasa a ser una tarjeta apilada (sin texto en vertical). */
@media (max-width:40rem){
  .table-wrap thead{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
  .table-wrap table,.table-wrap tbody,.table-wrap tr,.table-wrap td{display:block;width:100%}
  .table-wrap caption{display:block;width:100%;text-align:left}
  .table-wrap tr{border-bottom:2px solid var(--c-line);padding:var(--sp-2) 0}
  .table-wrap td{border:0;padding:var(--sp-1) 0}
  .table-wrap td[data-label]::before{content:attr(data-label);display:block;font-size:.8rem;letter-spacing:.04em;text-transform:uppercase;color:var(--c-ink-soft,#4a5d6e)}
  .table-wrap .inline-form{display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:center;margin-bottom:var(--sp-2)}
}

/* Fila de alérgeno del panel: etiqueta, tipo y detalle, apilados en móvil. */
.allergen-row{display:grid;gap:var(--sp-2);grid-template-columns:1fr;padding:var(--sp-2) 0;border-bottom:1px solid var(--c-line)}
.allergen-row select,.allergen-row input[type=text]{width:100%}
@media (min-width:40rem){.allergen-row{grid-template-columns:2fr 1fr 1fr;align-items:center}}

/* Respiro bajo la cabecera y notas en frase normal (las mayúsculas espaciadas solo para etiquetas cortas). */
main.wrap{padding-top:var(--sp-5)}
.note{font-size:var(--fs-sm);line-height:1.5;color:var(--c-muted);max-width:62ch}
.note .badge{margin-right:var(--sp-2)}

/* Pestañas del panel del local: visibles sobre fondo crema, con la página actual marcada. */
.panel-nav{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin:0 0 var(--sp-5);padding:0;list-style:none}
.panel-nav a{display:inline-flex;align-items:center;min-height:var(--hit);padding:0 var(--sp-4);border:1px solid var(--c-line-strong);border-radius:var(--r-pill);background:var(--c-surface);color:var(--c-ink);text-decoration:none;font-weight:600;font-size:var(--fs-sm)}
.panel-nav a:hover{background:var(--c-accent-soft);color:var(--c-on-accent-soft)}
.panel-nav a[aria-current=page]{background:var(--c-ink);color:var(--c-bg);border-color:var(--c-ink)}

/* El contenedor del panel va dentro de <main class="wrap">: sin doble margen lateral. */
main.wrap > .wrap,main.wrap > .wrap-narrow{padding-left:0;padding-right:0}
