:root { --ink:#100d0e; --wine:#261416; --rose:#d9939a; --gold:#eac2b8; --cream:#f9eded; --muted:#cbaaaa; }
* { box-sizing:border-box; } html { scroll-behavior:smooth; } body { margin:0; background:var(--ink); color:var(--cream); font-family:"DM Sans",sans-serif; } .container { width:min(1120px, calc(100% - 40px)); margin:auto; }.site-header { display:flex; justify-content:space-between; align-items:center; padding:24px 0; }.brand { color:var(--cream); font-family:"Playfair Display",serif; font-size:1.2rem; text-decoration:none; }.brand span { display:inline-grid; place-items:center; width:34px; height:34px; margin-right:8px; border:1px solid var(--rose); border-radius:50%; color:var(--rose); }.header-link,.text-link { color:var(--gold); text-decoration:none; }.hero { display:grid; grid-template-columns:1.1fr .9fr; gap:60px; align-items:center; min-height:610px; }.eyebrow { color:var(--rose); text-transform:uppercase; font-size:.75rem; letter-spacing:.18em; font-weight:700; }.hero h1,h2,h3 { font-family:"Playfair Display",serif; }.hero h1 { font-size:clamp(3.2rem,7vw,6.4rem); line-height:.97; margin:16px 0 26px; font-weight:500; }.hero h1 em { color:var(--rose); font-weight:500; }.intro { max-width:470px; color:var(--muted); font-size:1.08rem; line-height:1.7; }.hero-actions { display:flex; gap:28px; align-items:center; margin-top:36px; }.button { border:0; display:inline-block; padding:15px 25px; border-radius:100px; background:linear-gradient(100deg,#b96573,#e8a4aa); color:#201012; font-weight:700; text-decoration:none; cursor:pointer; }.hero-art { min-height:470px; border:1px solid #6f464d; display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; border-radius:50% 50% 10% 10%; background:radial-gradient(circle at 50% 45%,#48262c 0%,#1a1011 44%,#100d0e 72%); box-shadow:0 0 70px #9b526e33; }.monogram { font-family:"Playfair Display",serif; font-size:7.5rem; line-height:.75; color:var(--gold); letter-spacing:-.17em; transform:translateX(-.35em); }.hero-art p { margin:38px 0 12px; font-family:"Playfair Display",serif; font-size:3.6rem; line-height:.6; color:var(--gold); }.hero-art p span { font-size:2.1rem; font-style:italic; }.hero-art small { color:var(--rose); letter-spacing:.25em; text-transform:uppercase; }.section { padding:110px 0; }.section-heading { max-width:620px; }.section h2,.reservation h2,.promotion h2 { font-size:clamp(2.1rem,4vw,3.5rem); margin:8px 0 15px; font-weight:500; }.section-heading>p:last-child { color:var(--muted); }.service-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:18px; margin-top:42px; }.service-card { padding:32px; border:1px solid #5b3d40; border-radius:12px; background:linear-gradient(150deg,#221214,#140f10); }.service-number { color:var(--rose); }.service-card h3 { font-size:1.65rem; margin:14px 0 10px; }.service-card>p:not(.service-number) { color:var(--muted); line-height:1.6; min-height:75px; }.service-meta { display:flex; justify-content:space-between; border-top:1px solid #5b3d40; padding-top:18px; color:var(--muted); }.service-meta strong { color:var(--gold); font-size:1.2rem; }.promotion { padding:86px 0; text-align:center; background:linear-gradient(120deg,#3e1c22,#9f5663,#3e1c22); }.promotion h2 { margin-inline:auto; max-width:700px; }.promotion p { color:#f5d8d4; }.promotion strong { display:inline-block; margin-top:14px; color:var(--cream); font-family:"Playfair Display",serif; font-size:2rem; }.gallery-placeholder { height:260px; display:grid; place-content:center; text-align:center; border:1px dashed #87515a; border-radius:12px; color:var(--muted); background:#160f10; }.gallery-placeholder span { color:var(--rose); font-size:2rem; }.reservation { display:grid; grid-template-columns:.85fr 1.15fr; gap:60px; padding:85px 0 110px; }.reservation>div>p:last-child { color:var(--muted); line-height:1.7; }.booking-form { display:grid; grid-template-columns:1fr 1fr; gap:16px; }.booking-form label { display:grid; gap:7px; color:var(--gold); font-size:.85rem; }.booking-form label:nth-child(6),.booking-form button { grid-column:1/-1; }.booking-form input,.booking-form select,.booking-form textarea { width:100%; border:1px solid #68434a; border-radius:7px; padding:12px; background:#180f10; color:var(--cream); font:inherit; }.site-footer { padding:30px; border-top:1px solid #3d292b; text-align:center; }.site-footer span { font-family:"Playfair Display",serif; font-size:1.5rem; color:var(--gold); }.site-footer p { color:var(--muted); font-size:.8rem; }.confirmation { min-height:100vh; display:grid; place-items:center; text-align:center; }.confirmation main { max-width:550px; padding:30px; }.confirmation h1 { font-family:"Playfair Display",serif; font-size:3rem; }.confirmation p:not(.eyebrow) { color:var(--muted); line-height:1.7; margin-bottom:30px; }
@media(max-width:700px) { .site-header{padding:18px 0}.header-link{font-size:.85rem}.hero,.reservation { grid-template-columns:1fr; gap:38px; }.hero { padding:55px 0 75px; min-height:auto; }.hero-art { min-height:340px; }.hero-art p { font-size:3rem; }.section { padding:72px 0; }.service-grid { grid-template-columns:1fr; }.service-card>p:not(.service-number){min-height:auto}.booking-form { grid-template-columns:1fr; }.booking-form label:nth-child(6),.booking-form button { grid-column:auto; }.reservation { padding:70px 0; }.hero-actions { gap:18px; flex-wrap:wrap; } }

.gallery-grid { display:grid; grid-template-columns:1.5fr 1fr 1fr; grid-template-rows:245px 245px; gap:16px; margin-top:42px; }.gallery-item { position:relative; overflow:hidden; margin:0; border-radius:12px; background:#1a1011; }.gallery-item--large { grid-row:span 2; }.gallery-item img { width:100%; height:100%; display:block; object-fit:cover; transition:transform .3s ease; }.gallery-item:hover img { transform:scale(1.04); }.gallery-item figcaption { position:absolute; inset:auto 0 0; padding:34px 16px 15px; background:linear-gradient(transparent,rgba(10,6,7,.9)); color:var(--cream); font-size:.85rem; }
@media(max-width:700px) { .gallery-grid { grid-template-columns:1fr 1fr; grid-template-rows:260px 180px 180px; }.gallery-item--large { grid-row:span 1; grid-column:span 2; } }

.site-header { gap:24px; }.site-nav { display:flex; gap:22px; }.site-nav a { color:var(--gold); text-decoration:none; font-size:.9rem; }.site-nav a.is-active { color:var(--rose); }.page-content { min-height:calc(100vh - 170px); }.page-heading h1,.reservation h1 { font-family:"Playfair Display",serif; font-size:clamp(2.1rem,4vw,3.5rem); margin:8px 0 15px; font-weight:500; }.page-heading>p:last-child { color:var(--muted); }.service-grid--page { margin:0 0 110px; }.service-card h2 { font-size:1.65rem; margin:14px 0 10px; font-family:"Playfair Display",serif; }.service-meta { margin-bottom:17px; }.gallery-grid--page { margin:0 0 110px; }.reservation--page { padding-top:90px; }.home-preview { display:flex; align-items:end; justify-content:space-between; gap:30px; }.preview-actions { display:flex; gap:15px; }.preview-actions a { border:1px solid #70464d; padding:13px 18px; border-radius:100px; color:var(--gold); text-decoration:none; }.light-link { color:var(--cream); display:inline-block; margin-top:24px; }
@media(max-width:700px) { .site-header { align-items:flex-start; }.site-nav { gap:12px; flex-wrap:wrap; justify-content:flex-end; }.site-nav a { font-size:.78rem; }.home-preview { display:block; }.preview-actions { margin-top:28px; } }

body { background:radial-gradient(circle at 86% 10%, rgba(185, 101, 115, .2), transparent 23rem), radial-gradient(circle at 8% 36%, rgba(225, 174, 163, .1), transparent 26rem), #100d0e; }.brand { display:flex; align-items:center; gap:9px; }.brand span { margin:0; }.brand-mark { width:45px; height:45px; object-fit:cover; object-position:center; border-radius:50%; border:1px solid #b97379; box-shadow:0 0 16px rgba(231,159,165,.25); }.hero-banner { position:relative; overflow:hidden; border-radius:20px 20px 70px 20px; background:#120b0c; box-shadow:0 24px 55px rgba(0,0,0,.42), 0 0 0 1px rgba(231,167,170,.22); }.hero-banner img { width:100%; height:100%; min-height:470px; object-fit:cover; object-position:center; display:block; opacity:.92; }.hero-banner:after { content:""; position:absolute; inset:0; background:linear-gradient(135deg, rgba(13,8,9,.26), transparent 48%, rgba(216,137,145,.13)); pointer-events:none; }.hero-banner-shine { position:absolute; z-index:1; width:180px; height:180px; top:-30px; right:-35px; border:1px solid rgba(255,222,215,.52); border-radius:50%; box-shadow:0 0 45px rgba(247,189,190,.4); }.brand-banner { display:grid; grid-template-columns:260px 1fr; align-items:center; gap:46px; margin:12px auto 40px; padding:20px; overflow:hidden; border:1px solid rgba(222,156,160,.32); border-radius:18px; background:linear-gradient(110deg, rgba(60,26,31,.9), rgba(18,12,13,.94)); box-shadow:inset 0 1px rgba(255,220,215,.12); }.brand-banner img { width:100%; aspect-ratio:1; object-fit:cover; border-radius:11px; }.brand-banner h2 { font-family:"Playfair Display",serif; font-size:clamp(2rem,4vw,3rem); font-weight:500; margin:8px 0; }.brand-banner p:not(.eyebrow) { color:var(--muted); line-height:1.7; max-width:560px; }.brand-banner .text-link { display:inline-block; margin-top:8px; }
@media(max-width:700px) { .brand span { display:none; }.brand-mark { width:42px; height:42px; }.hero-banner img { min-height:390px; }.brand-banner { grid-template-columns:1fr; gap:22px; margin:0 auto 30px; }.brand-banner img { max-height:270px; object-position:center; }.brand-banner h2 { font-size:2rem; } }

.contact-section { display:grid; grid-template-columns:1fr 1fr; gap:18px; padding:30px 0 105px; }.social-card,.location-card { min-height:320px; padding:38px; border:1px solid rgba(219,151,157,.3); border-radius:18px; background:linear-gradient(145deg,rgba(59,28,33,.86),rgba(19,12,13,.97)); }.social-card h2,.location-card h2 { margin:9px 0 12px; font-family:"Playfair Display",serif; font-size:2.2rem; font-weight:500; }.social-card>p:not(.eyebrow),.location-card>p:not(.eyebrow) { color:var(--muted); line-height:1.65; }.social-links { display:flex; flex-wrap:wrap; gap:10px; margin-top:28px; }.social-links span,.social-links a { padding:10px 14px; border:1px solid #946068; border-radius:100px; color:var(--gold); font-size:.9rem; text-decoration:none; }.social-links a:hover { background:rgba(217,147,154,.12); border-color:var(--rose); }.location-card { background:radial-gradient(circle at 80% 15%,rgba(211,131,146,.22),transparent 12rem),linear-gradient(145deg,rgba(37,21,24,.92),rgba(15,11,12,.97)); }.location-placeholder { display:grid; grid-template-columns:auto 1fr; align-items:center; column-gap:12px; margin-top:25px; padding:18px; border:1px dashed #9d656c; border-radius:12px; }.location-placeholder span { grid-row:span 2; font-size:2rem; color:var(--rose); }.location-placeholder strong { color:var(--cream); }.location-placeholder small { color:var(--muted); margin-top:4px; }
.location-link { text-decoration:none; transition:background .2s ease, border-color .2s ease; }.location-link:hover { border-color:var(--rose); background:rgba(217,147,154,.12); }
@media(max-width:700px) { .contact-section { grid-template-columns:1fr; padding:0 0 72px; }.social-card,.location-card { min-height:auto; padding:28px; } }

.form-message { grid-column:1/-1; min-height:1.25rem; margin:0; font-size:.9rem; }.form-message.is-error { color:#f2a5a9; }.form-message.is-success { color:#eac2b8; }.booking-form .button:disabled { cursor:wait; opacity:.72; }

.availability-picker { grid-column:1/-1; padding:20px; border:1px solid #68434a; border-radius:12px; background:rgba(24,15,16,.72); }.availability-heading { display:flex; justify-content:space-between; align-items:center; gap:16px; color:var(--gold); font-size:.85rem; }.calendar-navigation { display:flex; align-items:center; gap:10px; }.availability-heading strong { min-width:145px; color:var(--cream); font-family:"Playfair Display",serif; font-size:1.1rem; text-align:center; text-transform:capitalize; }.calendar-navigation button { width:29px; height:29px; border:1px solid #80545a; border-radius:50%; background:transparent; color:var(--gold); font:inherit; font-size:1.3rem; cursor:pointer; }.calendar-navigation button:disabled { opacity:.35; cursor:not-allowed; }.calendar-weekdays,.calendar-grid { display:grid; grid-template-columns:repeat(7,1fr); gap:6px; text-align:center; }.calendar-weekdays { margin:20px 0 8px; color:var(--muted); font-size:.75rem; }.calendar-day { min-height:38px; padding:0; border:1px solid transparent; border-radius:8px; background:#261719; color:var(--cream); font:inherit; cursor:pointer; }.calendar-day:hover:not(:disabled),.calendar-day.is-selected { border-color:var(--rose); background:#8b4e59; }.calendar-day:disabled { cursor:not-allowed; color:#6f5456; background:#1b1213; }.availability-help { min-height:1.4rem; margin:17px 0 12px; color:var(--muted); font-size:.88rem; }.time-slots { display:flex; flex-wrap:wrap; gap:9px; }.time-slot { padding:10px 14px; border:1px solid #80545a; border-radius:100px; background:transparent; color:var(--gold); font:inherit; cursor:pointer; }.time-slot:hover,.time-slot.is-selected { border-color:var(--rose); background:#793f4a; color:#fff4f1; }.visually-hidden { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
.availability-picker { grid-column:1/-1; padding:20px; border:1px solid #68434a; border-radius:12px; background:rgba(24,15,16,.72); }.availability-heading { display:flex; justify-content:space-between; align-items:center; gap:16px; color:var(--gold); font-size:.85rem; }.calendar-navigation { display:flex; align-items:center; gap:10px; }.availability-heading strong { min-width:145px; color:var(--cream); font-family:"Playfair Display",serif; font-size:1.1rem; text-align:center; text-transform:capitalize; }.calendar-navigation button { width:29px; height:29px; border:1px solid #80545a; border-radius:50%; background:transparent; color:var(--gold); font:inherit; font-size:1.3rem; cursor:pointer; }.calendar-navigation button:disabled { opacity:.35; cursor:not-allowed; }.calendar-weekdays,.calendar-grid { display:grid; grid-template-columns:repeat(7,1fr); gap:6px; text-align:center; }.calendar-weekdays { margin:20px 0 8px; color:var(--muted); font-size:.75rem; }.calendar-day { min-height:38px; padding:0; border:1px solid transparent; border-radius:8px; background:#261719; color:var(--cream); font:inherit; cursor:pointer; }.calendar-day:hover:not(:disabled),.calendar-day.is-selected { border-color:var(--rose); background:#8b4e59; }.calendar-day:disabled { cursor:not-allowed; color:#6f5456; background:#1b1213; }.availability-fields { display:grid; grid-template-columns:1fr 1fr; gap:14px; margin-top:18px; }.availability-fields label { display:grid; gap:7px; color:var(--gold); font-size:.85rem; }.availability-fields input { width:100%; border:1px solid #68434a; border-radius:7px; padding:12px; background:#180f10; color:var(--cream); font:inherit; }.availability-help { min-height:1.4rem; margin:17px 0 12px; color:var(--muted); font-size:.88rem; }.time-slots { display:flex; flex-wrap:wrap; gap:9px; }.time-slot { padding:10px 14px; border:1px solid #80545a; border-radius:100px; background:transparent; color:var(--gold); font:inherit; cursor:pointer; }.time-slot:hover,.time-slot.is-selected { border-color:var(--rose); background:#793f4a; color:#fff4f1; }.visually-hidden { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
@media(max-width:700px) { .availability-fields { grid-template-columns:1fr; } }

/* Los controles del calendario no deben heredar el ancho del botón de envío. */
.booking-form .availability-picker button { grid-column:auto; }

.home-showcase { padding:30px 0 90px; }.showcase-heading { display:flex; align-items:end; justify-content:space-between; gap:24px; margin-bottom:27px; }.showcase-heading h2,.video-showcase h3 { margin:7px 0 0; font-family:"Playfair Display",serif; font-size:clamp(2rem,4vw,3.15rem); font-weight:500; }.home-gallery { display:grid; grid-template-columns:1.25fr .9fr .9fr; gap:15px; }.home-gallery img { width:100%; height:310px; object-fit:cover; border:1px solid rgba(220,152,158,.28); border-radius:15px; }.home-gallery img:first-child { height:400px; }.video-showcase { display:grid; grid-template-columns:.78fr 1.22fr; gap:35px; align-items:center; margin-top:55px; padding:30px; border:1px solid rgba(220,152,158,.3); border-radius:18px; background:linear-gradient(120deg,rgba(58,28,33,.83),rgba(18,12,13,.95)); }.video-showcase h3 { font-size:2.2rem; }.video-showcase p:not(.eyebrow) { color:var(--muted); line-height:1.65; }.video-grid { display:grid; grid-template-columns:1fr 1fr; gap:14px; }.video-grid video { width:100%; aspect-ratio:9/14; display:block; border:1px solid #80545a; border-radius:12px; background:#080607; object-fit:cover; }
@media(max-width:700px) { .home-showcase { padding:20px 0 62px; }.showcase-heading { display:block; }.showcase-heading .text-link { display:inline-block; margin-top:18px; }.home-gallery { grid-template-columns:1fr 1fr; }.home-gallery img,.home-gallery img:first-child { height:210px; }.home-gallery img:first-child { grid-column:span 2; }.video-showcase { grid-template-columns:1fr; gap:24px; padding:25px; margin-top:35px; }.video-grid video { aspect-ratio:9/13; } }

.admin-body { min-height:100vh; display:grid; place-items:center; padding:24px; }.admin-login,.admin-panel { width:min(980px,100%); padding:38px; border:1px solid #68434a; border-radius:18px; background:linear-gradient(145deg,#221214,#120d0e); }.admin-login { width:min(460px,100%); }.admin-login h1,.admin-panel h1 { margin:8px 0 24px; font-family:"Playfair Display",serif; font-size:2.4rem; font-weight:500; }.admin-form { display:grid; gap:17px; }.admin-form label { display:grid; gap:7px; color:var(--gold); }.admin-form input,.reservation-row select,.reservation-row button { border:1px solid #68434a; border-radius:7px; padding:12px; background:#180f10; color:var(--cream); font:inherit; }.admin-error { color:#f2a5a9; }.admin-panel header { display:flex; align-items:center; justify-content:space-between; gap:20px; }.reservation-list { display:grid; gap:12px; }.reservation-row { display:flex; justify-content:space-between; align-items:center; gap:18px; padding:18px; border:1px solid #513539; border-radius:10px; }.reservation-row p,.reservation-row small { display:block; margin:6px 0 0; color:var(--muted); }.reservation-row form { display:flex; gap:8px; }.reservation-row button { cursor:pointer; color:var(--gold); }.empty-state { color:var(--muted); }
@media(max-width:700px) { .admin-login,.admin-panel { padding:25px; }.reservation-row,.admin-panel header { align-items:flex-start; flex-direction:column; }.reservation-row form { width:100%; }.reservation-row select,.reservation-row button { flex:1; } }
