/* Punto Cabrera Core — component styles. Uses theme presets when present, with brand fallbacks. */
:root {
	--punto-navy: var(--wp--preset--color--navy, #0a2240);
	--punto-navy-2: var(--wp--preset--color--navy-2, #12345e);
	--punto-gold: var(--wp--preset--color--gold, #f2b33d);
	--punto-gold-soft: var(--wp--preset--color--gold-soft, #fbe3a6);
	--punto-ocean: var(--wp--preset--color--ocean, #0f5f96);
	--punto-turquoise: var(--wp--preset--color--turquoise, #1fb3c2);
	--punto-cream: var(--wp--preset--color--cream, #fffcf5);
	--punto-sand: var(--wp--preset--color--sand, #f6ebd3);
	--punto-red: var(--wp--preset--color--coral, #b42d24);
	--punto-ink: var(--wp--preset--color--ink, #13233a);
	--punto-muted: var(--wp--preset--color--muted, #4a5a70);
	--punto-line: rgba(10, 34, 64, 0.16);
	--punto-radius: 14px;
	--punto-focus: 0 0 0 3px var(--punto-cream), 0 0 0 6px var(--punto-ocean);
}

[hidden] { display: none !important; }
:where(.punto-reserve, .punto-menu, .punto-contact, .punto-strip, .punto-cards, .punto-gallery, .punto-lightbox, .punto-footer, .punto-hours, .punto-map, .punto-notice), :where(.punto-reserve, .punto-menu, .punto-contact, .punto-strip, .punto-cards, .punto-gallery, .punto-lightbox, .punto-footer, .punto-hours, .punto-map, .punto-notice) * { box-sizing: border-box; }

.screen-reader-text {
	border: 0; clip: rect(1px, 1px, 1px, 1px); clip-path: inset(50%); height: 1px; margin: -1px;
	overflow: hidden; padding: 0; position: absolute !important; width: 1px; word-wrap: normal !important;
}

.punto-icon { flex: none; vertical-align: middle; }

/* Buttons */
.punto-btn-row { display: flex; flex-wrap: wrap; gap: 0.75rem; margin: 1.5rem 0 0; }
.punto-btn-row--center { justify-content: center; }
.punto-btn {
	display: inline-flex; align-items: center; gap: 0.55rem; min-height: 48px; padding: 0.7rem 1.35rem;
	border-radius: 999px; border: 2px solid transparent; font-weight: 800; font-size: 1rem; line-height: 1.2;
	text-decoration: none; cursor: pointer; transition: background-color .2s, color .2s, border-color .2s, transform .2s;
}
.punto-btn:focus-visible { outline: none; box-shadow: var(--punto-focus); }
.punto-btn--gold { background: var(--punto-gold); color: var(--punto-navy); }
.punto-btn--gold:hover { background: var(--punto-gold-soft); color: var(--punto-navy); }
.punto-btn--outline { border-color: currentColor; color: inherit; background: transparent; }
.punto-btn--outline:hover { background: rgba(255, 255, 255, 0.12); }
.punto-btn--ghost { color: inherit; background: rgba(10, 34, 64, 0.06); }
.punto-btn--ghost:hover { background: rgba(10, 34, 64, 0.12); }
.is-dark .punto-btn--ghost, .punto-hero .punto-btn--ghost, .punto-band--navy .punto-btn--ghost { background: rgba(255, 255, 255, 0.1); }
.punto-hero .punto-btn--ghost:hover, .punto-band--navy .punto-btn--ghost:hover { background: rgba(255, 255, 255, 0.2); }
.punto-btn[disabled] { opacity: .6; cursor: progress; }
@media (prefers-reduced-motion: no-preference) { .punto-btn:hover { transform: translateY(-1px); } }

/* Notices */
.punto-notice { border-radius: var(--punto-radius); padding: 1rem 1.25rem; margin: 0 0 1.5rem; border-left: 6px solid var(--punto-ocean); background: #eef6fb; color: var(--punto-ink); }
.punto-notice p { margin: 0 0 .5rem; }
.punto-notice p:last-child { margin-bottom: 0; }
.punto-notice--success { border-color: #1d7a4c; background: #e8f6ee; }
.punto-notice--error { border-color: var(--punto-red); background: #fdeceb; }
.punto-notice--admin { border-color: var(--punto-gold); background: #fff6e0; font-size: .95rem; }
.punto-notice:focus { outline: none; box-shadow: var(--punto-focus); }
.punto-notice ul { margin: .25rem 0 0 1.2rem; }

/* Info strip */
.punto-strip {
	list-style: none; margin: 0 auto; padding: 1.1rem 1.5rem; display: grid; gap: 1rem;
	grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); background: #fff; border-radius: var(--punto-radius);
	box-shadow: 0 18px 40px -24px rgba(10, 34, 64, .45); color: var(--punto-ink); position: relative; z-index: 2;
}
.punto-strip li { display: flex; gap: .8rem; align-items: center; }
.punto-strip .punto-icon { width: 40px; height: 40px; padding: 9px; border-radius: 50%; background: var(--punto-navy); color: var(--punto-gold); }
.punto-strip__label { display: block; font-size: .85rem; color: var(--punto-muted); }
.punto-strip a { color: var(--punto-navy); font-weight: 800; text-decoration-color: var(--punto-turquoise); text-underline-offset: 3px; }

/* Cards */
.punto-cards { list-style: none; margin: 2rem 0 0; padding: 0; display: grid; gap: 1.5rem; grid-template-columns: repeat(auto-fill, minmax(min(100%, 280px), 1fr)); }
.punto-card { display: flex; flex-direction: column; background: #fff; border-radius: var(--punto-radius); overflow: hidden; border: 1px solid var(--punto-line); }
.punto-card__img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; display: block; }
.punto-card--text { border-top: 5px solid var(--punto-gold); }
.punto-card--text .punto-card__body { padding-top: 1.4rem; }
.punto-card__placeholder {
	aspect-ratio: 16 / 7; display: grid; place-items: center; color: var(--punto-gold);
	background: radial-gradient(circle at 30% 120%, var(--punto-ocean), var(--punto-navy) 70%);
}
.punto-card__placeholder .punto-icon { width: 56px; height: 56px; opacity: .9; }
.punto-card__body { padding: 1.1rem 1.25rem 1.3rem; display: flex; flex-direction: column; gap: .4rem; flex: 1; }
.punto-card__title { margin: 0; font-size: 1.3rem; line-height: 1.2; color: var(--punto-navy); }
.punto-card__text { margin: 0; color: var(--punto-muted); font-size: .97rem; }
.punto-card__price { margin-top: auto; padding-top: .5rem; }
.punto-card__meta { margin: 0; font-size: .85rem; color: var(--punto-muted); }
.punto-card--special { border: 2px solid var(--punto-gold); }

/* Price */
.punto-price { display: inline-flex; flex-wrap: wrap; align-items: baseline; justify-content: flex-end; gap: .1rem .35rem; text-align: right; }
.punto-price__amount { font-weight: 800; color: var(--punto-navy); font-variant-numeric: tabular-nums; white-space: nowrap; }
.punto-price__unit { font-weight: 700; color: var(--punto-navy); }
.punto-price__ask { font-weight: 700; color: var(--punto-ocean); white-space: nowrap; }
.punto-price__note { flex-basis: 100%; font-size: .8rem; color: var(--punto-red); font-weight: 600; }
.punto-card .punto-price { justify-content: flex-start; text-align: left; }

/* Menu */
.punto-menu { --punto-menu-gap: 2.5rem; }
.punto-menu__tools { display: grid; gap: .5rem; margin-bottom: 1rem; }
.punto-menu__search label { display: block; font-weight: 800; margin-bottom: .35rem; color: var(--punto-navy); }
.punto-menu__search-box { position: relative; max-width: 520px; }
.punto-menu__search-box .punto-icon { position: absolute; left: 14px; top: 50%; transform: translateY(-50%); color: var(--punto-ocean); }
.punto-menu__search input {
	width: 100%; min-height: 50px; padding: .7rem 1rem .7rem 2.75rem; border-radius: 999px; font: inherit;
	border: 2px solid var(--punto-line); background: #fff; color: var(--punto-ink);
}
.punto-menu__search input:focus { outline: none; border-color: var(--punto-ocean); box-shadow: var(--punto-focus); }
.punto-menu__count { margin: 0; min-height: 1.4em; font-size: .9rem; color: var(--punto-muted); }
.punto-menu__cats { position: sticky; top: var(--punto-sticky-top, 0px); z-index: 5; background: var(--punto-cream); margin: 0 -1rem 1.5rem; padding: .6rem 1rem; border-bottom: 1px solid var(--punto-line); }
.punto-menu__cats ul { list-style: none; margin: 0; padding: 0; display: flex; gap: .45rem; overflow-x: auto; scrollbar-width: thin; align-items: center; }
.punto-menu:not(.is-enhanced) .punto-menu__cats { position: static; }
.punto-menu:not(.is-enhanced) .punto-menu__cats ul { flex-wrap: wrap; overflow: visible; }
.punto-menu__cats-label { font-size: .8rem; font-weight: 800; color: var(--punto-muted); padding: 0 .25rem 0 .6rem; white-space: nowrap; }
.punto-chip {
	display: inline-flex; align-items: center; min-height: 40px; padding: .35rem .9rem; border-radius: 999px; white-space: nowrap;
	border: 1.5px solid var(--punto-line); background: #fff; color: var(--punto-navy); font-weight: 700; font-size: .93rem; text-decoration: none;
}
.punto-chip:hover { border-color: var(--punto-navy); }
.punto-chip[aria-current="true"] { background: var(--punto-navy); color: #fff; border-color: var(--punto-navy); }
.punto-chip:focus-visible { outline: none; box-shadow: var(--punto-focus); }
.punto-menu__group + .punto-menu__group { margin-top: var(--punto-menu-gap); }
.punto-menu__group-title { font-size: clamp(2rem, 4vw, 2.75rem); margin: 0 0 .5rem; color: var(--punto-navy); }
.punto-menu__cat { scroll-margin-top: 140px; margin-top: 2rem; }
.punto-menu__cat-title {
	display: flex; align-items: center; gap: .8rem; font-size: 1.5rem; margin: 0 0 .75rem; color: var(--punto-ocean);
}
.punto-menu__cat-title::after { content: ""; flex: 1; height: 2px; background: repeating-linear-gradient(90deg, var(--punto-turquoise) 0 10px, transparent 10px 16px); opacity: .6; }
.punto-menu__list { list-style: none; margin: 0; padding: 0; display: grid; gap: 0 2.5rem; }
@media (min-width: 900px) { .punto-menu__list { grid-template-columns: 1fr 1fr; } }
.punto-dish { display: grid; grid-template-columns: auto 1fr auto; gap: .9rem; align-items: start; padding: .85rem 0; border-bottom: 1px dashed var(--punto-line); }
.punto-dish:not(.punto-dish--photo) { grid-template-columns: 1fr auto; }
.punto-dish__photo { display: block; width: 72px; height: 72px; border-radius: 12px; overflow: hidden; }
.punto-dish__photo img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .3s; }
.punto-dish__photo:focus-visible { outline: none; box-shadow: var(--punto-focus); }
@media (prefers-reduced-motion: no-preference) { .punto-dish__photo:hover img { transform: scale(1.06); } }
.punto-dish__name { margin: 0; font-family: inherit; font-size: 1.05rem; font-weight: 800; line-height: 1.3; color: var(--punto-ink); }
.punto-dish__alt { margin: .1rem 0 0; font-size: .86rem; font-style: italic; color: var(--punto-muted); }
.punto-dish__desc { margin: .25rem 0 0; font-size: .93rem; color: var(--punto-muted); line-height: 1.45; }
.punto-dish__price { padding-top: .1rem; max-width: 11rem; }
.punto-dish__tags { list-style: none; display: flex; flex-wrap: wrap; gap: .3rem; margin: .4rem 0 0; padding: 0; }
.punto-tag { font-size: .75rem; font-weight: 700; padding: .1rem .55rem; border-radius: 999px; background: #e3f5f7; color: #0d5961; }
.punto-tag--spicy { background: #fde8e6; color: var(--punto-red); }
.punto-badge { display: inline-block; font-size: .72rem; font-weight: 800; padding: .1rem .5rem; border-radius: 6px; margin-top: .25rem; }
.punto-badge--pending { background: #fff1c9; color: #6b4b00; }
.punto-menu__empty { padding: 1.5rem; text-align: center; background: #fff; border-radius: var(--punto-radius); }
.punto-menu__legal { margin-top: 2.5rem; font-size: .9rem; color: var(--punto-muted); border-top: 1px solid var(--punto-line); padding-top: 1rem; }

/* Form */
.punto-form { background: #fff; border-radius: calc(var(--punto-radius) + 4px); padding: clamp(1.25rem, 3vw, 2rem); border: 1px solid var(--punto-line); box-shadow: 0 24px 50px -36px rgba(10, 34, 64, .5); }
.punto-form__grid { display: grid; gap: 1.1rem 1.25rem; grid-template-columns: 1fr; }
@media (min-width: 640px) { .punto-form__grid { grid-template-columns: 1fr 1fr; } }
.punto-field--wide { grid-column: 1 / -1; }
.punto-field label { display: block; font-weight: 800; margin-bottom: .35rem; color: var(--punto-navy); }
.punto-field input, .punto-field select, .punto-field textarea {
	width: 100%; min-height: 48px; padding: .65rem .85rem; font: inherit; color: var(--punto-ink); background: #fff;
	border: 2px solid #8a97a8; border-radius: 10px;
}
.punto-field textarea { min-height: 96px; resize: vertical; }
.punto-field input:focus, .punto-field select:focus, .punto-field textarea:focus { outline: none; border-color: var(--punto-ocean); box-shadow: var(--punto-focus); }
.punto-field [aria-invalid="true"] { border-color: var(--punto-red); }
.punto-field__hint { margin: .3rem 0 0; font-size: .85rem; color: var(--punto-muted); }
.punto-field__hint:empty { display: none; }
#punto-date-msg { color: var(--punto-red); font-weight: 700; }
.punto-field__error { margin: .35rem 0 0; font-size: .9rem; font-weight: 700; color: var(--punto-red); }
.punto-req { color: var(--punto-red); font-weight: 800; }
.punto-form__required { margin: 0 0 1rem; font-size: .9rem; color: var(--punto-muted); }
.punto-form__privacy, .punto-form__note { font-size: .9rem; color: var(--punto-muted); margin: 1.1rem 0 0; }
.punto-form__note { background: var(--punto-sand); padding: .7rem 1rem; border-radius: 10px; color: var(--punto-ink); }
.punto-form__actions { margin-top: 1.25rem; }
.punto-form__actions .punto-btn { width: 100%; justify-content: center; }
@media (min-width: 640px) { .punto-form__actions .punto-btn { width: auto; } }
.punto-hp { position: absolute !important; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.punto-form__live:empty { display: none; }
.punto-form__live { margin-top: .75rem; font-weight: 700; color: var(--punto-ocean); }

/* Contact & hours */
.punto-contact__list { list-style: none; margin: 0; padding: 0; display: grid; gap: 1rem; }
.punto-contact__list li { display: flex; gap: .9rem; align-items: flex-start; }
.punto-contact__list .punto-icon { width: 42px; height: 42px; padding: 10px; border-radius: 50%; background: var(--punto-navy); color: var(--punto-gold); }
.punto-contact__label { display: block; font-size: .85rem; font-weight: 700; color: var(--punto-muted); }
.punto-contact__list a { font-weight: 800; font-size: 1.1rem; color: var(--punto-navy); }
.punto-hours__table { width: 100%; border-collapse: collapse; background: #fff; border-radius: var(--punto-radius); overflow: hidden; }
.punto-hours__table caption { text-align: left; font-weight: 800; font-size: 1.25rem; padding: 0 0 .6rem; color: var(--punto-navy); font-family: var(--wp--preset--font-family--display, inherit); }
.punto-hours__table th, .punto-hours__table td { padding: .6rem 1rem; border-bottom: 1px solid var(--punto-line); text-align: left; }
.punto-hours__table td { text-align: right; font-variant-numeric: tabular-nums; }
.punto-hours__note { font-size: .9rem; color: var(--punto-muted); }
.punto-social { list-style: none; display: flex; gap: .6rem; margin: 1.25rem 0 0; padding: 0; }
.punto-social a { display: grid; place-items: center; width: 44px; height: 44px; border-radius: 50%; background: var(--punto-navy); color: var(--punto-gold); }
.punto-social a:focus-visible { outline: none; box-shadow: var(--punto-focus); }

/* Map */
.punto-map { margin-top: 1.5rem; padding: 1.25rem; border-radius: var(--punto-radius); background: var(--punto-sand); }
.punto-map.is-loaded { padding: 0; overflow: hidden; }
.punto-map iframe { display: block; width: 100%; height: 360px; border: 0; }

/* Gallery */
.punto-gallery { list-style: none; margin: 2rem 0 0; padding: 0; display: grid; gap: .75rem; grid-template-columns: repeat(auto-fill, minmax(min(46%, 260px), 1fr)); }
.punto-gallery a { display: block; border-radius: 12px; overflow: hidden; }
.punto-gallery img { width: 100%; aspect-ratio: 1; object-fit: cover; display: block; transition: transform .4s; }
.punto-gallery a:focus-visible { outline: none; box-shadow: var(--punto-focus); }
@media (prefers-reduced-motion: no-preference) { .punto-gallery a:hover img { transform: scale(1.04); } }

/* Lightbox */
.punto-lightbox { border: 0; padding: 0; background: transparent; max-width: 100vw; max-height: 100vh; width: 100vw; height: 100vh; }
.punto-lightbox::backdrop { background: rgba(5, 16, 32, .92); }
.punto-lightbox__figure { margin: 0; height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 4rem 1rem 1rem; }
.punto-lightbox__figure img { max-width: min(1100px, 92vw); max-height: 78vh; object-fit: contain; border-radius: 8px; }
.punto-lightbox figcaption { color: #fff; margin-top: .75rem; text-align: center; }
.punto-lightbox__btn { position: fixed; display: grid; place-items: center; width: 52px; height: 52px; border-radius: 50%; border: 0; background: var(--punto-gold); color: var(--punto-navy); cursor: pointer; }
.punto-lightbox__btn:focus-visible { outline: none; box-shadow: 0 0 0 3px #fff, 0 0 0 6px var(--punto-turquoise); }
.punto-lightbox__close { top: 1rem; right: 1rem; }
.punto-lightbox__prev { left: 1rem; top: 50%; transform: translateY(-50%); }
.punto-lightbox__next { right: 1rem; top: 50%; transform: translateY(-50%); }
@media (prefers-reduced-motion: no-preference) {
	.punto-lightbox[open] { animation: punto-fade .2s ease-out; }
	@keyframes punto-fade { from { opacity: 0; } to { opacity: 1; } }
}

/* Language switcher */
.punto-lang ul { list-style: none; display: flex; gap: .2rem; margin: 0; padding: 3px; border-radius: 999px; border: 1.5px solid currentColor; }
.punto-lang a { display: grid; place-items: center; min-width: 40px; min-height: 34px; padding: 0 .5rem; border-radius: 999px; font-weight: 800; font-size: .85rem; color: inherit; text-decoration: none; }
.punto-lang a[aria-current="true"] { background: var(--punto-navy); color: var(--punto-gold); }
.punto-lang a:focus-visible { outline: none; box-shadow: var(--punto-focus); }

/* Brand */
.punto-brand { display: inline-flex; align-items: center; gap: .75rem; text-decoration: none; color: inherit; }
.punto-brand img { width: 64px; height: 64px; border-radius: 50%; clip-path: circle(47.5%); display: block; }
.punto-brand__text { display: flex; flex-direction: column; line-height: 1; }
.punto-brand__small { font-size: .78rem; font-weight: 800; letter-spacing: .04em; color: var(--punto-ocean); }
.punto-brand__big { font-family: var(--wp--preset--font-family--script, cursive); font-size: 1.45rem; color: var(--punto-navy); margin-top: .15rem; }
.punto-brand:focus-visible { outline: none; box-shadow: var(--punto-focus); border-radius: 999px; }

/* Footer */
.punto-footer { display: grid; gap: 2rem; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }
.punto-footer__logo img { width: 132px; height: 132px; border-radius: 50%; clip-path: circle(47.5%); background: #fff; display: block; }
.punto-footer__title { font-size: 1.2rem; margin: 0 0 .75rem; color: var(--punto-gold); }
.punto-footer__links { list-style: none; margin: 0 0 1.25rem; padding: 0; display: grid; gap: .45rem; }
.punto-footer a { color: #fff; }
.punto-footer a:hover { color: var(--punto-gold-soft); }
.punto-footer__phone { display: inline-flex; gap: .5rem; align-items: center; font-weight: 800; font-size: 1.15rem; }
.punto-footer .punto-hours__table { background: transparent; color: #fff; }
.punto-footer .punto-hours__table caption { color: var(--punto-gold); font-size: 1.2rem; }
.punto-footer .punto-hours__table th, .punto-footer .punto-hours__table td { padding: .3rem 0; border-color: rgba(255,255,255,.15); font-size: .92rem; }
.punto-footer .punto-social a { background: rgba(255,255,255,.1); }
.punto-footer .punto-hours__note { color: #c9d4e3; }
.punto-footer .punto-lang a[aria-current="true"] { background: var(--punto-gold); color: var(--punto-navy); }
.punto-footer__bottom { border-top: 1px solid rgba(255,255,255,.15); margin-top: 2.5rem; padding-top: 1.25rem; font-size: .88rem; color: #c9d4e3; }
.punto-footer__bottom p { margin: 0; }

.punto-nav-fallback ul { list-style: none; display: flex; flex-wrap: wrap; gap: 1rem; margin: 0; padding: 0; }
.punto-editor-empty { padding: 1rem; border: 1px dashed #999; font-size: 13px; }
