/* Estilos comunes del sitio (detalle de alojamiento, reserva y portal). */
body { overflow-x:clip; }
.glass-nav-header { background: rgba(255, 255, 255, 0.78); backdrop-filter: blur(18px) saturate(180%); -webkit-backdrop-filter: blur(18px) saturate(180%); border: 1px solid rgba(255, 255, 255, 0.65); }
.glass-pill-badge { background: rgba(255, 255, 255, 0.85); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); border: 1px solid rgba(255, 255, 255, 0.6); }
.subtle-card { box-shadow: 0 18px 40px -16px rgba(0, 0, 0, 0.05), 0 1px 3px rgba(0, 0, 0, 0.02); transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1); }
.subtle-card:hover { transform: translateY(-4px); box-shadow: 0 28px 60px -18px rgba(0, 0, 0, 0.1), 0 2px 8px rgba(0, 0, 0, 0.04); }
.cn-cal-nav { width:2rem; height:2rem; border-radius:9999px; display:flex; align-items:center; justify-content:center; color:#3f5557; transition:background .15s; }
.cn-cal-nav:hover:not(:disabled) { background:#E9F7F1; }
.cn-cal-nav:disabled { opacity:.25; cursor:default; }
.cn-cal-nav svg { width:.9rem; height:.9rem; }
.cn-cal-grid { display:grid; grid-template-columns:repeat(7, 1fr); row-gap:.15rem; }
.cn-cal-dow { font-size:.7rem; font-weight:600; color:#93a5a8; text-align:center; padding:.25rem 0 .4rem; text-transform:uppercase; }
.cn-day { position:relative; height:2.35rem; font-size:.85rem; font-weight:500; color:#223D3D; background:transparent; border:0; cursor:pointer; }
.cn-day span { position:relative; z-index:1; display:flex; align-items:center; justify-content:center; width:2.35rem; height:2.35rem; margin:0 auto; border-radius:9999px; transition:background .12s, color .12s; }
.cn-day:hover:not(:disabled) span { background:#d3ede3; }
.cn-day:focus-visible { outline:none; }
.cn-day:focus-visible span { box-shadow:0 0 0 2px rgba(0,134,118,.5); }
.cn-day:disabled { color:#c5d1cf; cursor:default; }
.cn-day.is-today span::after { content:""; position:absolute; bottom:.3rem; left:50%; width:.25rem; height:.25rem; margin-left:-.125rem; border-radius:9999px; background:#008676; }
.cn-day.in-range { background:#E9F7F1; }
.cn-day.is-start.has-range { background:linear-gradient(90deg, transparent 50%, #E9F7F1 50%); }
.cn-day.is-end { background:linear-gradient(90deg, #E9F7F1 50%, transparent 50%); }
.cn-day.is-start.is-end { background:transparent; }
.cn-day.is-start span, .cn-day.is-end span { background:#005552 !important; color:#fff; font-weight:700; }
.cn-day.is-start.is-today span::after, .cn-day.is-end.is-today span::after { background:#fff; }
.font-display { letter-spacing:-0.03em; }
.cn-lang { position:relative; align-items:center; padding:3px; border-radius:9999px; background:#e9f0ee; }
.cn-lang button { position:relative; z-index:1; font-size:11.5px; font-weight:700; letter-spacing:.06em; padding:.3rem .6rem; border-radius:9999px; color:#798D92; transition:color .2s, background .2s, box-shadow .2s; }
.cn-lang button:hover { color:#223D3D; }
.cn-lang button[aria-pressed="true"] { background:#fff; color:#223D3D; box-shadow:0 1px 3px rgba(34,61,61,.15); }
.cn-lang button:focus-visible { outline:2px solid rgba(0,134,118,.5); outline-offset:1px; }
.cn-lang-dark { background:rgba(255,255,255,.1); }
.cn-lang-dark button { color:rgba(255,255,255,.6); }
.cn-lang-dark button:hover { color:#fff; }
.cn-lang-dark button[aria-pressed="true"] { background:#fff; color:#223D3D; }
.cn-noscroll { scrollbar-width:none; -ms-overflow-style:none; -webkit-overflow-scrolling:touch; }
.cn-noscroll::-webkit-scrollbar { display:none; }
::-webkit-scrollbar { width:10px; height:10px; }
::-webkit-scrollbar-track { background:#eef6f3; }
::-webkit-scrollbar-thumb { background:#9fcfc6; border-radius:9999px; border:2px solid #eef6f3; }
::-webkit-scrollbar-thumb:hover { background:#008676; }
::-webkit-scrollbar-button { display:none; width:0; height:0; }
.cn-dialog { margin:auto; border:0; overflow-y:auto; }
.cn-dialog { scrollbar-width:thin; scrollbar-color:rgba(0,134,118,.35) transparent; }
.cn-dialog::-webkit-scrollbar { width:8px; }
.cn-dialog::-webkit-scrollbar-track { background:transparent; margin:28px 0; }
.cn-dialog::-webkit-scrollbar-thumb { background:rgba(0,134,118,.3); border:2px solid transparent; background-clip:padding-box; }
.cn-dialog::-webkit-scrollbar-thumb:hover { background:rgba(0,134,118,.6); background-clip:padding-box; }
.cn-dialog[open] { animation:cn-pop .25s cubic-bezier(.16,1,.3,1); }
@keyframes cn-pop { from { opacity:0; transform:translateY(10px) scale(.98); } }
.cn-step { width:2rem; height:2rem; border-radius:9999px; background:#E9F7F1; color:#182d2d; font-weight:700; display:flex; align-items:center; justify-content:center; }
.cn-step:hover { background:#c8ebdf; }
.cn-day.is-busy span { text-decoration:line-through; color:#b7c6c5; }
@supports (-moz-appearance:none) { html { scrollbar-width:thin; scrollbar-color:#9fcfc6 #eef6f3; } }
:is(input, select, textarea, button).cn-field { width:100%; border-radius:.9rem; border:1px solid #d6e0de; background:#fff; padding:.65rem .85rem; font-size:.95rem; color:#182d2d; }
:is(input, select, textarea, button).cn-field:focus { outline:none; border-color:#008676; box-shadow:0 0 0 3px rgba(0,134,118,.15); }
.cn-label { display:block; font-size:.75rem; font-weight:600; color:#5a6f73; margin-bottom:.3rem; }

/* Desplegables y calendario del sitio (también en el portal) */
.cn-trigger { display:flex; align-items:center; justify-content:space-between; gap:.5rem; width:100%; text-align:left; font-size:.8125rem; font-weight:600; color:#182d2d; background:transparent; border:0; padding:0; cursor:pointer; border-radius:.375rem; }
.cn-trigger:focus-visible { outline:2px solid rgba(0,134,118,.45); outline-offset:3px; }
.cn-trigger svg { width:.85rem; height:.85rem; color:#798D92; flex-shrink:0; transition:transform .25s cubic-bezier(.16,1,.3,1); }
.cn-trigger[aria-expanded="true"] svg { transform:rotate(180deg); }
.cn-panel { position:fixed; z-index:70; min-width:260px; max-height:min(360px, 70vh); overflow-y:auto; padding:.375rem; scrollbar-gutter:stable; border-radius:1.25rem; background:rgba(255,255,255,.94); backdrop-filter:blur(20px) saturate(180%); -webkit-backdrop-filter:blur(20px) saturate(180%); border:1px solid rgba(255,255,255,.8); box-shadow:0 24px 48px -12px rgba(34,61,61,.22), 0 0 0 1px rgba(34,61,61,.06); opacity:0; transform:translateY(-6px) scale(.98); transform-origin:top; pointer-events:none; transition:opacity .18s ease, transform .22s cubic-bezier(.16,1,.3,1); }
.cn-panel.is-open { opacity:1; transform:none; pointer-events:auto; }
.cn-option { display:flex; align-items:center; gap:.75rem; padding:.6rem .75rem; border-radius:.875rem; cursor:pointer; color:#223D3D; }
.cn-option:hover, .cn-option.is-active { background:#E9F7F1; }
.cn-option[aria-selected="true"] { background:#005552; color:#fff; }
.cn-option-label { display:block; font-size:.875rem; font-weight:600; line-height:1.2; }
.cn-option-desc { display:block; font-size:.76rem; color:#798D92; margin-top:.15rem; }
.cn-option[aria-selected="true"] .cn-option-desc { color:rgba(255,255,255,.7); }
.cn-check { margin-left:auto; width:.9rem; height:.9rem; opacity:0; flex-shrink:0; }
.cn-option[aria-selected="true"] .cn-check { opacity:1; }
.cn-btn-ghost { font-size:.8rem; font-weight:600; color:#5a6f73; padding:.45rem .8rem; border-radius:9999px; }
.cn-btn-ghost:hover { background:#E9F7F1; }
.cn-btn-dark { font-size:.8rem; font-weight:600; color:#fff; background:#182d2d; padding:.45rem 1rem; border-radius:9999px; }
.cn-btn-dark:hover { background:#223D3D; }
.cn-panel::-webkit-scrollbar, .cn-mm::-webkit-scrollbar { width:6px; }
.cn-panel::-webkit-scrollbar-track, .cn-mm::-webkit-scrollbar-track { background:transparent; margin:16px 0; }
.cn-panel::-webkit-scrollbar-thumb, .cn-mm::-webkit-scrollbar-thumb { background:rgba(0,134,118,.28); border:0; }
.cn-panel::-webkit-scrollbar-thumb:hover, .cn-mm::-webkit-scrollbar-thumb:hover { background:rgba(0,134,118,.6); }
.cn-select-btn { display:flex; align-items:center; justify-content:space-between; gap:.5rem; text-align:left; cursor:pointer; }
.cn-select-btn svg { width:1rem; height:1rem; color:#798D92; flex-shrink:0; transition:transform .25s cubic-bezier(.16,1,.3,1); }
.cn-select-btn[aria-expanded="true"] svg { transform:rotate(180deg); }
.cn-select-btn .cn-ph { color:#93a5a8; }
.cn-panel.cn-panel-cal { min-width:300px; padding:.75rem; }
.cn-cal-head { display:flex; align-items:center; justify-content:space-between; padding:.35rem .35rem .6rem; }
.cn-cal-foot { display:flex; align-items:center; justify-content:space-between; gap:.75rem; margin-top:.6rem; padding:.7rem .35rem .2rem; border-top:1px solid rgba(34,61,61,.08); }
.cn-cal-sum { font-size:.78rem; color:#5a6f73; line-height:1.35; }
.cn-cal-sum strong { display:block; color:#182d2d; font-size:.85rem; }
.cn-cal-sum em { font-style:normal; color:#008676; font-weight:600; }
.cn-cal-actions { display:flex; gap:.4rem; flex-shrink:0; }
input.cn-field[type=number]::-webkit-inner-spin-button, input.cn-field[type=number]::-webkit-outer-spin-button { -webkit-appearance:none; margin:0; }
input.cn-field[type=number] { -moz-appearance:textfield; appearance:textfield; }

/* Botón flotante "Mi reserva" con efecto campana (también en el detalle) */
.cn-cart-chip { display:none; }
.cn-cart-chip.is-visible { display:inline-flex; animation:cn-pop .3s cubic-bezier(.16,1,.3,1); }
.cn-cart-chip.is-visible .cn-bell { transform-origin:50% 10%; animation:cn-ring 3.2s ease-in-out 1s infinite; }
.cn-cart-chip.is-visible .cn-bell-dot { position:relative; }
.cn-cart-chip.is-visible .cn-bell-dot::after { content:""; position:absolute; inset:0; border-radius:9999px; background:#3cc4ad; z-index:-1; animation:cn-bell-ping 3.2s ease-out 1s infinite; }
@keyframes cn-ring { 0%,62%,100% { transform:rotate(0); } 66% { transform:rotate(16deg); } 70% { transform:rotate(-14deg); } 74% { transform:rotate(11deg); } 78% { transform:rotate(-8deg); } 82% { transform:rotate(5deg); } 86% { transform:rotate(-2deg); } }
@keyframes cn-bell-ping { 0%,60% { transform:scale(1); opacity:0; } 64% { opacity:.7; } 90%,100% { transform:scale(2); opacity:0; } }
@media (prefers-reduced-motion: reduce) { .cn-cart-chip .cn-bell, .cn-cart-chip .cn-bell-dot::after { animation:none !important; } }

/* Carrito lateral "Mi reserva" (portada y detalle) */
.cn-cart-bd { position:fixed; inset:0; z-index:64; background:rgba(24,45,45,.4); backdrop-filter:blur(4px); -webkit-backdrop-filter:blur(4px); opacity:0; pointer-events:none; transition:opacity .3s; }
.cn-cart { position:fixed; z-index:65; top:0; right:0; bottom:0; width:min(440px,100vw); display:flex; flex-direction:column; background:#fff; box-shadow:-24px 0 60px -20px rgba(24,45,45,.35); transform:translateX(100%); visibility:hidden; transition:transform .35s cubic-bezier(.16,1,.3,1), visibility 0s .35s; }
body.cn-cart-open { overflow:hidden; }
body.cn-cart-open .cn-cart-bd { opacity:1; pointer-events:auto; }
body.cn-cart-open .cn-cart { transform:none; visibility:visible; transition:transform .35s cubic-bezier(.16,1,.3,1), visibility 0s; }
@media (prefers-reduced-motion: reduce) { .cn-cart, .cn-cart-bd { transition:none; } }
.cn-cart-row { display:flex; align-items:flex-start; justify-content:space-between; gap:.75rem; padding:.85rem 0; border-bottom:1px solid #eef3f1; }
