:root{--bk-primary: var(--color-forest-600, #1A3E2F);--bk-primary-light: var(--color-forest-500, #2d5a47);--bk-primary-50: var(--color-forest-50, #f0f7f4);--bk-primary-100: var(--color-forest-100, #dbeee4);--bk-primary-200: var(--color-forest-200, #b5ddc8);--bk-accent: var(--color-accent-500, #C68E49);--bk-accent-light: var(--color-accent-300, #e8d5a8);--bk-surface: #ffffff;--bk-surface-elevated: var(--color-neutral-50, #F9F8F6);--bk-border: var(--color-neutral-200, #e8e5e0);--bk-border-hover: #d5d0c8;--bk-text: #1a1a18;--bk-text-secondary: #6b6b68;--bk-text-muted: var(--color-neutral-400, #A19B8F);--bk-available: var(--color-available, #2d8a56);--bk-available-bg: #edf7f1;--bk-few: #d4850a;--bk-few-bg: #fef8ed;--bk-full: #c7323e;--bk-full-bg: #fef2f2;--bk-radius: 16px;--bk-radius-sm: 10px;--bk-radius-xs: 6px;--bk-shadow-sm: 0 1px 3px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .02);--bk-shadow-md: 0 4px 12px rgba(0, 0, 0, .06), 0 2px 4px rgba(0, 0, 0, .03);--bk-shadow-lg: 0 12px 40px rgba(0, 0, 0, .08), 0 4px 12px rgba(0, 0, 0, .04);--bk-transition: .25s cubic-bezier(.4, 0, .2, 1)}.booking-page{min-height:100vh;background:linear-gradient(175deg,#f5f4f1,#ebe8e3 40%,#e2dfd8)}.booking-hero{position:relative;padding:80px 0 60px;overflow:hidden;background:url(/images/hero/hero_visit.png) center/cover no-repeat}.booking-hero:before{content:"";position:absolute;inset:0;background:#1a3e2fbf;clip-path:polygon(0 0,100% 0,100% 75%,0 100%);z-index:0}.booking-hero .hero-content{position:relative;z-index:1;max-width:640px}.booking-hero .hero-label{display:inline-flex;align-items:center;gap:8px;font-size:11px;letter-spacing:.3em;text-transform:uppercase;color:var(--bk-accent);margin-bottom:16px;font-weight:600}.booking-hero h1{font-size:clamp(2rem,5vw,3rem);color:#fff;font-weight:700;line-height:1.2;margin-bottom:16px}.booking-hero .hero-desc{font-size:1.05rem;color:#ffffffbf;line-height:1.7}.booking-progress{display:flex;align-items:center;justify-content:center;gap:0;padding:32px 0 16px}.booking-progress.hidden{display:none}.progress-step{display:flex;flex-direction:column;align-items:center;gap:8px;position:relative;z-index:1}.progress-step .step-circle{width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;border:2px solid var(--bk-border);background:var(--bk-surface);color:var(--bk-text-muted);transition:all var(--bk-transition)}.progress-step.active .step-circle{border-color:var(--bk-primary);background:var(--bk-primary);color:#fff;box-shadow:0 0 0 4px #1e3a2f1f}.progress-step.completed .step-circle{border-color:var(--bk-primary);background:var(--bk-primary-50);color:var(--bk-primary)}.progress-step .step-label{font-size:11px;font-weight:600;color:var(--bk-text-muted);text-transform:uppercase;letter-spacing:.08em;transition:color var(--bk-transition)}.progress-step.active .step-label,.progress-step.completed .step-label{color:var(--bk-primary)}.progress-line{width:60px;height:2px;background:var(--bk-border);margin:0 8px 24px;transition:background var(--bk-transition)}.progress-line.completed{background:var(--bk-primary)}@media(max-width:640px){.progress-line{width:32px}.progress-step .step-label{font-size:9px}.progress-step .step-circle{width:34px;height:34px;font-size:12px}}.booking-container{max-width:800px;margin:0 auto;padding:0 24px 80px}[data-step]{animation:stepFadeIn .4s ease-out}@keyframes stepFadeIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.step-title{font-size:1.5rem;font-weight:700;color:var(--bk-text);margin-bottom:6px}.step-desc{font-size:.95rem;color:var(--bk-text-secondary);margin-bottom:32px;line-height:1.7}.visit-type-grid{display:grid;grid-template-columns:1fr;gap:16px}.visit-type-card{display:flex;align-items:flex-start;gap:20px;padding:24px;background:var(--bk-surface);border:2px solid var(--bk-border);border-radius:var(--bk-radius);cursor:pointer;transition:all var(--bk-transition);position:relative;overflow:hidden}.visit-type-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:transparent;transition:background var(--bk-transition)}.visit-type-card:hover{border-color:var(--bk-border-hover);box-shadow:var(--bk-shadow-md);transform:translateY(-1px)}.visit-type-card.selected{border-color:var(--bk-primary);background:var(--bk-primary-50);box-shadow:var(--bk-shadow-md)}.visit-type-card.selected:before{background:var(--bk-primary)}.visit-type-icon{width:52px;height:52px;border-radius:14px;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:24px;background:var(--bk-primary-50);transition:background var(--bk-transition)}.visit-type-card.selected .visit-type-icon{background:var(--bk-primary-100)}.visit-type-info h3{font-size:1.05rem;font-weight:700;color:var(--bk-text);margin-bottom:4px}.visit-type-info .duration{font-size:13px;color:var(--bk-primary-light);font-weight:600;margin-bottom:6px}.visit-type-info .desc{font-size:13px;color:var(--bk-text-secondary);line-height:1.6}.calendar-wrapper{background:var(--bk-surface);border-radius:var(--bk-radius);border:1px solid var(--bk-border);box-shadow:var(--bk-shadow-sm);overflow:hidden}.calendar-nav{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid var(--bk-border)}.calendar-nav h3{font-size:1.15rem;font-weight:700;color:var(--bk-text);margin:0}.calendar-nav button{width:36px;height:36px;border-radius:10px;border:1px solid var(--bk-border);background:var(--bk-surface);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--bk-transition);color:var(--bk-text)}.calendar-nav button:hover{background:var(--bk-surface-elevated);border-color:var(--bk-border-hover)}.calendar-header{display:grid;grid-template-columns:repeat(7,1fr);padding:12px 16px 8px;border-bottom:1px solid var(--bk-border)}.calendar-day-name{text-align:center;font-size:11px;font-weight:700;color:var(--bk-text-muted);text-transform:uppercase;letter-spacing:.1em;padding:8px 0}.calendar-day-name.sun{color:var(--bk-full)}.calendar-day-name.sat{color:#4a8cc9}.calendar-body{display:grid;grid-template-columns:repeat(7,1fr);padding:8px 16px 16px;gap:4px}.calendar-cell{aspect-ratio:1;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:var(--bk-radius-sm);position:relative;user-select:none;gap:2px}.calendar-cell .day-number{font-size:14px;font-weight:600;color:var(--bk-text);line-height:1}.calendar-cell.empty{visibility:hidden}.calendar-cell.clickable{cursor:pointer;transition:all var(--bk-transition)}.calendar-cell.clickable:hover{background:var(--bk-primary-50);transform:scale(1.05)}.calendar-cell.selected{background:var(--bk-primary)!important;color:#fff;box-shadow:0 0 0 3px #1e3a2f26}.calendar-cell.selected .day-number{color:#fff}.calendar-cell.today .day-number{color:var(--bk-primary);font-weight:800}.calendar-cell.today:after{content:"";position:absolute;bottom:4px;width:4px;height:4px;border-radius:50%;background:var(--bk-primary)}.calendar-cell.selected.today:after{background:#fff}.calendar-cell.closed,.calendar-cell.past{opacity:.35;cursor:default}.calendar-cell.closed .day-number,.calendar-cell.past .day-number{color:var(--bk-text-muted)}.closed-label{font-size:8px;color:var(--bk-text-muted);letter-spacing:.05em}.slot-dot{display:block;width:6px;height:6px;border-radius:50%}.slot-dot.available{background:var(--bk-available)}.slot-dot.few{background:var(--bk-few)}.slot-dot.full{background:var(--bk-full)}.calendar-legend{display:flex;gap:20px;justify-content:center;padding:16px;border-top:1px solid var(--bk-border);flex-wrap:wrap}.legend-item{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--bk-text-secondary)}.legend-dot{width:8px;height:8px;border-radius:50%}.legend-dot.available{background:var(--bk-available)}.legend-dot.few{background:var(--bk-few)}.legend-dot.full{background:var(--bk-full)}.calendar-loading{display:flex;justify-content:center;align-items:center;min-height:300px}.loading-spinner{width:32px;height:32px;border:3px solid var(--bk-border);border-top-color:var(--bk-primary);border-radius:50%;animation:spin .8s linear infinite}.loading-spinner-sm{display:inline-block;width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite;vertical-align:middle;margin-right:8px}@keyframes spin{to{transform:rotate(360deg)}}#time-slots{display:none;margin-top:20px;animation:slideDown .35s ease-out}@keyframes slideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.time-slots-header{margin-bottom:16px}.time-slots-header h4{font-size:1.05rem;font-weight:700;color:var(--bk-text);margin:0 0 4px}.time-slots-header p{font-size:.85rem;color:var(--bk-text-secondary);margin:0}.time-slots-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}@media(max-width:480px){.time-slots-grid{grid-template-columns:1fr}}.time-slot{display:flex;align-items:center;justify-content:space-between;padding:18px 20px;border-radius:var(--bk-radius-sm);border:2px solid var(--bk-border);background:var(--bk-surface);cursor:pointer;transition:all var(--bk-transition);text-align:left;font-family:inherit}.time-slot:hover:not(.disabled){border-color:var(--bk-border-hover);box-shadow:var(--bk-shadow-sm)}.time-slot.selected{border-color:var(--bk-primary);background:var(--bk-primary-50);box-shadow:0 0 0 3px #1e3a2f1a}.time-slot.disabled{opacity:.45;cursor:not-allowed}.time-slot-main{display:flex;flex-direction:column;gap:2px}.time-label{font-size:15px;font-weight:700;color:var(--bk-text)}.time-range{font-size:12px;color:var(--bk-text-secondary)}.avail-badge{font-size:11px;font-weight:700;padding:4px 10px;border-radius:20px;letter-spacing:.02em}.avail-badge.available{background:var(--bk-available-bg);color:var(--bk-available)}.avail-badge.few{background:var(--bk-few-bg);color:var(--bk-few)}.avail-badge.full{background:var(--bk-full-bg);color:var(--bk-full)}.no-slots{text-align:center;color:var(--bk-text-muted);padding:24px;font-size:.9rem}.booking-form{display:flex;flex-direction:column;gap:20px}.form-group{display:flex;flex-direction:column;gap:6px}.form-group label{font-size:13px;font-weight:600;color:var(--bk-text);letter-spacing:.02em}.form-group label .required{color:var(--bk-full);margin-left:2px}.form-group input,.form-group select,.form-group textarea{padding:14px 16px;border:1.5px solid var(--bk-border);border-radius:var(--bk-radius-sm);background:var(--bk-surface);font-size:15px;color:var(--bk-text);transition:all var(--bk-transition);font-family:inherit;outline:none}.form-group input::placeholder,.form-group textarea::placeholder{color:var(--bk-text-muted)}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:var(--bk-primary);box-shadow:0 0 0 3px #1e3a2f14}.form-group textarea{resize:vertical;min-height:100px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}@media(max-width:480px){.form-row{grid-template-columns:1fr}}.dogs-interest{display:flex;flex-wrap:wrap;gap:8px;padding:12px;border:1.5px solid var(--bk-border);border-radius:var(--bk-radius-sm);background:var(--bk-surface-elevated);min-height:48px;align-items:center}.dog-chip{display:inline-flex;align-items:center;gap:4px;padding:4px 12px;background:var(--bk-primary-100);color:var(--bk-primary);border-radius:20px;font-size:13px;font-weight:600}.text-muted{font-size:13px;color:var(--bk-text-muted)}.confirm-card{background:var(--bk-surface);border-radius:var(--bk-radius);border:1px solid var(--bk-border);box-shadow:var(--bk-shadow-sm);overflow:hidden}.confirm-row{display:flex;justify-content:space-between;align-items:flex-start;padding:16px 24px;border-bottom:1px solid rgba(0,0,0,.04)}.confirm-row:last-child{border-bottom:none}.confirm-row.highlight{background:var(--bk-primary-50)}.confirm-label{font-size:13px;font-weight:600;color:var(--bk-text-secondary);min-width:110px;flex-shrink:0}.confirm-value{font-size:14px;color:var(--bk-text);text-align:right;font-weight:500}.confirm-divider{height:1px;background:var(--bk-border)}.booking-nav{display:flex;justify-content:space-between;align-items:center;padding-top:32px;margin-top:32px;border-top:1px solid var(--bk-border)}.booking-nav.hidden{display:none}.btn-back{display:inline-flex;align-items:center;gap:8px;padding:12px 24px;font-size:14px;font-weight:600;color:var(--bk-text-secondary);background:transparent;border:1.5px solid var(--bk-border);border-radius:var(--bk-radius-sm);cursor:pointer;transition:all var(--bk-transition);font-family:inherit}.btn-back:hover{border-color:var(--bk-border-hover);color:var(--bk-text)}.btn-next,.btn-submit{display:inline-flex;align-items:center;gap:8px;padding:14px 32px;font-size:14px;font-weight:700;color:#fff;background:var(--bk-primary);border:none;border-radius:var(--bk-radius-sm);cursor:pointer;transition:all var(--bk-transition);letter-spacing:.02em;font-family:inherit}.btn-next:hover:not(:disabled),.btn-submit:hover:not(:disabled){background:var(--bk-primary-light);box-shadow:var(--bk-shadow-md);transform:translateY(-1px)}.btn-next:disabled,.btn-submit:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-submit{background:linear-gradient(135deg,var(--bk-primary),var(--bk-primary-light));padding:16px 40px;font-size:15px}.success-screen{text-align:center;padding:60px 20px;animation:successFadeIn .6s ease-out}@keyframes successFadeIn{0%{opacity:0;transform:scale(.95) translateY(20px)}to{opacity:1;transform:scale(1) translateY(0)}}.success-icon{margin-bottom:24px}.check-anim{stroke-dasharray:40;stroke-dashoffset:40;animation:checkDraw .6s ease-out .3s forwards}@keyframes checkDraw{to{stroke-dashoffset:0}}.success-title{font-size:1.75rem;font-weight:700;color:var(--bk-text);margin:0 0 8px}.success-subtitle{font-size:1rem;color:var(--bk-text-secondary);margin:0 0 32px}.success-card{background:var(--bk-surface);border:1px solid var(--bk-border);border-radius:var(--bk-radius);padding:24px;display:inline-flex;flex-direction:column;gap:16px;text-align:left;margin-bottom:32px;box-shadow:var(--bk-shadow-sm)}.success-detail{display:flex;align-items:center;gap:12px}.detail-icon{font-size:20px;flex-shrink:0}.success-detail strong{color:var(--bk-text);font-size:15px}.success-detail span{font-size:14px;color:var(--bk-text-secondary)}.preview-link-btn{display:inline-flex;align-items:center;gap:8px;padding:16px 36px;background:var(--bk-primary);color:#fff;text-decoration:none;border-radius:var(--bk-radius-sm);font-weight:700;font-size:15px;transition:all var(--bk-transition);margin-bottom:24px}.preview-link-btn:hover{background:var(--bk-primary-light);box-shadow:var(--bk-shadow-md);transform:translateY(-2px)}.success-note{font-size:13px;color:var(--bk-text-muted);line-height:1.6}.booking-error{display:flex;align-items:center;gap:10px;padding:14px 18px;background:var(--bk-full-bg);border:1px solid #fca5a5;border-radius:var(--bk-radius-sm);color:var(--bk-full);font-size:14px;margin-bottom:16px;animation:shakeIn .4s ease-out}@keyframes shakeIn{0%,to{transform:translate(0)}20%{transform:translate(-6px)}40%{transform:translate(6px)}60%{transform:translate(-4px)}80%{transform:translate(4px)}}@media(max-width:640px){.booking-hero{padding:60px 0 40px}.booking-hero h1{font-size:1.75rem}.booking-container{padding:0 16px 60px}.calendar-body{padding:4px 8px 12px}.calendar-cell .day-number{font-size:12px}.visit-type-card{padding:18px;gap:14px}.visit-type-icon{width:44px;height:44px;border-radius:12px;font-size:20px}}
