/* ============================================================
   PRIMITIVO — Reservas (adaptador pp-reservas)
   Formularios de consulta/cotización, calendario provisional (H7 lo reemplaza), «Mi cuenta › Reservas».
   Usa SOLO las variables --pp-* de la Oleada 1 (tokens.css). Prefijos: .pp-res*, .pp-cal*, .pp-sesion*, .pp-reserva*.
   Portado de prototipo/css/reservas.css (res-* → pp-*): ver recipes/primitivo/04-reservas-adaptador-primitivo.md §7.
   ============================================================ */

/* ---------- Contenedor ---------- */
.pp-res { padding: var(--pp-section-y) var(--pp-gutter); background: var(--pp-cloth-soft); scroll-margin-top: 110px; }
.pp-res__inner { max-width: 880px; margin: 0 auto; }
.pp-res--calendario .pp-res__inner { max-width: var(--pp-container); }
.pp-res__head { text-align: center; margin-bottom: var(--pp-space-16); }
.pp-res__title { font-family: var(--pp-font-display); font-weight: 400; font-size: var(--pp-fs-h2); line-height: var(--pp-lh-tight); color: var(--pp-ink); margin: 0; }
.pp-res__lead { max-width: 56ch; margin: var(--pp-space-8) auto 0; color: var(--pp-casa); font-size: var(--pp-fs-body); line-height: var(--pp-lh-body); }
.pp-res__admin { text-align: center; margin: 0 0 var(--pp-space-8); font-size: var(--pp-fs-xs); }
.pp-res__admin a { margin-left: .4rem; color: var(--pp-olive); }
.pp-res__nota { margin: var(--pp-space-8) auto 0; max-width: 68ch; text-align: center; font-size: var(--pp-fs-sm); color: var(--pp-casa); line-height: 1.55; }
.pp-res__politicas a { color: var(--pp-olive); font-weight: 600; }
.pp-res__prov { text-align: center; margin: var(--pp-space-12) 0 0; font-size: var(--pp-fs-xs); color: var(--pp-casa); }
.pp-res__vacia { color: var(--pp-casa); background: var(--pp-chalk); border: 1px dashed var(--pp-line-strong); border-radius: var(--pp-radius-md); padding: var(--pp-space-16); text-align: center; margin: 0; }
.pp-res__cerrado { background: var(--pp-chalk); border: 1px solid var(--pp-line); border-radius: var(--pp-radius-lg); padding: var(--pp-space-16); text-align: center; color: var(--pp-casa); box-shadow: var(--pp-shadow-sm); }

/* ---------- Formulario ---------- */
.pp-res__form { background: var(--pp-chalk); border: 1px solid var(--pp-line); border-radius: var(--pp-radius-lg); padding: clamp(1.1rem, 3vw, 2rem); box-shadow: var(--pp-shadow-sm); display: grid; gap: var(--pp-space-8); }
.pp-res__form[hidden] { display: none; }
.pp-res__fila { display: flex; flex-wrap: wrap; gap: var(--pp-space-8); }
.pp-res__campo { display: flex; flex-direction: column; gap: .35rem; flex: 1 1 100%; min-width: 0; }
.pp-res__campo--mitad { flex: 1 1 calc(50% - .5rem); }
@media (max-width: 600px) { .pp-res__campo--mitad { flex-basis: 100%; } }
.pp-res__label { font-size: var(--pp-fs-sm); font-weight: 500; color: var(--pp-ink); }
.pp-res__label span { color: var(--pp-rust); }
.pp-res input[type=text], .pp-res input[type=email], .pp-res input[type=tel], .pp-res input[type=number], .pp-res input[type=date], .pp-res select, .pp-res textarea {
  width: 100%; padding: .8rem 1rem; font: inherit; color: var(--pp-ink); background: var(--pp-chalk);
  border: 1.5px solid var(--pp-line); border-radius: var(--pp-radius-md); box-shadow: none; box-sizing: border-box;
  transition: border-color var(--pp-dur) var(--pp-ease), box-shadow var(--pp-dur) var(--pp-ease);
}
.pp-res textarea { min-height: 96px; resize: vertical; }
.pp-res input:focus, .pp-res select:focus, .pp-res textarea:focus { outline: none; border-color: var(--pp-olive); box-shadow: 0 0 0 3px color-mix(in srgb, var(--pp-olive) 18%, transparent); }
.pp-res__campo--error input, .pp-res__campo--error select, .pp-res__campo--error textarea { border-color: var(--pp-rust); }
.pp-res__campo--error .pp-res__label, .pp-res__campo--error .pp-res__check { color: var(--pp-rust); }
.pp-res__campo--check[hidden] { display: none; }
.pp-res__check { display: flex; gap: .6rem; align-items: flex-start; font-size: var(--pp-fs-sm); color: var(--pp-casa); line-height: 1.5; cursor: pointer; }
.pp-res__check input { width: 1.1rem; height: 1.1rem; margin-top: .15rem; accent-color: var(--pp-olive); flex: none; }
.pp-res__check a { color: var(--pp-olive); font-weight: 600; }
.pp-res__ayuda { margin: 0; font-size: var(--pp-fs-sm); color: var(--pp-casa); line-height: 1.5; }
.pp-res__hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.pp-res__estado { min-height: 1.2em; font-size: var(--pp-fs-sm); color: var(--pp-casa); }
.pp-res__estado--error { color: var(--pp-rust); font-weight: 500; }
.pp-res__estado--info { color: var(--pp-olive-dark); }

/* Valor de referencia / total */
.pp-res__referencia, .pp-res__precio { background: var(--pp-cloth-soft); border-radius: var(--pp-radius-md); padding: .8rem 1rem; }
.pp-res__referencia[hidden], .pp-res__precio:empty { display: none; }
.pp-res__lineas { list-style: none; margin: 0; padding: 0; display: grid; gap: .3rem; font-size: var(--pp-fs-sm); }
.pp-res__lineas li { display: flex; justify-content: space-between; gap: 1rem; }
.pp-res__total { display: flex; justify-content: space-between; margin: .5rem 0 0; padding-top: .5rem; border-top: 1px solid var(--pp-line-strong); font-size: 1.1rem; color: var(--pp-ink); }

/* Botones (pincelada de la marca) */
.pp-res__acciones { display: flex; flex-wrap: wrap; gap: var(--pp-space-8); justify-content: center; margin-top: var(--pp-space-4); }
.pp-res__btn { position: relative; isolation: isolate; display: inline-block; cursor: pointer; border: 0; background: transparent; font-family: var(--pp-font-body); font-weight: 600; font-size: .9rem; letter-spacing: .06em; text-decoration: none; padding: .95rem 2.2rem; line-height: 1.3; }
.pp-res__btn::before { content: ""; position: absolute; inset: -5px -3px; z-index: -1; background: var(--pp-brush-primary) center / 100% 100% no-repeat; transition: transform .55s var(--pp-ease), filter .55s var(--pp-ease); }
.pp-res__btn--sec::before { background-image: var(--pp-brush-secondary); opacity: .9; }
.pp-res__btn, .pp-res__btn:hover, .pp-res__btn:visited { color: var(--pp-chalk) !important; }
.pp-res__btn--peligro::before { background-image: var(--pp-brush-secondary); }
.pp-res__btn:hover::before { transform: rotate(-1.2deg) scale(1.035); filter: brightness(1.06); }
.pp-res__btn:disabled { opacity: .55; cursor: not-allowed; }
.pp-res__btn:focus-visible { outline: 2px solid var(--pp-olive); outline-offset: 6px; }

.pp-res__gracias { background: var(--pp-chalk); border: 1px solid var(--pp-line); border-left: 4px solid var(--pp-olive); border-radius: var(--pp-radius-lg); padding: var(--pp-space-16); text-align: center; }
.pp-res__gracias h3 { font-family: var(--pp-font-display); font-weight: 400; font-size: var(--pp-fs-h3); margin: 0 0 var(--pp-space-4); color: var(--pp-ink); }
.pp-res__gracias p { margin: .3rem 0; color: var(--pp-casa); }
.pp-res__codigo { font-weight: 600; color: var(--pp-olive-dark) !important; letter-spacing: .08em; }

/* ---------- Calendario provisional (portado del prototipo aprobado) ---------- */
.pp-res__cal-wrap { display: grid; grid-template-columns: minmax(300px, 380px) 1fr; gap: var(--pp-space-24); align-items: start; }
@media (max-width: 860px) { .pp-res__cal-wrap { grid-template-columns: 1fr; } }
.pp-cal { background: var(--pp-chalk); border: 1px solid var(--pp-line); border-radius: var(--pp-radius-lg); padding: var(--pp-space-16); box-shadow: var(--pp-shadow-sm); }
.pp-cal__cab { display: flex; align-items: center; justify-content: space-between; margin-bottom: var(--pp-space-12); }
.pp-cal__titulo::first-letter { text-transform: uppercase; }
.pp-cal__titulo { margin: 0; font-size: var(--pp-fs-h3); color: var(--pp-ink); text-transform: none; font-family: var(--pp-font-body); font-weight: 600; }
.pp-cal__nav { border: 1px solid var(--pp-line); border-radius: 50%; width: 36px; height: 36px; font-size: 1.2rem; color: var(--pp-casa); background: transparent; cursor: pointer; line-height: 1; }
.pp-cal__nav:disabled { opacity: .35; cursor: not-allowed; }
.pp-cal__rejilla { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; }
.pp-cal__dsem { font-size: var(--pp-fs-xs); text-transform: uppercase; letter-spacing: .08em; color: var(--pp-clay); text-align: center; padding: var(--pp-space-4) 0; }
.pp-cal__dia { border: 0; background: transparent; border-radius: var(--pp-radius-sm); padding: 10px 4px; cursor: pointer; color: var(--pp-ink); font-family: inherit; font-size: var(--pp-fs-body); position: relative; }
.pp-cal__dia:disabled { cursor: default; color: color-mix(in srgb, var(--pp-ink) 38%, transparent); }
.pp-cal__dia--disponible { background: var(--pp-cloth-soft); color: var(--pp-olive-dark); font-weight: 600; }
.pp-cal__dia--pocos { background: color-mix(in srgb, var(--pp-sunset) 55%, var(--pp-chalk)); color: var(--pp-dune-dark); font-weight: 600; }
.pp-cal__dia--disponible:hover, .pp-cal__dia--pocos:hover { background: color-mix(in srgb, var(--pp-sage) 40%, var(--pp-cloth-soft)); }
.pp-cal__dia--completo { background: color-mix(in srgb, var(--pp-mustard) 28%, var(--pp-chalk)); }
.pp-cal__dia--pasado { opacity: .4; }
.pp-cal__dia--hoy { outline: 2px solid var(--pp-dune); outline-offset: -2px; }
.pp-cal__dia--seleccionado { background: var(--pp-olive) !important; color: var(--pp-chalk) !important; }
.pp-cal__leyenda { display: flex; flex-wrap: wrap; gap: .4rem var(--pp-space-12); align-items: center; margin: var(--pp-space-12) 0 0; font-size: var(--pp-fs-xs); color: var(--pp-casa); }
.pp-cal__item { display: inline-flex; align-items: center; white-space: nowrap; }
.pp-cal__punto { display: inline-block; width: 10px; height: 10px; border-radius: 50%; margin-right: 4px; }
.pp-cal__punto--disp { background: var(--pp-sage); } .pp-cal__punto--pocos { background: var(--pp-sunset); } .pp-cal__punto--lleno { background: var(--pp-mustard); }

/* ---------- Franjas del día ---------- */
.pp-res__panel { display: grid; gap: var(--pp-space-12); }
.pp-res__dia-titulo { margin: 0 0 var(--pp-space-8); font-size: var(--pp-fs-h3); color: var(--pp-ink); text-transform: none; font-family: var(--pp-font-body); font-weight: 600; }
.pp-res__dia-titulo::first-letter { text-transform: uppercase; }
.pp-sesiones { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--pp-space-8); }
.pp-sesion { display: flex; gap: var(--pp-space-12); align-items: center; justify-content: space-between; background: var(--pp-chalk); border: 1px solid var(--pp-line); border-radius: var(--pp-radius-md); padding: var(--pp-space-8) var(--pp-space-12); box-shadow: var(--pp-shadow-sm); }
.pp-sesion--completa { opacity: .7; }
.pp-sesion--elegida { border-color: var(--pp-olive); box-shadow: 0 0 0 2px color-mix(in srgb, var(--pp-olive) 25%, transparent); }
.pp-sesion__info strong { display: block; color: var(--pp-ink); }
.pp-sesion__info span { display: block; color: var(--pp-casa); font-size: var(--pp-fs-sm); margin-top: 2px; }

/* ---------- Mi cuenta › Reservas ---------- */
.pp-cuenta-reservas__titulo { font-family: var(--pp-font-display); font-weight: 400; font-size: var(--pp-fs-h3); color: var(--pp-ink); margin: 0 0 var(--pp-space-12); }
.pp-cuenta-reservas__vacio, .pp-cuenta-reservas__nota { color: var(--pp-casa); font-size: var(--pp-fs-sm); }
.pp-cuenta-reservas__flash { border-radius: var(--pp-radius-md); padding: .7rem 1rem; margin: 0 0 var(--pp-space-12); font-size: var(--pp-fs-sm); }
.pp-cuenta-reservas__flash--ok { background: color-mix(in srgb, var(--pp-sage) 30%, var(--pp-chalk)); color: var(--pp-olive-dark); }
.pp-cuenta-reservas__flash--err { background: color-mix(in srgb, var(--pp-sunset) 55%, var(--pp-chalk)); color: var(--pp-rust); }
.pp-reservas-lista, .pp-reservas-lista > li { list-style: none !important; }
.pp-reservas-lista { list-style: none; margin: 0 0 var(--pp-space-12); padding: 0; display: grid; gap: var(--pp-space-8); }
.pp-reserva-card { background: var(--pp-chalk); border: 1px solid var(--pp-line); border-left: 4px solid var(--pp-olive); border-radius: var(--pp-radius-md); padding: var(--pp-space-12) var(--pp-space-16); box-shadow: var(--pp-shadow-sm); }
.pp-reserva-card--cancelada, .pp-reserva-card--no_show { border-left-color: var(--pp-clay); opacity: .85; }
.pp-reserva-card--solicitud, .pp-reserva-card--apartada, .pp-reserva-card--pendiente_pago { border-left-color: var(--pp-mustard); }
.pp-reserva-card__cab { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: .5rem; }
.pp-reserva-card__titulo { color: var(--pp-ink); font-size: 1.05rem; }
.pp-reserva-card__estado { font-size: var(--pp-fs-xs); font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: var(--pp-olive-dark); }
.pp-reserva-card__datos { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: .4rem 1rem; margin: .6rem 0; }
.pp-reserva-card__datos div { display: flex; flex-direction: column; }
.pp-reserva-card__datos dt { font-size: var(--pp-fs-xs); text-transform: uppercase; letter-spacing: .08em; color: var(--pp-clay); }
.pp-reserva-card__datos dd { margin: 0; color: var(--pp-ink); }
.pp-reserva-card__acciones { display: flex; flex-wrap: wrap; gap: var(--pp-space-12); align-items: center; }
.pp-reserva-card__acciones .pp-res__btn { padding: .65rem 1.4rem; font-size: .8rem; }
.pp-cuenta-reservas__paginas { display: flex; justify-content: space-between; margin: var(--pp-space-8) 0; }
.pp-cuenta-reservas__paginas a { color: var(--pp-olive); font-weight: 600; }
