.admin-body{background:var(--c-tinta);color:var(--c-lino);min-height:100vh}.admin-login{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at top,var(--c-granada-alt) 0,transparent 48%)}.admin-card{background:var(--c-panel);border:1px solid var(--c-linea);border-radius:var(--r-lg);padding:24px;box-shadow:0 18px 70px color-mix(in srgb, var(--c-tinta) 53%, transparent)}.login-card{width:min(440px,100%);display:grid;gap:18px}.brand-wordmark{display:inline-flex;flex-direction:column;color:var(--c-salvia);text-decoration:none;letter-spacing:.18em;font-weight:var(--p-fuerte)}.brand-wordmark span{font-family:serif;font-size:var(--f-xl)}.brand-wordmark small{font-size:var(--f-xs);color:var(--c-granada)}.admin-card label,.admin-dialog label{display:grid;gap:7px;color:var(--c-lino-hondo);font-size:var(--f-sm)}.admin-card input,.admin-card select,.admin-card textarea,.admin-dialog input,.admin-dialog select,.admin-dialog textarea{width:100%;background:var(--c-tinta);color:var(--c-papel);border:1px solid var(--c-granada-alt);border-radius:var(--r-md);padding:12px;font:inherit}.form-error{min-height:1.4em;color:var(--c-granada)}.admin-shell{display:grid;grid-template-columns:250px 1fr;min-height:100vh}.admin-sidebar{position:sticky;top:0;height:100vh;padding:28px 20px;border-right:1px solid var(--c-linea);background:var(--c-panel);display:flex;flex-direction:column;gap:36px}.admin-sidebar nav{display:grid;gap:8px}.admin-sidebar nav button,.sidebar-logout{border:0;background:none;color:var(--c-lino-hondo);text-align:left;padding:13px 15px;border-radius:var(--r-md);font:inherit;cursor:pointer}.admin-sidebar nav button:hover,.admin-sidebar nav button.active{background:var(--c-granada-alt);color:var(--c-salvia)}.sidebar-logout{margin-top:auto}.admin-main{padding:34px clamp(20px,4vw,54px);min-width:0}.admin-top,.section-row{display:flex;justify-content:space-between;gap:18px;align-items:center;margin-bottom:28px}.admin-top h1{margin:2px 0 0}.admin-view>p,.section-row p{color:var(--c-tinta-3)}.stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:22px}.stat{background:linear-gradient(145deg,var(--c-panel),var(--c-panel-alto));border:1px solid var(--c-linea);border-radius:var(--r-md);padding:22px}.stat strong{display:block;color:var(--c-salvia);font-size:var(--f-2xl);margin-top:8px}.table-wrap{overflow:auto;padding:0}table{border-collapse:collapse;width:100%;min-width:760px}th,td{text-align:left;padding:14px 16px;border-bottom:1px solid var(--c-linea)}th{color:var(--c-granada);font-size:var(--f-xs);text-transform:uppercase;letter-spacing:.08em}td img{width:46px;height:46px;object-fit:cover;border-radius:var(--r-md);background:var(--c-panel-alto)}.table-btn{color:var(--c-salvia);background:var(--c-granada-alt);border:0;border-radius:var(--r-sm);padding:8px 10px;cursor:pointer}.status-select{background:var(--c-tinta);color:var(--c-papel);border:1px solid var(--c-granada-alt);border-radius:var(--r-sm);padding:8px}.admin-notice{position:fixed;right:24px;top:24px;z-index:var(--z-aviso);background:var(--c-salvia);color:var(--c-tinta);padding:13px 18px;border-radius:var(--r-md);box-shadow:0 10px 40px color-mix(in srgb, var(--c-tinta) 53%, transparent)}.form-grid{display:grid;gap:18px;max-width:820px}.form-grid.two{grid-template-columns:1fr 1fr}.form-grid .wide{grid-column:1/-1}.check{display:flex!important;grid-auto-flow:column;justify-content:start;align-items:center}.check input{width:auto}.admin-dialog{width:min(820px,calc(100% - 28px));max-height:90vh;overflow:auto;background:var(--c-panel);color:var(--c-papel);border:1px solid var(--c-granada-alt);border-radius:var(--r-lg);padding:25px}.admin-dialog::backdrop{background:color-mix(in srgb, var(--c-tinta) 81%, transparent);backdrop-filter:blur(4px)}.dialog-head,.dialog-actions{display:flex;align-items:center;justify-content:space-between;gap:16px}.dialog-actions{margin-top:24px;justify-content:flex-end}.icon-btn{background:none;border:0;color:var(--c-papel);font-size:var(--f-2xl);cursor:pointer}.upload-row{display:grid;gap:8px}.upload-row input[type=file]{font-size:var(--f-xs)}@media(max-width:760px){.admin-shell{grid-template-columns:1fr}.admin-sidebar{position:static;height:auto;display:block}.admin-sidebar nav{grid-template-columns:repeat(4,1fr);margin-top:20px;overflow:auto}.sidebar-logout{margin-top:12px}.admin-main{padding:24px 14px}.stat-grid{grid-template-columns:1fr}.form-grid.two{grid-template-columns:1fr}.form-grid .wide{grid-column:auto}.admin-top{align-items:flex-start}.admin-top .btn{padding:10px}.section-row{align-items:flex-start}}

/* ---------------------------------------------------------------------------
   LOS BOTONES DEL PANEL, QUE NUNCA TUVIERON ESTILO
   Esto NO es dano del rediseno: viene de antes. El HTML del panel usa .btn y
   la tienda usa .button, y .btn nunca se definio en ninguna hoja — solo un
   ".btn{padding:10px}" dentro de una consulta de medios. Resultado: "Entrar al
   panel", "Nuevo producto", "Guardar cambios", "Guardar producto", "Cancelar"
   y "Ver tienda" se servian como botones grises del sistema, texto negro y
   esquina viva, en la unica pantalla desde la que se gestionan los pedidos.
   Mismas fichas que el boton de la tienda; granada actua.
   --------------------------------------------------------------------------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--e-2);min-height:var(--toque);padding:var(--e-3) var(--e-5);border:1px solid transparent;border-radius:var(--r-redondo);font:inherit;font-weight:var(--p-medio);line-height:var(--i-medio);text-decoration:none;cursor:pointer;transition:background var(--m-rapido) var(--m-curva),color var(--m-rapido) var(--m-curva),border-color var(--m-rapido) var(--m-curva)}
.btn:focus-visible{outline:2px solid var(--c-salvia);outline-offset:2px}
.btn-primary{background:var(--c-granada-alt);color:var(--c-salvia)}
.btn-primary:hover{background:var(--c-granada-alt);filter:brightness(1.25)}
.btn-ghost{background:transparent;color:var(--c-tinta-2);border-color:var(--c-linea-fuerte)}
.btn-ghost:hover{color:var(--c-lino);border-color:var(--c-salvia)}
.table-btn{min-height:var(--toque);padding:var(--e-2) var(--e-3)}

/* ---------------------------------------------------------------------------
   EL PANEL SE PINTABA DEBAJO DEL LOGIN (20-sep-2026, reportado por William)
   El JS oculta y muestra las dos mitades con el atributo `hidden`, que el
   navegador aplica con `display:none` desde su hoja propia — la de menor peso
   que existe. `.admin-login` y `.admin-shell` declaran `display:grid` con una
   clase, y una clase SIEMPRE gana a la hoja del navegador. Resultado: al
   entrar, el panel aparecia pegado DEBAJO del formulario de acceso, con el
   login todavia en pantalla. No se veia mientras el CSS daba 404 (entrando por
   /admin/ con barra), porque sin CSS el `hidden` del navegador si mandaba.
   --------------------------------------------------------------------------- */
[hidden]{display:none!important}

/* Cuatro indicadores en una rejilla de tres: el cuarto caia solo en una fila
   con dos huecos. Se acomodan a lo que quepa. */
.stat-grid{grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}

/* ---------------------------------------------------------------------------
   LOS TITULOS ERAN INVISIBLES
   tokens.css pinta `h1,h2,h3` con `color:var(--c-tinta)`. En la tienda publica
   `--c-tinta` es la TINTA (texto oscuro), pero el bloque claro del panel le da
   la vuelta a la ficha y la usa como LIENZO (#F8F5F2). Asi que cada titulo del
   admin salia blanco sobre blanco: "Administra tu tienda" y "Datos visibles y
   logistica" solo se adivinaban. Aqui mandan porque `.admin-body h1` pesa mas
   que `h1`, sin importar que tokens.css se cargue despues.
   --------------------------------------------------------------------------- */
.admin-body h1,.admin-body h2,.admin-body h3,
.admin-dialog h1,.admin-dialog h2,.admin-dialog h3{color:var(--c-lino)}

/* El degradado dorado teñia de naranja media pantalla. Queda un velo. */
.admin-login{background:radial-gradient(120% 60% at 50% 0,color-mix(in srgb,var(--c-granada-alt) 22%,transparent) 0,transparent 60%)}

/* El aviso cambiaba el fondo por JS y dejaba el texto claro de siempre:
   texto casi blanco sobre amarillo. Ahora el par fondo+texto va junto. */
.admin-notice--ok{background:var(--c-salvia-piel);color:var(--c-salvia-texto);box-shadow:0 10px 40px color-mix(in srgb,var(--c-lino) 18%,transparent)}
.admin-notice--bad{background:var(--c-granada-piel);color:var(--c-granada);box-shadow:0 10px 40px color-mix(in srgb,var(--c-lino) 18%,transparent)}

/* Instalar como app: el boton solo existe si el navegador lo ofrece. */
.sidebar-install{border:1px solid var(--c-linea-fuerte);background:none;color:var(--c-tinta-2);text-align:left;padding:13px 15px;border-radius:var(--r-md);font:inherit;cursor:pointer;margin-top:auto}
.sidebar-install+.sidebar-logout{margin-top:8px}

/* ---------------------------------------------------------------------------
   EN EL TELEFONO (Daniela trabaja desde el movil)
   Las tablas tenian `min-width:760px`: en un telefono eso es una tira que se
   arrastra de lado y en la que se pierde de vista de que pedido es cada celda.
   Debajo de 760px cada fila pasa a ser una ficha y cada celda lleva su rotulo
   (el `data-label` que pone admin.js).
   --------------------------------------------------------------------------- */
@media(max-width:760px){
  .admin-sidebar{position:sticky;top:0;z-index:var(--z-base);padding:16px 14px;display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;gap:12px}
  .admin-sidebar .brand-wordmark small{display:none}
  .admin-sidebar nav{flex:1 0 100%;display:flex;gap:6px;margin-top:0;overflow-x:auto;-webkit-overflow-scrolling:touch}
  .admin-sidebar nav button{flex:1 0 auto;text-align:center;white-space:nowrap;padding:11px 12px}
  .sidebar-install,.sidebar-logout{margin:0 0 0 auto;padding:10px 12px;font-size:var(--f-xs)}
  .admin-top{flex-direction:column;align-items:stretch;gap:12px;margin-bottom:20px}
  .admin-notice{right:12px;left:12px;top:12px}
  .table-wrap{overflow:visible}
  table{min-width:0;display:block}
  thead{display:none}
  tbody,tr,td{display:block}
  tr{padding:14px 16px;border-bottom:1px solid var(--c-linea)}
  tr:last-child{border-bottom:0}
  td{padding:5px 0;border:0;display:grid;grid-template-columns:8.5em 1fr;gap:10px;align-items:center}
  td[data-label]::before{content:attr(data-label);color:var(--c-tinta-3);font-size:var(--f-xs);text-transform:uppercase;letter-spacing:.06em}
  td[colspan]{grid-template-columns:1fr;text-align:center;color:var(--c-tinta-3)}
  /* La celda sin rotulo (la foto del producto, el boton de editar) ocupa las
     dos columnas: si no, el boton se encoge al ancho de la columna del rotulo. */
  td:not([data-label]){grid-template-columns:1fr}
  .status-select,.table-btn{width:100%}
  .section-row{flex-direction:column;align-items:stretch}
  .section-row .btn{width:100%}
  .admin-dialog{padding:18px 16px}
  .dialog-actions{flex-direction:column-reverse}
  .dialog-actions .btn{width:100%}
}
