/* =============================================================
   Excellent — Cuenta del cliente
   Autenticación (acceder / crear cuenta / recuperar clave) y panel
   del cliente (resumen, pedidos, direcciones, datos).
   Todo tokenizado: ver assets/css/tokens.css
   ============================================================= */

/* -------------------------------------------------------------
   Contenedor de las páginas de cuenta
   Bricks imprime el contenido en #brx-content sin contenedor propio
   y antepone el título de la página: lo neutralizamos.
   ------------------------------------------------------------- */
.woocommerce-account #brx-content > h1 { display: none; }
.woocommerce-account #brx-content { width: 100%; max-width: var(--container); margin-inline: auto; padding-inline: var(--gutter); }
/* Bricks pone display:flex en .woocommerce y el bloque de cuenta encogía al
   ancho de su contenido en lugar de ocupar la columna. */
.woocommerce-account .woocommerce { display: block; width: 100%; }

/* Sin sesión el acceso es a sangre completa (foto editorial + formulario). */
.woocommerce-account:not(.logged-in) .site-main { padding-block: 0; }
.woocommerce-account:not(.logged-in) #brx-content { max-width: none; padding-inline: 0; }

/* WooCommerce enmarca sus formularios (borde punteado gris + radio + padding).
   No encaja con el layout editorial: los devolvemos a caja limpia. */
.woocommerce-account form.login,
.woocommerce-account form.register,
.woocommerce-account form.lost_reset_password,
.woocommerce-account form.edit-account,
.woocommerce-account .woocommerce-address-fields { border: 0; padding: 0; margin: 0; border-radius: 0; }
.woocommerce-account .col2-set .col-1, .woocommerce-account .col2-set .col-2 { width: 100%; float: none; }
/* WooCommerce centra el contenido de sus formularios; aquí todo va alineado a la izquierda.
   Bricks además los pone en flex-column con gap:10px, que se sumaba a los márgenes de
   cada campo: dentro del formulario todo separaba 10px más que fuera. Volvemos a flujo
   de bloque para que el único responsable del ritmo sean los tokens de espaciado.
   Se acota a .auth/.account: si se aplicara a todo form de la página, pisaría al
   buscador de la cabecera (.search-bar form, misma especificidad y cargado antes). */
.auth form, .account form { display: block; }
.auth form, .auth form p, .account form, .account form p { text-align: left; }

/* Medidor de fuerza de contraseña (lo inyecta WooCommerce por JS). */
.woocommerce-account .woocommerce-password-strength {
	margin: var(--space-1) 0 0; padding: var(--space-1) var(--space-2); border-radius: var(--radius);
	font-size: var(--fs-xs); font-weight: 500;
	border-left: 3px solid var(--c-muted); background: var(--c-off-soft); color: var(--c-off);
}
.woocommerce-account .woocommerce-password-strength.short,
.woocommerce-account .woocommerce-password-strength.bad { border-left-color: var(--c-err); background: var(--c-err-soft); color: var(--c-err); }
.woocommerce-account .woocommerce-password-strength.good { border-left-color: var(--c-wait); background: var(--c-wait-soft); color: var(--c-wait); }
.woocommerce-account .woocommerce-password-strength.strong { border-left-color: var(--c-ok); background: var(--c-ok-soft); color: var(--c-ok); }
.woocommerce-account .woocommerce-password-hint { display: block; margin: var(--space-1) 0 0; font-size: var(--fs-xs); color: var(--c-muted); line-height: 1.6; }

/* Avisos de Woo: contenidos y separados del contenido. */
.woocommerce-account .woocommerce-notices-wrapper:not(:empty) { margin-bottom: var(--space-4); }
.woocommerce-account:not(.logged-in) .woocommerce-notices-wrapper:not(:empty) { max-width: var(--container); margin-inline: auto; padding: var(--space-4) var(--gutter) 0; }

/* =============================================================
   Campos de formulario (compartidos por cuenta y autenticación)
   ============================================================= */
/* WooCommerce/Bricks traen label{margin-bottom:5px}, que se sumaba al gap del
   contenedor: la separación etiqueta↔campo salía 14px en vez de los 8.75 del
   token, y descuadraba el ritmo de todos los formularios. */
.auth label, .account label { margin: 0; }

.field { display: flex; flex-direction: column; gap: var(--space-1); margin-bottom: var(--space-3); }
.field__label { font-family: var(--font-body); font-size: var(--fs-2xs); font-weight: 500; color: var(--c-ink); line-height: 1.2; }
.field__label .req { color: var(--c-gold); }
.field__hint { font-size: var(--fs-xs); color: var(--c-muted); }
.field__input {
	width: 100%; height: var(--field-h); padding: 0 var(--field-pad-x);
	border: var(--field-border) solid var(--c-line); border-radius: var(--radius); background: var(--c-white);
	font-family: var(--font-body); font-size: var(--fs-base); color: var(--c-ink);
	transition: border-color .2s var(--ease);
}
.field__input::placeholder { color: var(--c-muted); }
.field__input:hover { border-color: var(--c-body); }
.field__input:focus { outline: none; border-color: var(--c-ink); }
.field--half { flex: 1 1 12rem; }
.field-row { display: flex; flex-wrap: wrap; gap: var(--space-2); }

/* Casilla + enlace de utilidad bajo el formulario */
.field-check { display: inline-flex; align-items: center; gap: var(--space-1); font-size: var(--fs-sm); color: var(--c-body); cursor: pointer; }
.field-check input { width: 1rem; height: 1rem; accent-color: var(--c-ink); margin: 0; }

/* Botón a ancho completo del formulario */
.btn--block { display: flex; width: 100%; height: var(--field-h); padding-block: 0; justify-content: center; }

/* =============================================================
   Autenticación — split: foto editorial + panel de formulario
   ============================================================= */
.auth { display: grid; grid-template-columns: 1.05fr .95fr; min-height: var(--auth-min-h); }

/* --- Columna visual --- */
.auth__visual { position: relative; overflow: hidden; background: var(--c-soft); display: flex; align-items: flex-end; }
.auth__visual img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.auth__visual::after { content: ""; position: absolute; inset: 0; background: linear-gradient(to top, rgba(20,20,20,.72), rgba(20,20,20,.12) 55%, rgba(20,20,20,.28)); }
.auth__visual-body { position: relative; z-index: 2; padding: clamp(var(--space-3), 4vw, var(--space-6)); color: var(--c-white); max-width: 34rem; }
.auth__visual-body .eyebrow { color: var(--c-gold-soft); }
.auth__claim { color: var(--c-white); font-size: var(--fs-h2); margin: var(--space-1) 0 var(--space-2); letter-spacing: var(--tracking-tight); }
.auth__note { color: var(--c-white); opacity: .82; font-size: var(--fs-sm); margin: 0; }

/* --- Columna del formulario --- */
.auth__panel { display: flex; flex-direction: column; justify-content: center; align-items: center; padding: clamp(var(--space-4), 5vw, var(--space-6)) clamp(var(--space-3), 4vw, var(--space-5)); background: var(--c-bg); }
.auth__inner { width: 100%; max-width: var(--auth-panel-max); }
.auth__logo { display: block; width: 8.5rem; margin: 0 0 var(--space-5); }

/* Pestañas Acceder / Crear cuenta */
.auth__tabs { display: flex; gap: var(--space-4); border-bottom: var(--hairline) solid var(--c-line); margin-bottom: var(--space-4); }
.auth__tab {
	appearance: none; background: none; border: 0; border-bottom: var(--focus-w) solid transparent;
	padding: 0 0 var(--space-2); cursor: pointer;
	font-family: var(--font-body); font-size: var(--fs-sm); font-weight: 500;
 color: var(--c-muted);
	transition: color .2s var(--ease), border-color .2s var(--ease);
}
.auth__tab:hover { color: var(--c-ink); }
.auth__tab.is-active { color: var(--c-ink); border-bottom-color: var(--c-gold); }

/* Paneles: sin JS se muestran los dos, uno tras otro. */
.auth__pane + .auth__pane { margin-top: var(--space-5); padding-top: var(--space-5); border-top: var(--hairline) solid var(--c-line); }
.auth--js .auth__pane { display: none; margin: 0; padding: 0; border-top: 0; }
.auth--js .auth__pane.is-active { display: block; }
.auth--js .auth__pane-title { display: none; }

.auth__pane-title { font-size: var(--fs-h4); margin: 0 0 var(--space-2); }
.auth__lead { font-size: var(--fs-sm); color: var(--c-body); margin: 0 0 var(--space-4); }
.auth__utils { display: flex; align-items: center; justify-content: space-between; gap: var(--space-2); margin-bottom: var(--space-4); }
.auth__link { font-size: var(--fs-xs); font-weight: 500; color: var(--c-ink); border-bottom: var(--hairline) solid var(--c-line); padding-bottom: var(--space-05); }
.auth__link:hover { color: var(--c-gold); border-color: var(--c-gold); }

/* ---- Ritmo compacto del panel de acceso ----
   El panel traía el aire de una página de contenido (52px bajo el logo, 35px
   entre bloques) y un formulario de dos campos quedaba desparramado: el botón
   «Entrar» caía muy por debajo del pliegue en un portátil. Se ajusta SOLO
   dentro de `.auth`; el resto de pantallas de la cuenta son de leer, no de
   rellenar, y ahí el aire ancho sí funciona. */
.auth__logo { margin-bottom: var(--auth-flow-lg); }
.auth__tabs { gap: var(--space-3); margin-bottom: var(--auth-flow-lg); }
.auth__lead { margin-bottom: var(--auth-flow-lg); }
.auth__utils { margin-bottom: var(--auth-flow); }
.auth .field { margin-bottom: var(--auth-flow); }
.auth__pane-title { margin-bottom: var(--space-1); }

/* ---- Avisos dentro del panel ----
   Antes los imprimía el hook por encima de todo el layout, sobre la foto.
   Ahora van pegados encima de los campos: el error se lee donde está el fallo. */
.auth__avisos { margin-bottom: var(--auth-flow); }
.auth__avisos .woocommerce-error,
.auth__avisos .woocommerce-message,
.auth__avisos .woocommerce-info {
	list-style: none; margin: 0; padding: var(--space-2);
	font-size: var(--fs-sm); line-height: 1.45;
	/* Filete a la izquierda, no caja de color: un bloque rojo entero dentro de
	   un panel blanco grita más de lo que informa, y en este sitio el rojo ya
	   significa rebaja. */
	background: var(--c-soft); color: var(--c-ink);
	border: 0; border-left: 3px solid var(--c-err);
}
.auth__avisos .woocommerce-message { border-left-color: var(--c-gold); }
.auth__avisos li { list-style: none; margin: 0; }
/* WooCommerce marca sus avisos con un aspa por `::before`, pensada para su
   caja de color a todo lo ancho. Sobre nuestro panel gris queda un aspa roja
   suelta encima del texto, sin alinear con nada. */
.auth__avisos .woocommerce-error::before,
.auth__avisos .woocommerce-error li::before,
.auth__avisos .woocommerce-message::before,
.auth__avisos .woocommerce-info::before { content: none; display: none; }
/* El enlace de «¿Has olvidado tu contraseña?» viene SIN clase y aun así recibe
   fondo rosa y relleno de botón de la hoja base de Woo/Bricks. Dentro del aviso
   tiene que leerse como lo que es: un enlace de texto. */
.auth__avisos .woocommerce-error a,
.auth__avisos .woocommerce-message a,
.auth__avisos .woocommerce-info a {
	display: inline; background: none; border: 0; padding: 0;
	font-size: inherit; font-weight: 500; letter-spacing: normal; text-transform: none;
	color: var(--c-ink); text-decoration: underline; text-underline-offset: 3px;
}
.auth__avisos .woocommerce-error a:hover,
.auth__avisos .woocommerce-message a:hover,
.auth__avisos .woocommerce-info a:hover { color: var(--c-gold); }

/* El texto legal lo imprime WooCommerce justo antes del botón: le damos el mismo
   aire arriba y abajo que al resto del formulario. */
.woocommerce-account .woocommerce-privacy-policy-text { margin: var(--space-3) 0; }
.auth__legal,
.woocommerce-account .woocommerce-privacy-policy-text p { font-size: var(--fs-xs); color: var(--c-muted); margin: 0; line-height: 1.6; text-align: left; }
/* El aviso de privacidad ya lleva el margen en su contenedor; este va suelto. */
.auth__legal { margin-top: var(--space-3); }
.auth__legal a,
.woocommerce-account .woocommerce-privacy-policy-text a { color: var(--c-body); border-bottom: var(--hairline) solid var(--c-line); }
.auth__legal a:hover,
.woocommerce-account .woocommerce-privacy-policy-text a:hover { color: var(--c-gold); }

/* Ventajas de crear cuenta */
.auth__perks { list-style: none; margin: var(--space-4) 0 0; padding: var(--space-3) 0 0; border-top: var(--hairline) solid var(--c-line); display: grid; gap: var(--space-1); }
.auth__perks li { position: relative; padding-left: var(--space-3); font-size: var(--fs-sm); color: var(--c-body); }
.auth__perks li::before { content: ""; position: absolute; left: 0; top: .62em; width: 6px; height: 6px; background: var(--c-gold); }

/* Variante centrada: recuperar / restablecer contraseña */
.auth--single { display: block; min-height: 0; padding-block: var(--space-6); }
.auth--single .auth__inner { margin-inline: auto; }
.auth--single .auth__panel { padding: 0; }

/* =============================================================
   Shell de la cuenta (con sesión iniciada)
   ============================================================= */
/* La cabecera separa con su borde inferior; no necesita además el hueco grande
   de columna (--account-gap), que dejaba casi 100px de aire muerto arriba.
   El padding superior es mínimo a propósito: .site-main ya aporta --section-y
   (50px) por encima, y sumar aquí otro tanto duplicaba el aire de entrada. */
.account__head { padding-block: var(--space-1) var(--space-2); border-bottom: var(--hairline) solid var(--c-line); margin-bottom: var(--space-3); }
.account__title { font-size: var(--fs-h3); margin: var(--space-05) 0 var(--space-1); letter-spacing: var(--tracking-tight); }
.account__headrow { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--space-1) var(--space-3); }
.account__meta { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-1) var(--space-2); font-size: var(--fs-sm); color: var(--c-muted); margin: 0; }
/* El separador cuelga del elemento anterior: si la línea se parte, no queda
   un "·" suelto abriendo la línea siguiente. */
.account__meta span:not(:last-child)::after { content: "·"; margin-left: var(--space-2); color: var(--c-line); }
.account__logout { font-size: var(--fs-xs); font-weight: 500; color: var(--c-ink); border-bottom: var(--hairline) solid var(--c-line); padding-bottom: var(--space-05); }
.account__logout:hover { color: var(--c-err); border-color: var(--c-err); }

.account__layout { display: grid; grid-template-columns: var(--account-nav-w) minmax(0, 1fr); gap: var(--account-gap); padding-bottom: var(--space-6); align-items: start; }

/* --- Navegación lateral --- */
/* Bricks pinta el <nav> con un gris propio (#f5f6f7) que no es de la paleta.
   Lo asumimos como panel deliberado usando el token del proyecto. */
.account-nav { position: sticky; top: var(--space-3); background: var(--c-soft); }
/* El selector desplegable solo existe en móvil y solo si el JS lo activa. */
.account-nav__toggle { display: none; }
.account-nav__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
.account-nav li + li { border-top: var(--hairline) solid var(--c-line); }
.account-nav a {
	display: flex; align-items: center; gap: var(--space-2);
	padding: var(--space-2) var(--space-3);
	font-family: var(--font-body); font-size: var(--fs-xs); font-weight: 500;
 color: var(--c-body);
	/* Bricks fija line-height:60px a los enlaces dentro de <nav>: lo neutralizamos. */
	line-height: 1.3;
	transition: color .2s var(--ease), background-color .2s var(--ease);
}
.account-nav a:hover { color: var(--c-ink); background: var(--c-white); }
.account-nav .is-active > a { background: var(--c-white); box-shadow: inset 3px 0 0 var(--c-gold); }
.account-nav__ic { flex: none; width: 18px; height: 18px; stroke: currentColor; stroke-width: 1.6; fill: none; stroke-linecap: round; stroke-linejoin: round; }
.account-nav .is-active > a { color: var(--c-ink); }
.account-nav .is-active > a .account-nav__ic { color: var(--c-gold); }
.account-nav .woocommerce-MyAccount-navigation-link--customer-logout { border-top: var(--hairline) solid var(--c-line); }
.account-nav .woocommerce-MyAccount-navigation-link--customer-logout a { color: var(--c-muted); }
.account-nav .woocommerce-MyAccount-navigation-link--customer-logout a:hover { color: var(--c-err); }

/* =============================================================
   Panel de resumen (dashboard)
   ============================================================= */
.acc-section + .acc-section { margin-top: var(--space-5); }
.acc-section__head { display: flex; align-items: baseline; justify-content: space-between; gap: var(--space-2); margin-bottom: var(--space-3); }
.acc-section__title { font-size: var(--fs-h5); margin: 0; }

/* Cifras del cliente */
.acc-stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-2); }
.acc-stat { border: var(--hairline) solid var(--c-line); padding: var(--account-card-pad); }
.acc-stat__label { display: block; font-size: var(--fs-2xs); font-weight: 500; color: var(--c-muted); margin-bottom: var(--space-1); }
.acc-stat__value { font-family: var(--font-display); font-size: var(--fs-h3); font-weight: 600; line-height: 1; color: var(--c-ink); letter-spacing: var(--tracking-tight); }
.acc-stat__foot { display: block; font-size: var(--fs-xs); color: var(--c-muted); margin-top: var(--space-1); }
.acc-stat--accent { background: var(--c-ink); border-color: var(--c-ink); }
.acc-stat--accent .acc-stat__label { color: var(--c-gold-soft); }
.acc-stat--accent .acc-stat__value, .acc-stat--accent .acc-stat__foot { color: var(--c-white); }
.acc-stat--accent .acc-stat__foot { opacity: .7; }

/* Accesos rápidos */
.acc-quick { display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--space-2); }
.acc-quick__card { display: flex; align-items: flex-start; gap: var(--space-2); border: var(--hairline) solid var(--c-line); padding: var(--account-card-pad); transition: border-color .2s var(--ease); }
.acc-quick__card:hover { border-color: var(--c-ink); }
.acc-quick__ic { flex: none; width: 22px; height: 22px; stroke: var(--c-gold); stroke-width: 1.5; fill: none; stroke-linecap: round; stroke-linejoin: round; margin-top: 2px; }
.acc-quick__title { display: block; font-family: var(--font-display); font-size: var(--fs-h6); font-weight: 600; color: var(--c-ink); line-height: 1.15; margin-bottom: var(--space-05); }
.acc-quick__desc { display: block; font-size: var(--fs-sm); color: var(--c-body); line-height: 1.5; }

/* Estado vacío */
.acc-empty { border: var(--hairline) solid var(--c-line); padding: clamp(var(--space-4), 6vw, var(--space-6)); text-align: center; }
.acc-empty__title { font-size: var(--fs-h5); margin: 0 0 var(--space-1); }
.acc-empty__text { font-size: var(--fs-sm); color: var(--c-body); max-width: 34rem; margin: 0 auto var(--space-3); }

/* =============================================================
   Pastillas de estado del pedido
   ============================================================= */
.acc-status {
	display: inline-flex; align-items: center; gap: var(--space-1); flex: none;
	padding: .38em .7em; border-radius: var(--radius);
	font-family: var(--font-body); font-size: var(--fs-2xs); font-weight: 500;
 line-height: 1;
	background: var(--c-off-soft); color: var(--c-off);
}
.acc-status::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
.acc-status--completed { background: var(--c-ok-soft); color: var(--c-ok); }
.acc-status--processing, .acc-status--on-hold, .acc-status--pending { background: var(--c-wait-soft); color: var(--c-wait); }
.acc-status--failed { background: var(--c-err-soft); color: var(--c-err); }

/* =============================================================
   Pedidos — listado en tarjetas
   ============================================================= */
/* Dos pedidos por fila: en la columna de contenido (~1090px) cada tarjeta queda
   en ~535px, suficiente para leerse sin huecos y con la mitad de scroll. */
.acc-orders { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-2); align-items: start; }
/* Fila 1: fotos · identificación · total. Fila 2: estado · acción.
   La columna de datos absorbe el sobrante, así no queda vacío central. */
.acc-order {
	border: var(--hairline) solid var(--c-line); padding: var(--account-card-pad);
	display: grid; grid-template-columns: auto minmax(0, 1fr) auto;
	gap: var(--space-2) var(--space-2); align-items: center;
	transition: border-color .2s var(--ease);
}
/* Colocación explícita: con el pedido en 5 elementos, dejar que la rejilla
   los coloque sola parte la tarjeta en tres filas. */
.acc-order__thumbs { grid-column: 1; grid-row: 1; }
.acc-order__info { grid-column: 2; grid-row: 1; }
.acc-order__total { grid-column: 3; grid-row: 1; justify-self: end; }
.acc-order .acc-status { grid-column: 1 / 3; grid-row: 2; justify-self: start; }
.acc-order__actions { grid-column: 3; grid-row: 2; justify-self: end; }
.acc-order:hover { border-color: var(--c-ink); }
.acc-order__thumbs { display: flex; }
.acc-order__thumbs img { width: 48px; height: 60px; object-fit: cover; background: var(--c-soft); border: var(--hairline) solid var(--c-white); }
.acc-order__thumbs img + img { margin-left: calc(var(--space-2) * -1); }
.acc-order__more { display: inline-flex; align-items: center; justify-content: center; width: 48px; height: 60px; margin-left: calc(var(--space-2) * -1); background: var(--c-soft); border: var(--hairline) solid var(--c-white); font-size: var(--fs-xs); font-weight: 600; color: var(--c-body); }
.acc-order__info { display: flex; flex-direction: column; gap: var(--space-05); min-width: 0; }
.acc-order__num { font-family: var(--font-display); font-size: var(--fs-h6); font-weight: 600; color: var(--c-ink); line-height: 1.1; }
.acc-order__meta { font-size: var(--fs-xs); color: var(--c-muted); }
.acc-order__total { font-family: var(--font-display); font-size: var(--fs-h6); font-weight: 600; color: var(--c-ink); white-space: nowrap; }
.acc-order__actions { display: flex; flex-wrap: wrap; gap: var(--space-1); }
.acc-order__actions .btn { padding: .8em 1.5em; }

/* Paginación de pedidos */
.acc-pagination { display: flex; justify-content: space-between; gap: var(--space-2); margin-top: var(--space-4); }

/* =============================================================
   Pedido individual (detalle)
   ============================================================= */
.acc-order-detail__head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--space-2); margin-bottom: var(--space-4); }
.acc-back { display: inline-flex; align-items: center; gap: var(--space-1); font-size: var(--fs-xs); font-weight: 500; color: var(--c-muted); margin-bottom: var(--space-2); }
.acc-back:hover { color: var(--c-ink); }

/* Seguimiento del pedido: hitos marcados sobre un raíl. Con solo líneas no se
   distinguía un tramo recorrido de una simple separación. */
.acc-track { display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; list-style: none; margin: 0 0 var(--space-5); padding: 0; }
.acc-track__step { position: relative; text-align: center; }
/* El tramo pertenece al hito que llega a él, así se colorea con su mismo estado. */
.acc-track__step::before {
	content: ""; position: absolute; top: 13px; left: -50%; right: 50%;
	margin-inline: var(--space-2); height: 2px; background: var(--c-line);
}
.acc-track__step:first-child::before { display: none; }
.acc-track__step.is-done::before { background: var(--c-gold); }

.acc-track__marker {
	position: relative; z-index: 1;
	display: inline-flex; align-items: center; justify-content: center;
	width: 28px; height: 28px; border-radius: 50%;
	border: 2px solid var(--c-line); background: var(--c-bg); color: var(--c-white);
	transition: background-color .2s var(--ease), border-color .2s var(--ease);
}
.acc-track__marker svg { width: 13px; height: 13px; fill: none; stroke: currentColor; stroke-width: 3.5; stroke-linecap: round; stroke-linejoin: round; }
.acc-track__step.is-done .acc-track__marker { border-color: var(--c-gold); background: var(--c-gold); }
/* Halo en el hito actual: dice de un vistazo dónde está el pedido. */
.acc-track__step.is-current .acc-track__marker { box-shadow: 0 0 0 5px var(--c-gold-soft); }

.acc-track__label { display: block; margin-top: var(--space-1); font-size: var(--fs-2xs); font-weight: 500; color: var(--c-muted); }
.acc-track__step.is-done .acc-track__label { color: var(--c-ink); }
.acc-track__now { display: block; margin-top: var(--space-05); font-size: var(--fs-2xs); color: var(--c-gold); }

/* Artículos del pedido */
.acc-items { border-top: var(--hairline) solid var(--c-line); }
.acc-item { display: grid; grid-template-columns: 72px minmax(0, 1fr) auto; gap: var(--space-2) var(--space-3); align-items: center; padding: var(--space-3) 0; border-bottom: var(--hairline) solid var(--c-line); }
.acc-item__media { width: 72px; aspect-ratio: 3 / 4; overflow: hidden; background: var(--c-soft); }
.acc-item__media img { width: 100%; height: 100%; object-fit: cover; }
.acc-item__brand { display: block; font-size: var(--fs-2xs); font-weight: 500; color: var(--c-muted); margin-bottom: var(--space-05); }
.acc-item__name { display: block; font-family: var(--font-body); font-size: var(--fs-base); font-weight: 600; color: var(--c-ink); }
.acc-item__meta { display: block; font-size: var(--fs-xs); color: var(--c-muted); margin-top: var(--space-05); }
.acc-item__price { font-weight: 600; color: var(--c-ink); white-space: nowrap; }

/* Totales */
.acc-totals { list-style: none; margin: var(--space-3) 0 0; padding: 0; margin-left: auto; max-width: 22rem; }
.acc-totals li { display: flex; justify-content: space-between; gap: var(--space-3); padding: var(--space-1) 0; font-size: var(--fs-sm); color: var(--c-body); }
.acc-totals li strong { font-weight: 600; color: var(--c-body); }
.acc-totals .acc-totals__grand { border-top: var(--hairline) solid var(--c-line); margin-top: var(--space-1); padding-top: var(--space-2); font-family: var(--font-display); font-size: var(--fs-h5); font-weight: 600; color: var(--c-ink); }
.acc-totals .acc-totals__grand strong { font-weight: 600; color: var(--c-ink); }

/* =============================================================
   Direcciones y datos
   ============================================================= */
.acc-cards { display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--space-2); }
.acc-card { border: var(--hairline) solid var(--c-line); padding: var(--account-card-pad); display: flex; flex-direction: column; gap: var(--space-2); }
.acc-card__head { display: flex; align-items: baseline; justify-content: space-between; gap: var(--space-2); }
.acc-card__title { font-size: var(--fs-h6); margin: 0; }
.acc-card__edit { font-size: var(--fs-2xs); font-weight: 600; color: var(--c-ink); border-bottom: var(--hairline) solid var(--c-line); padding-bottom: var(--space-05); }
.acc-card__edit:hover { color: var(--c-gold); border-color: var(--c-gold); }
.acc-card address { font-style: normal; font-size: var(--fs-sm); color: var(--c-body); line-height: 1.7; margin: 0; }
.acc-card__empty { font-size: var(--fs-sm); color: var(--c-muted); margin: 0; }

/* Formularios de la cuenta (datos, direcciones) */
.acc-form { max-width: 40rem; }
.acc-form__group { border: 0; margin: 0 0 var(--space-4); padding: 0; }
.acc-form__legend { display: block; width: 100%; font-family: var(--font-display); font-size: var(--fs-h6); font-weight: 500; color: var(--c-ink); padding: 0 0 var(--space-2); margin-bottom: var(--space-3); border-bottom: var(--hairline) solid var(--c-line); }
.acc-form__actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2); }
/* Grupos independientes (datos personales / contraseña) uno al lado del otro:
   aprovecha el ancho de la columna y evita una página que solo se scrollea. */
.acc-form.acc-form--split { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 var(--account-gap); align-items: start; max-width: none; }
.acc-form--split .acc-form__actions { grid-column: 1 / -1; }
.acc-form__note { font-size: var(--fs-xs); color: var(--c-muted); margin: 0 0 var(--space-3); }
/* Si la nota cierra el grupo, su margen se sumaba al del grupo y dejaba el doble
   de aire antes del botón. */
.acc-form__group > .acc-form__note:last-child { margin-bottom: 0; }

/* Campos que WooCommerce genera con su propio marcado (editar dirección) */
.woocommerce-account .woocommerce-address-fields .form-row,
.woocommerce-account .woocommerce-EditAccountForm .form-row { display: flex; flex-direction: column; gap: var(--space-1); margin: 0 0 var(--space-3); padding: 0; float: none; width: 100%; }
.woocommerce-account .woocommerce-address-fields label,
.woocommerce-account .woocommerce-EditAccountForm label { font-size: var(--fs-2xs); font-weight: 500; color: var(--c-ink); }
.woocommerce-account .woocommerce-address-fields .form-row input.input-text,
.woocommerce-account .woocommerce-address-fields .form-row select,
.woocommerce-account .woocommerce-address-fields .select2-selection--single {
	height: var(--field-h); padding: 0 var(--field-pad-x); border: var(--field-border) solid var(--c-line); border-radius: var(--radius);
	font-family: var(--font-body); font-size: var(--fs-base); color: var(--c-ink); background: var(--c-white);
}
.woocommerce-account .woocommerce-address-fields .form-row input.input-text:focus,
.woocommerce-account .woocommerce-address-fields .form-row select:focus { outline: none; border-color: var(--c-ink); }
.woocommerce-account .woocommerce-address-fields .select2-selection__rendered { line-height: calc(var(--field-h) - var(--field-border) * 2) !important; padding-left: 0 !important; }
.woocommerce-account .woocommerce-address-fields .select2-selection__arrow { height: var(--field-h); }
/* WooCommerce ya marca qué campos son de media línea (nombre/apellido) con
   form-row-first/last: los aprovechamos en vez de apilarlo todo a ancho completo. */
.woocommerce-account .woocommerce-address-fields__field-wrapper { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 var(--space-2); margin-bottom: var(--space-3); }
.woocommerce-account .woocommerce-address-fields__field-wrapper .form-row { grid-column: 1 / -1; }
.woocommerce-account .woocommerce-address-fields__field-wrapper .form-row-first { grid-column: 1; }
.woocommerce-account .woocommerce-address-fields__field-wrapper .form-row-last { grid-column: 2; }
.woocommerce-account .woocommerce-address-fields h3, .woocommerce-account .woocommerce-EditAccountForm h3 { font-size: var(--fs-h6); }

/* =============================================================
   Foco visible (a11y)
   Los campos ya avisan del foco poniendo su borde en tinta, así que el anillo
   extra se leía como un segundo borde alrededor del campo. Se les quita a ellos
   y se conserva en enlaces y botones, que no tienen otra señal de foco.
   ============================================================= */
.woocommerce-account a:focus-visible,
.woocommerce-account button:focus-visible { outline: var(--focus-w) solid var(--c-gold); outline-offset: 2px; }
.woocommerce-account input:focus,
.woocommerce-account input:focus-visible,
.woocommerce-account select:focus,
.woocommerce-account select:focus-visible,
.woocommerce-account textarea:focus,
.woocommerce-account textarea:focus-visible { outline: none; box-shadow: none; }
/* Refuerzo del borde en foco para que la señal siga siendo evidente. */
.field__input:focus,
.woocommerce-account .woocommerce-address-fields .form-row input.input-text:focus,
.woocommerce-account .woocommerce-address-fields .form-row select:focus { border-color: var(--c-ink); }

/* =============================================================
   Responsive
   ============================================================= */
@media (max-width: 1024px) {
	.auth { grid-template-columns: 1fr; }
	.auth__visual { min-height: 20rem; }
	.account__layout { grid-template-columns: 1fr; gap: var(--space-4); }
	/* --- Navegación como selector de sección ---
	   En cuanto la navegación deja de ir en columna, una fila de cinco opciones
	   se parte en varias líneas y deja de leerse como un menú (pasaba ya a 769px).
	   En vez de pelear con el punto exacto en que cabe, aquí es siempre un
	   desplegable, que además dice en qué sección estás.
	   La clase la añade el JS: sin él la lista queda visible y todo sigue navegable. */
	.account-nav { position: static; }
	.account-nav--collapsible .account-nav__toggle { display: flex; }
	.account-nav--collapsible .account-nav__list { display: none; }
	.account-nav--collapsible.is-open .account-nav__list { display: flex; }

	.account-nav__toggle {
		width: 100%; align-items: center; justify-content: space-between; gap: var(--space-2);
		padding: var(--space-2) var(--space-3); border: 0; background: var(--c-soft);
		cursor: pointer; text-align: left; font-family: var(--font-body); color: var(--c-ink);
	}
	.account-nav__toggle-in { display: flex; align-items: center; gap: var(--space-2); min-width: 0; }
	.account-nav__toggle .account-nav__ic { stroke: var(--c-gold); }
	.account-nav__toggle-text { display: flex; flex-direction: column; gap: var(--space-05); }
	.account-nav__toggle-eyebrow { font-size: var(--fs-2xs); font-weight: 500; color: var(--c-muted); line-height: 1; }
	.account-nav__toggle-current { font-size: var(--fs-xs); font-weight: 500; color: var(--c-ink); line-height: 1.2; }
	.account-nav__caret { flex: none; width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; transition: transform .2s var(--ease); }
	.account-nav--collapsible.is-open .account-nav__caret { transform: rotate(180deg); }

	/* La lista desplegada: en blanco sobre el panel, para que se lea como panel abierto. */
	.account-nav__list { border-top: var(--hairline) solid var(--c-line); }
	.account-nav a { background: var(--c-white); }

	/* Con la navegación arriba, el contenido ocupa todo el ancho: un pedido por
	   fila pero en una sola línea, que aprovecha mejor ese ancho. */
	.acc-orders { grid-template-columns: 1fr; }
	.acc-order { grid-template-columns: auto minmax(0, 1fr) auto auto auto; gap: var(--space-2) var(--space-3); }
	.acc-order__thumbs, .acc-order__info, .acc-order__total,
	.acc-order .acc-status, .acc-order__actions { grid-column: auto; grid-row: auto; justify-self: auto; }
}

@media (max-width: 900px) {
	.acc-quick, .acc-cards { grid-template-columns: 1fr; }
	/* Sin ancho para dos columnas, los grupos del formulario vuelven a apilarse. */
	.acc-form.acc-form--split { display: block; max-width: 40rem; }
}

@media (max-width: 768px) {
	.auth { min-height: 0; }
	.auth__visual { min-height: 15rem; }
	.acc-stats { grid-template-columns: 1fr; }
	/* Foto + datos en la primera fila, estado y total en la segunda,
	   y la acción a lo ancho al final. */
	.acc-order { grid-template-columns: auto minmax(0, 1fr); }
	.acc-order .acc-status { justify-self: start; }
	.acc-order__total { justify-self: end; }
	.acc-order__actions { grid-column: 1 / -1; }
	.acc-order__actions .btn { flex: 1; justify-content: center; }
	.acc-order__actions .btn { flex: 1; justify-content: center; }
	/* En vertical: marcador a la izquierda, etiqueta al lado, y el tramo
	   ocupando el hueco que queda por encima de cada marcador. */
	.acc-track { grid-auto-flow: row; grid-auto-columns: auto; }
	.acc-track__step { display: grid; grid-template-columns: 28px minmax(0, 1fr); align-items: center; gap: 0 var(--space-2); text-align: left; padding-top: var(--space-3); }
	.acc-track__step:first-child { padding-top: 0; }
	.acc-track__step::before { top: 0; left: 13px; right: auto; width: 2px; height: var(--space-3); margin-inline: 0; }
	.acc-track__label { margin-top: 0; }
	.acc-track__now { grid-column: 2; }
	.acc-totals { max-width: none; }
}

@media (max-width: 560px) {
	.account__title { font-size: var(--fs-h3); }
	.acc-item { grid-template-columns: 56px minmax(0, 1fr); }
	.acc-item__media { width: 56px; }
	.acc-item__price { grid-column: 2; text-align: left; }
}

/* =============================================================
   Verificación del correo por código
   ============================================================= */

/* Aviso de "correo sin confirmar". Aparece arriba del contenido en todas las
   pantallas de la cuenta mientras siga pendiente. Usa los colores de estado
   "pendiente" del sistema, no unos propios. */
.vc-aviso {
	display: flex; align-items: center; justify-content: space-between;
	flex-wrap: wrap; gap: var(--vc-aviso-gap);
	padding: var(--vc-aviso-pad);
	margin-bottom: var(--flow);
	background: var(--c-wait-soft);
	border-left: var(--field-border) solid var(--c-wait);
}
.vc-aviso__texto { display: grid; gap: var(--space-05); }
.vc-aviso__texto strong {
	font-size: var(--fs-sm); font-weight: 500; color: var(--c-ink);

}
.vc-aviso__texto span { font-size: var(--fs-sm); color: var(--c-body); }
/* El botón del aviso no compite con la acción principal de la pantalla que hay
   debajo: mismo estilo, menos cuerpo. */
.vc-aviso__cta { padding-block: .7em; padding-inline: 1.6em; }

/* Pantalla del código. */
.vc { max-width: var(--vc-panel-max); }
.vc__intro, .vc__hecho { font-size: var(--fs-sm); color: var(--c-body); margin-bottom: var(--flow); }
.vc__intro strong { color: var(--c-ink); font-weight: 500; }

/* Ritmo del formulario: la etiqueta va pegada a SU campo (son una unidad) y el
   botón, separado. Con un `gap` único los tres quedaban a la misma distancia:
   la etiqueta se leía suelta y el botón, pegado al campo. */
.vc__form { display: grid; gap: var(--space-1); }
.vc__label {
	font-size: var(--fs-xs); font-weight: 500;
 color: var(--c-ink);
}
/* El campo del código: alto, ancho completo y con los dígitos separados. El
   `letter-spacing` deja un hueco sobrante a la derecha del último dígito, por
   eso se compensa con la sangría izquierda para que el texto quede centrado.

   ⚠️ ÚNICA EXCEPCIÓN a la norma de «nunca letter-spacing» (13-ago), y va
   marcada a propósito. Aquí no es estilo: es un campo donde se teclean 6
   dígitos, y separarlos deja ver de un vistazo cuántos llevas y cuál falta.
   Es lo que hace cualquier campo de código de verificación. Si se prefiere la
   norma sin excepciones, se quitan esta línea y el `text-indent` que la
   compensa. NO usar como precedente en ningún otro sitio. */
.vc__codigo {
	width: 100%; height: var(--vc-codigo-h);
	font-family: var(--font-body); font-size: var(--vc-codigo-fs); font-weight: 500;
	letter-spacing: var(--vc-codigo-track);
	text-align: center; text-indent: var(--vc-codigo-track);
	border: var(--field-border) solid var(--c-ink); background: var(--c-bg);
	color: var(--c-ink); border-radius: var(--radius);
}
.vc__codigo:focus-visible { outline: var(--focus-w) solid var(--c-gold); outline-offset: 2px; }
/* El botón respira respecto al campo: es otra cosa, no parte del campo. */
.vc__enviar { justify-content: center; margin-top: var(--flow); }

.vc__pie {
	display: grid; gap: var(--space-1);
	margin-top: var(--flow); padding-top: var(--flow);
	border-top: var(--hairline) solid var(--c-line);
}
.vc__nota { font-size: var(--fs-xs); color: var(--c-muted); }
/* "Enviarme otro código" es un botón de verdad (envía un POST), pero se lee
   como enlace. El área táctil se mantiene: por debajo de 44px el dedo falla. */
.vc__link {
	background: none; border: 0; padding: 0;
	min-height: 44px;
	font-family: var(--font-body); font-size: var(--fs-sm); color: var(--c-ink);
	text-decoration: underline; text-underline-offset: 3px; cursor: pointer;
	justify-self: start;
}
.vc__link:hover { color: var(--c-gold); }

@media (max-width: 560px) {
	/* Con poco ancho, el botón del aviso pasa debajo y a todo lo ancho: al lado
	   del texto se quedaba en una columna de dos palabras. */
	.vc-aviso { flex-direction: column; align-items: stretch; }
	.vc-aviso__cta { justify-content: center; }
}

/* =============================================================
   Lista de deseos
   ============================================================= */

.wishlist__grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(var(--wishlist-col), 1fr));
	gap: var(--flow);
	list-style: none; margin: 0; padding: 0;
}
.wishlist__item { display: flex; flex-direction: column; gap: var(--space-1); }
/* El botón de compra empujado abajo: con nombres de producto de distinta
   longitud, si no, cada tarjeta lo dejaba a una altura. */
.wishlist__add { margin-top: auto; justify-content: center; padding-block: .8em; }
.wishlist__agotado {
	margin-top: auto; text-align: center;
	font-size: var(--fs-xs); color: var(--c-muted);

}

.wishlist__vacio {
	display: grid; gap: var(--space-2); justify-items: center;
	padding: var(--section-y) 0; text-align: center;
}
.wishlist__vacio p { margin: 0; }
.wishlist__pista { font-size: var(--fs-sm); color: var(--c-body); max-width: 26rem; }
/* Aviso al invitado: lo guardado vive en su navegador. Es también el momento
   natural para ofrecerle cuenta — ya ha demostrado interés guardando algo. */
.wishlist__aviso {
	font-size: var(--fs-sm); color: var(--c-body);
	margin: 0 0 var(--flow); padding-bottom: var(--flow);
	border-bottom: var(--hairline) solid var(--c-line);
}
.wishlist__aviso a { color: var(--c-ink); text-decoration: underline; text-underline-offset: 3px; }
.wishlist__aviso a:hover { color: var(--c-gold); }
/* Sin sesión no hay navegación lateral, así que el bloque ocupa todo el ancho. */
.account--invitado .wishlist { max-width: none; }
