/* SNHE Enterprise Frontend Batch — Modules 3, 4 & 5 V1 */
:root{--snhe-navy:#07162f;--snhe-blue:#2563eb;--snhe-violet:#7c3aed;--snhe-ink:#0f172a;--snhe-muted:#64748b;--snhe-line:#e2e8f0;--snhe-soft:#f8fafc;--snhe-success:#059669;--snhe-shadow:0 18px 48px rgba(15,23,42,.10)}
.snhe-ota-results,.snhe-hotel-details,.snhe-room-details,.snhe-checkout{background:linear-gradient(180deg,#f8fbff 0,#fff 320px);color:var(--snhe-ink)}
.snhe-ota-results .container,.snhe-hotel-details .container,.snhe-room-details .container,.snhe-checkout .container{max-width:1320px}

/* Module 3 — Search results */
.snhe-ota-results{padding-top:48px!important}
.snhe-ota-results__toolbar{position:sticky;top:82px;z-index:20;padding:14px 16px;margin-bottom:22px;border:1px solid rgba(226,232,240,.9);border-radius:16px;background:rgba(255,255,255,.94);box-shadow:0 10px 30px rgba(15,23,42,.07);backdrop-filter:blur(16px)}
.snhe-ota-results__toolbar .form-control,.snhe-ota-results__toolbar .nice-select{min-height:46px;border:1px solid var(--snhe-line);border-radius:12px;background:#fff}
.snhe-ota-results .widget-offcanvas .widget{border:1px solid var(--snhe-line)!important;border-radius:16px!important;background:#fff;box-shadow:0 8px 24px rgba(15,23,42,.05);overflow:hidden}
.snhe-ota-results .widget-offcanvas .widget-title{font-size:16px;font-weight:700;color:var(--snhe-ink)}
.snhe-ota-results__cards>.row{display:grid;grid-template-columns:1fr;gap:18px}
.snhe-ota-results__cards>.row>[class*=col-]{width:100%;max-width:none;padding:0}
.snhe-hotel-card{display:grid!important;grid-template-columns:290px minmax(0,1fr);min-height:245px;margin:0!important;border:1px solid var(--snhe-line)!important;border-radius:18px!important;background:#fff;box-shadow:0 10px 30px rgba(15,23,42,.06);overflow:hidden;transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease}
.snhe-hotel-card:hover{transform:translateY(-3px);border-color:#bfdbfe!important;box-shadow:var(--snhe-shadow)}
.snhe-hotel-card.featured:before{content:'Featured';position:absolute;z-index:4;top:14px;left:14px;padding:7px 11px;border-radius:999px;background:linear-gradient(135deg,var(--snhe-blue),var(--snhe-violet));color:#fff;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em}
.snhe-hotel-card .product_top{display:contents}
.snhe-hotel-card .product_top>.p-20{position:relative;display:flex;flex-direction:column;align-items:flex-start;padding:22px!important;text-align:left!important}
.snhe-hotel-card .product_img{grid-row:1;margin:0!important;width:290px!important;height:100%!important;min-height:245px;border-radius:0!important;overflow:hidden}
.snhe-hotel-card .product_img a,.snhe-hotel-card .product_img img{display:block;width:100%!important;height:100%!important;object-fit:cover;border-radius:0!important}
.snhe-hotel-card .btn-icon{position:absolute;right:18px;top:18px;width:42px;height:42px;border:1px solid rgba(255,255,255,.72);border-radius:50%!important;background:rgba(255,255,255,.94);box-shadow:0 8px 18px rgba(15,23,42,.13)}
.snhe-hotel-card .rank-star{margin:2px 0 8px;color:#f59e0b}
.snhe-hotel-card .product_subtitle{display:inline-flex;margin-bottom:7px;padding:5px 9px;border-radius:999px;background:#eff6ff;color:#1d4ed8;font-size:12px;font-weight:600}
.snhe-hotel-card .title h4,.snhe-hotel-card h4.title{font-size:22px;line-height:1.25;font-weight:750;color:var(--snhe-ink)}
.snhe-hotel-card .product-info_list{align-items:flex-start!important;margin:10px 0 0}
.snhe-hotel-card .product-info_list li{color:var(--snhe-muted)}
.snhe-hotel-card .product-icon_list{justify-content:flex-start!important;margin-top:auto!important}
.snhe-hotel-card .product_details{grid-column:2;padding:0 22px 22px!important;border:0!important;background:#fff}
.snhe-hotel-card .btn-groups{justify-content:flex-end!important;gap:10px}
.snhe-hotel-card .btn-primary{min-height:44px;border-radius:11px!important;background:linear-gradient(135deg,var(--snhe-blue),var(--snhe-violet));box-shadow:0 8px 18px rgba(37,99,235,.22)}

/* Module 4 — Hotel & room details */
.snhe-hotel-details,.snhe-room-details{padding-top:48px!important}
.snhe-hotel-details__shell,.snhe-room-details .product-details-wrapper{border:1px solid var(--snhe-line);border-radius:22px;background:#fff;box-shadow:var(--snhe-shadow);overflow:hidden}
.snhe-hotel-details .product-gallery,.snhe-room-details .product-gallery{border-radius:18px;overflow:hidden;background:#eaf0f8}
.snhe-hotel-details .product-gallery img,.snhe-room-details .product-gallery img{width:100%;object-fit:cover}
.snhe-hotel-details .product_details,.snhe-room-details .product_details{padding:26px}
.snhe-hotel-details h1,.snhe-hotel-details h2,.snhe-room-details h1,.snhe-room-details h2{color:var(--snhe-ink);letter-spacing:-.025em}
.snhe-hotel-details .product-icon_list,.snhe-room-details .product-icon_list{display:flex;flex-wrap:wrap;gap:10px}
.snhe-hotel-details .product-icon_list li,.snhe-room-details .product-icon_list li{display:flex;align-items:center;justify-content:center;min-width:42px;height:42px;border:1px solid var(--snhe-line);border-radius:11px;background:var(--snhe-soft)}
.snhe-hotel-details .nav-tabs,.snhe-room-details .nav-tabs{position:sticky;top:78px;z-index:16;padding:8px;border:1px solid var(--snhe-line);border-radius:14px;background:rgba(255,255,255,.96);box-shadow:0 8px 24px rgba(15,23,42,.07);backdrop-filter:blur(12px)}
.snhe-hotel-details .nav-tabs .nav-link,.snhe-room-details .nav-tabs .nav-link{border:0;border-radius:10px;color:var(--snhe-muted);font-weight:650}
.snhe-hotel-details .nav-tabs .nav-link.active,.snhe-room-details .nav-tabs .nav-link.active{background:#eff6ff;color:#1d4ed8}
.snhe-hotel-details .product-default,.snhe-room-details .product-default{border:1px solid var(--snhe-line)!important;border-radius:16px!important;box-shadow:0 8px 24px rgba(15,23,42,.06);overflow:hidden}
.snhe-room-booking-card{position:sticky;top:96px;padding:22px!important;border:1px solid #cbd5e1!important;border-radius:18px!important;background:#fff;box-shadow:var(--snhe-shadow)}
.snhe-room-booking-card .form-control,.snhe-room-booking-card .nice-select{min-height:48px;border:1px solid var(--snhe-line);border-radius:11px;background:#fff}
.snhe-room-booking-card .btn-primary,.snhe-room-details .btn-primary,.snhe-hotel-details .btn-primary{border-radius:11px;background:linear-gradient(135deg,var(--snhe-blue),var(--snhe-violet));box-shadow:0 9px 20px rgba(37,99,235,.22)}

/* Module 5 — Checkout */
.snhe-checkout{padding-top:46px!important}
.snhe-checkout__form:before{content:'1  Guest details   •   2  Payment   •   3  Confirmation';display:block;margin-bottom:22px;padding:14px 18px;border:1px solid #dbeafe;border-radius:14px;background:linear-gradient(90deg,#eff6ff,#f5f3ff);color:#334155;font-size:13px;font-weight:700;letter-spacing:.02em}
.snhe-checkout__guest-card,.snhe-checkout .additional-service,.snhe-checkout .order-summary,.snhe-checkout .widget-select,.snhe-checkout .payment-method{padding:24px!important;border:1px solid var(--snhe-line)!important;border-radius:18px!important;background:#fff;box-shadow:0 10px 30px rgba(15,23,42,.06)}
.snhe-checkout__guest-card h4,.snhe-checkout .order-summary h4,.snhe-checkout .widget-select h4{font-size:20px;font-weight:750;color:var(--snhe-ink)}
.snhe-checkout .form-group label{margin-bottom:8px;color:#334155;font-size:13px;font-weight:650}
.snhe-checkout .form-control,.snhe-checkout .nice-select{min-height:50px;border:1px solid #cbd5e1;border-radius:11px;background:#fff;transition:border-color .2s,box-shadow .2s}
.snhe-checkout .form-control:focus{border-color:#60a5fa;box-shadow:0 0 0 4px rgba(59,130,246,.12)}
.snhe-checkout__summary{position:sticky;top:92px}
.snhe-checkout .service-charge-list li{padding:10px 0;border-bottom:1px dashed var(--snhe-line)}
.snhe-checkout .service-charge-list li:last-child{border-bottom:0}
.snhe-checkout button[type=submit],.snhe-checkout .btn-primary{min-height:50px;border-radius:12px;background:linear-gradient(135deg,var(--snhe-blue),var(--snhe-violet));box-shadow:0 10px 24px rgba(37,99,235,.25);font-weight:700}
.snhe-checkout input[type=checkbox],.snhe-checkout input[type=radio]{accent-color:var(--snhe-blue)}

@media(max-width:1199px){.snhe-ota-results__toolbar{top:68px}.snhe-hotel-card{grid-template-columns:240px minmax(0,1fr)}.snhe-hotel-card .product_img{width:240px!important}.snhe-room-booking-card,.snhe-checkout__summary{position:static}}
@media(max-width:767px){.snhe-ota-results,.snhe-hotel-details,.snhe-room-details,.snhe-checkout{padding-top:28px!important}.snhe-ota-results__toolbar{position:relative;top:auto}.snhe-ota-results__toolbar .sort-list{gap:12px;flex-direction:column;align-items:stretch}.snhe-ota-results__toolbar .item{width:100%}.snhe-hotel-card{display:block!important}.snhe-hotel-card .product_top{display:block}.snhe-hotel-card .product_img{width:100%!important;height:210px!important;min-height:210px}.snhe-hotel-card .product_details{padding:0 18px 18px!important}.snhe-hotel-card .product_top>.p-20{padding:18px!important}.snhe-hotel-card .title h4,.snhe-hotel-card h4.title{font-size:19px}.snhe-checkout__form:before{font-size:11px;white-space:normal}.snhe-checkout__guest-card,.snhe-checkout .additional-service,.snhe-checkout .order-summary,.snhe-checkout .widget-select,.snhe-checkout .payment-method{padding:18px!important}.snhe-hotel-details .nav-tabs,.snhe-room-details .nav-tabs{position:relative;top:auto;overflow-x:auto;flex-wrap:nowrap}.snhe-hotel-details .nav-tabs .nav-link,.snhe-room-details .nav-tabs .nav-link{white-space:nowrap}}
@media(prefers-reduced-motion:reduce){.snhe-hotel-card,.snhe-checkout .form-control{transition:none}}
