:root{--booking-blue:#1f6feb;--booking-cyan:#0ea5e9;--booking-ink:#10213d;--booking-muted:#65758b;--booking-line:#dce6f2;--booking-bg:#f4f7fb;--booking-green:#119b69}
.booking-public-body{margin:0;min-height:100vh;background:radial-gradient(circle at 15% -10%,rgba(14,165,233,.14),transparent 34%),radial-gradient(circle at 92% 0,rgba(79,70,229,.11),transparent 30%),var(--booking-bg);color:var(--booking-ink)}
.booking-public-shell{width:min(1120px,calc(100% - 28px));margin:0 auto;padding:18px 0 34px}
.booking-public-topbar{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:10px 2px 22px}
.booking-public-brand{display:flex;align-items:center;gap:12px;min-width:0}.booking-brand-logo,.booking-brand-mark{width:48px;height:48px;border-radius:15px;display:grid;place-items:center;background:#fff;border:1px solid var(--booking-line);box-shadow:0 8px 22px rgba(35,71,120,.09);overflow:hidden;flex:0 0 auto}.booking-brand-logo img{width:100%;height:100%;object-fit:contain;padding:5px}.booking-brand-mark{background:linear-gradient(135deg,var(--booking-blue),#6456e8);color:#fff;font-size:23px;font-weight:950}.booking-brand-copy{display:grid;min-width:0}.booking-brand-copy strong{font-size:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.booking-brand-copy small{color:var(--booking-muted);font-size:11px;font-weight:750}.booking-secure-chip{display:inline-flex;align-items:center;gap:8px;border:1px solid #cfe4dc;background:#effcf6;color:#13734f;border-radius:999px;padding:8px 12px;font-size:11px;font-weight:850}.booking-secure-chip span{width:8px;height:8px;border-radius:50%;background:#22c55e;box-shadow:0 0 0 4px #dcfce7}
.booking-public-main{display:grid;gap:18px}.booking-alert{display:flex;gap:10px;align-items:flex-start;border-radius:16px;padding:13px 15px;margin-bottom:14px;font-size:13px;font-weight:700;box-shadow:0 8px 20px rgba(30,50,90,.06)}.booking-alert strong{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;flex:0 0 auto}.booking-alert.success{background:#edfcf5;border:1px solid #b8efd4;color:#0f704c}.booking-alert.success strong{background:#c9f5de}.booking-alert.error{background:#fff1f2;border:1px solid #fecdd3;color:#a61b33}.booking-alert.error strong{background:#ffe0e5}
.booking-hero{position:relative;overflow:hidden;border-radius:28px;padding:34px;background:linear-gradient(125deg,#0f3976 0%,#1f6feb 55%,#0ea5e9 100%);color:#fff;display:flex;justify-content:space-between;gap:28px;align-items:center;box-shadow:0 24px 54px rgba(31,82,167,.22)}.booking-hero:after{content:"";position:absolute;width:300px;height:300px;border-radius:50%;border:58px solid rgba(255,255,255,.07);right:-95px;top:-170px}.booking-hero-copy,.booking-hero-badge{position:relative;z-index:1}.booking-kicker,.booking-step-kicker{display:block;font-size:10px;font-weight:950;letter-spacing:.13em;text-transform:uppercase}.booking-kicker{color:#cbe6ff}.booking-hero h1{font-size:clamp(29px,4vw,44px);line-height:1.04;letter-spacing:-1.4px;margin:8px 0 12px;max-width:680px}.booking-hero p{max-width:720px;margin:0;color:#e4efff;font-size:15px;line-height:1.65}.booking-contact-row{display:flex;gap:9px;flex-wrap:wrap;margin-top:18px}.booking-contact-row span{background:rgba(255,255,255,.11);border:1px solid rgba(255,255,255,.16);border-radius:999px;padding:7px 10px;font-size:11px;font-weight:750}.booking-hero-badge{min-width:190px;background:rgba(255,255,255,.11);border:1px solid rgba(255,255,255,.2);backdrop-filter:blur(8px);border-radius:20px;padding:17px 18px}.booking-hero-badge strong,.booking-hero-badge span{display:block}.booking-hero-badge strong{font-size:22px}.booking-hero-badge span{color:#dcecff;font-size:11px;margin-top:4px}
.booking-step-card,.booking-empty-card,.booking-unavailable-card{background:#fff;border:1px solid rgba(220,230,242,.92);border-radius:24px;padding:24px;box-shadow:0 10px 30px rgba(30,50,90,.065)}.booking-step-head{display:flex;align-items:center;gap:13px;margin-bottom:19px}.booking-step-number{width:42px;height:42px;border-radius:14px;display:grid;place-items:center;background:linear-gradient(135deg,#eaf3ff,#eef2ff);color:#1d5fd0;font-weight:950;border:1px solid #d6e6fb}.booking-step-kicker{color:#2e6ed7}.booking-step-head h2{font-size:20px;letter-spacing:-.35px;margin:2px 0 0}
.booking-service-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.booking-service-card{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;padding:16px;border:1px solid var(--booking-line);border-radius:17px;background:#fff;transition:.16s ease}.booking-service-card:hover{border-color:#93b8f6;box-shadow:0 10px 24px rgba(37,99,235,.10);transform:translateY(-1px)}.booking-service-card.selected{border-color:#4e8bf0;background:#f5f9ff;box-shadow:inset 0 0 0 1px #8cb4f5}.booking-service-icon{width:38px;height:38px;border-radius:12px;background:#edf4ff;color:#2e66c4;display:grid;place-items:center;font-size:17px;font-weight:900}.booking-service-main{display:grid;min-width:0}.booking-service-main strong{font-size:14px}.booking-service-main small{margin-top:3px;color:var(--booking-muted);font-size:11px}.booking-service-price{font-size:12px;font-weight:900;color:#1f5ec4}.booking-service-check{display:none;position:absolute;right:8px;top:8px;width:19px;height:19px;border-radius:50%;background:#22c55e;color:#fff;font-size:10px;place-items:center}.booking-service-card.selected .booking-service-check{display:grid}
.booking-selector-grid{display:grid;grid-template-columns:1.2fr 1fr 220px;gap:12px;align-items:end}.booking-field{display:grid;gap:7px}.booking-field>span{font-size:11px;font-weight:850;color:#44536a}.booking-field input,.booking-field select,.booking-field textarea{width:100%;min-height:47px;border:1px solid #d7e2ef;border-radius:13px;background:#f9fbfd;color:#14213d;padding:10px 12px;outline:none;transition:.15s}.booking-field textarea{min-height:86px;resize:vertical}.booking-field input:focus,.booking-field select:focus,.booking-field textarea:focus{border-color:#5d93ed;background:#fff;box-shadow:0 0 0 4px rgba(37,99,235,.10)}.booking-selection-strip{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:15px;padding-top:15px;border-top:1px solid #edf1f6}.booking-selection-strip span{padding:11px 12px;border-radius:13px;background:#f8fafc;border:1px solid #edf1f6}.booking-selection-strip small,.booking-selection-strip strong{display:block}.booking-selection-strip small{font-size:9px;text-transform:uppercase;letter-spacing:.08em;color:#8290a4;font-weight:900}.booking-selection-strip strong{font-size:12px;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.booking-slot-groups{display:grid;gap:14px}.booking-slot-group{border:1px solid #e2eaf4;border-radius:17px;padding:15px;background:#fbfcfe}.booking-slot-group-title{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-bottom:11px}.booking-slot-group-title strong{font-size:13px}.booking-slot-group-title span{font-size:10px;color:var(--booking-muted);font-weight:800}.booking-slot-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:9px}.booking-slot-btn{border:1px solid #bed5f8;border-radius:13px;background:#f3f8ff;color:#174f9d;min-height:57px;padding:9px 11px;display:grid;text-align:left;transition:.15s}.booking-slot-btn strong{font-size:15px}.booking-slot-btn span{font-size:10px;font-weight:800;color:#4a78b8}.booking-slot-btn:hover,.booking-slot-btn.selected{background:#1f6feb;border-color:#1f6feb;color:#fff;box-shadow:0 9px 20px rgba(31,111,235,.2);transform:translateY(-1px)}.booking-slot-btn:hover span,.booking-slot-btn.selected span{color:#dfeeff}.booking-inline-empty{display:flex;align-items:center;gap:13px;padding:17px;border:1px dashed #cbd8e7;border-radius:16px;background:#f8fafc}.booking-inline-empty>span{width:42px;height:42px;border-radius:13px;background:#eef3f8;color:#6f8197;display:grid;place-items:center;font-size:19px}.booking-inline-empty strong,.booking-inline-empty small{display:block}.booking-inline-empty small{margin-top:3px;color:var(--booking-muted)}
.booking-selected-slot{display:flex;gap:12px;align-items:center;padding:14px;border:1px solid #dce6f2;border-radius:15px;background:#f8fafc;margin-bottom:15px}.booking-selected-slot>span{width:36px;height:36px;border-radius:12px;background:#e8eef6;color:#718096;display:grid;place-items:center;font-weight:900}.booking-selected-slot small,.booking-selected-slot strong{display:block}.booking-selected-slot small{font-size:9px;text-transform:uppercase;letter-spacing:.08em;color:#8190a5;font-weight:900}.booking-selected-slot strong{font-size:13px;margin-top:2px}.booking-selected-slot.ready{background:#effcf6;border-color:#b8ead4}.booking-selected-slot.ready>span{background:#c9f5de;color:#087b50}.booking-client-grid{display:grid;grid-template-columns:1fr 1fr;gap:13px}.booking-client-grid .span-2{grid-column:1/-1}.booking-form-footer{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-top:17px;padding-top:16px;border-top:1px solid #edf1f6}.booking-form-footer p{margin:0;color:var(--booking-muted);font-size:11px;max-width:590px}.booking-primary-button{min-height:46px;border:0;border-radius:13px;padding:10px 18px;background:linear-gradient(135deg,#246be8,#0ea5e9);color:#fff;font-size:12px;font-weight:900;box-shadow:0 10px 22px rgba(31,111,235,.18);cursor:pointer}.booking-primary-button:disabled{background:#c8d2df;box-shadow:none;cursor:not-allowed}
.booking-public-footer{display:flex;justify-content:space-between;gap:15px;align-items:center;color:#7a899d;padding:24px 5px 5px;font-size:11px}.booking-public-footer small{font-weight:800}.booking-empty-card,.booking-unavailable-card{text-align:center;padding:46px 28px}.booking-empty-icon,.booking-unavailable-icon{width:64px;height:64px;margin:0 auto 14px;border-radius:20px;background:#eef5ff;color:#2b6bd1;display:grid;place-items:center;font-size:28px}.booking-empty-card h2,.booking-unavailable-card h1{margin:8px 0 8px;letter-spacing:-.5px}.booking-empty-card p,.booking-unavailable-card p{max-width:630px;margin:0 auto;color:var(--booking-muted)}.booking-unavailable-card .booking-kicker{color:#2e6ed7}.booking-unavailable-note{max-width:660px;margin:22px auto 0;padding:13px;border-radius:14px;background:#f8fafc;border:1px solid #e4eaf1;color:#6a788b;font-size:11px}
@media(max-width:820px){.booking-public-shell{width:min(100% - 18px,1120px)}.booking-hero{padding:27px;align-items:flex-start;flex-direction:column}.booking-hero-badge{width:100%}.booking-service-grid,.booking-selector-grid,.booking-client-grid{grid-template-columns:1fr}.booking-client-grid .span-2{grid-column:auto}.booking-selection-strip{grid-template-columns:1fr}.booking-form-footer{align-items:stretch;flex-direction:column}.booking-primary-button{width:100%}}
@media(max-width:520px){.booking-public-shell{width:100%;padding:0}.booking-public-topbar{padding:14px 16px}.booking-public-main{gap:10px}.booking-hero,.booking-step-card,.booking-empty-card,.booking-unavailable-card{border-radius:0;border-left:0;border-right:0}.booking-hero{padding:25px 18px}.booking-step-card{padding:19px 16px}.booking-service-grid{grid-template-columns:1fr}.booking-secure-chip{display:none}.booking-slot-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.booking-public-footer{padding:20px 16px;flex-direction:column;align-items:flex-start}}
/* FIX30.31.1 - disponibilidad pública estricta según Horarios */
.booking-availability-head{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;margin-top:18px;padding-top:17px;border-top:1px solid #edf1f6}.booking-availability-head>div{display:grid;gap:3px}.booking-availability-head strong{font-size:13px}.booking-availability-head small{font-size:10.5px;color:var(--booking-muted);line-height:1.45}.booking-hours-chip{flex:0 0 auto;border-radius:999px;padding:8px 11px;background:#eef7ff;border:1px solid #cfe4fb;color:#245f9e;font-size:10px;font-weight:850}.booking-hours-chip.closed{background:#f7f8fa;border-color:#e1e6ec;color:#78869a}.booking-day-strip{display:grid;grid-template-columns:repeat(7,minmax(92px,1fr));gap:8px;margin-top:12px;overflow-x:auto;padding:2px 1px 7px;scrollbar-width:thin}.booking-day-card{min-width:92px;min-height:104px;border:1px solid #dce6f2;border-radius:15px;background:#fbfcfe;padding:10px;display:grid;align-content:center;text-align:center;text-decoration:none;transition:.15s ease}.booking-day-card small{font-size:9px;font-weight:900;text-transform:uppercase;color:#7a899d}.booking-day-card strong{font-size:22px;line-height:1.1;margin-top:2px;color:#172a46}.booking-day-card span{font-size:10px;font-weight:800;color:#728197;text-transform:uppercase}.booking-day-card em{font-size:9px;font-style:normal;font-weight:850;margin-top:6px;color:#7a899d}.booking-day-card.available{border-color:#b8d5fb;background:#f5f9ff}.booking-day-card.available em{color:#1d67ca}.booking-day-card.available:hover{transform:translateY(-2px);box-shadow:0 8px 18px rgba(31,111,235,.13);border-color:#6ca2ef}.booking-day-card.selected{background:#1f6feb;border-color:#1f6feb;box-shadow:0 8px 18px rgba(31,111,235,.20)}.booking-day-card.selected small,.booking-day-card.selected strong,.booking-day-card.selected span,.booking-day-card.selected em{color:#fff}.booking-day-card.closed,.booking-day-card.full{opacity:.62;cursor:not-allowed}.booking-day-card.closed{background:#f5f6f8}.booking-day-card.full{background:#fff9f0;border-color:#f5dfb8}.booking-day-card.full em{color:#9b6b1b}.booking-availability-note{display:flex;align-items:center;gap:11px;margin-bottom:14px;padding:12px 13px;border:1px solid #ccebdc;border-radius:14px;background:#f2fcf7;color:#176b4e}.booking-availability-note>span{width:30px;height:30px;border-radius:10px;background:#d8f6e7;display:grid;place-items:center;font-weight:950}.booking-availability-note strong,.booking-availability-note small{display:block}.booking-availability-note strong{font-size:11.5px}.booking-availability-note small{font-size:10px;color:#4d7d69;margin-top:2px;line-height:1.4}.booking-slot-group-title>div{display:grid;gap:2px}.booking-slot-group-title>div small{font-size:10px;color:var(--booking-muted);font-weight:750}
@media(max-width:900px){.booking-day-strip{grid-template-columns:repeat(7,96px)}.booking-availability-head{align-items:flex-start;flex-direction:column}.booking-hours-chip{align-self:flex-start}}
