/* R134 modules.css — consolidated component styles */
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;font-family:var(--ff-body);font-size:var(--fs-base);line-height:var(--lh-normal);color:var(--clr-text);background:var(--clr-bg)}
img{max-width:100%;display:block}
a{color:var(--clr-primary);text-decoration:none}
section,footer{padding:var(--space-48) var(--container-padding);max-width:var(--container-max);margin:0 auto}
.section-title{font-family:var(--ff-heading);font-size:var(--section-title-size);font-weight:var(--fw-bold);text-align:center;margin:0 0 var(--space-16)}
.section-subtitle{text-align:center;color:var(--clr-text-secondary);margin:0 0 var(--space-32);font-size:var(--section-subtitle-size)}
.empty-state{text-align:center;padding:var(--space-48);color:var(--clr-text-muted);background:var(--clr-surface);border-radius:var(--card-radius)}
.btn{display:inline-flex;align-items:center;justify-content:center;height:var(--btn-height);padding:var(--btn-padding);border-radius:var(--btn-radius);font-size:var(--btn-font-size);font-weight:var(--btn-font-weight);border:none;cursor:pointer;transition:transform var(--dur-fast)}
.btn-primary{background:var(--clr-primary);color:var(--clr-primary-contrast);box-shadow:var(--shadow-md)}
.btn-outline{background:transparent;color:var(--clr-white);border:2px solid rgba(255,255,255,.85)}
.btn-block{width:100%}
.hidden{display:none!important}
.tag{display:inline-block;padding:var(--space-4) var(--space-12);background:var(--clr-secondary-light);color:var(--clr-primary-dark);border-radius:var(--radius-full);font-size:var(--fs-sm)}
.main-nav{position:fixed;top:0;left:0;right:0;z-index:var(--z-sticky);transition:background var(--dur-normal),box-shadow var(--dur-normal)}
.main-nav .nav-container{max-width:var(--container-max);margin:0 auto;padding:var(--space-12) var(--container-padding);display:flex;align-items:center;justify-content:space-between;gap:var(--space-12)}
.nav-brand{font-weight:var(--fw-bold);color:var(--clr-white);font-size:var(--fs-lg)}
.nav-scrolled{background:rgba(255,255,255,.97);box-shadow:var(--shadow-md)}
.nav-scrolled .nav-brand,.nav-scrolled .nav-link{color:var(--clr-text)}
.nav-links{display:flex;gap:var(--space-12);flex-wrap:wrap}
.nav-link{color:rgba(255,255,255,.9);font-size:var(--fs-sm);font-weight:var(--fw-medium)}
#hero-section{position:relative;min-height:var(--hero-height-mobile);max-width:none;padding:0;margin:0;width:100%;display:flex;align-items:center;justify-content:center;color:var(--clr-white)}
@media(min-width:768px){#hero-section{min-height:var(--hero-height)}}
.hero-bg{position:absolute;inset:0;background-size:cover;background-position:center}
.hero-overlay{position:absolute;inset:0;background:var(--hero-overlay)}
.hero-content{position:relative;z-index:2;text-align:center;padding:var(--space-48) var(--space-24);max-width:800px}
.hero-title{font-size:var(--fs-3xl);font-weight:var(--fw-bold);margin:0 0 var(--space-16);line-height:var(--lh-tight)}
.hero-subtitle{font-size:var(--fs-lg);margin:0 0 var(--space-32);opacity:.95}
.hero-ctas{display:flex;gap:var(--space-16);justify-content:center;flex-wrap:wrap}
@keyframes fadeInUp{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}
#value-props-section{background:var(--clr-surface)}
.value-props-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:var(--space-20)}
.value-prop-item{text-align:center;padding:var(--space-20);background:var(--clr-bg);border-radius:var(--card-radius);box-shadow:var(--shadow-sm)}
.value-prop-icon{font-size:32px;margin-bottom:var(--space-8)}
.value-prop-title{font-weight:var(--fw-semibold);margin:0 0 var(--space-4)}
.value-prop-desc{font-size:var(--fs-sm);color:var(--clr-text-secondary);margin:0}
#service-tiers-section{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:var(--space-20)}
.tier-card{background:var(--clr-surface);border-radius:var(--card-radius);padding:var(--card-padding);box-shadow:var(--card-shadow);border:1px solid var(--clr-border);transition:transform var(--dur-normal),box-shadow var(--dur-normal)}
.tier-card.tier-active,.tier-card:hover{transform:var(--card-hover-transform);box-shadow:var(--shadow-lg)}
.tier-icon img{width:var(--tier-icon-size);height:var(--tier-icon-size)}
.tier-name{margin:var(--space-12) 0 var(--space-8)}
.tier-desc{color:var(--clr-text-secondary);font-size:var(--fs-sm)}
.tier-features{list-style:none;padding:0;margin:var(--space-16) 0}
.tier-feature-item{font-size:var(--fs-sm);padding:var(--space-4) 0}
.tier-price{font-weight:var(--fw-bold);color:var(--clr-primary);font-size:var(--fs-lg)}
.gallery-filters{display:flex;gap:var(--space-8);flex-wrap:wrap;justify-content:center;margin-bottom:var(--space-24)}
.gallery-filter-btn{padding:var(--space-8) var(--space-16);border:1px solid var(--clr-border);background:var(--clr-surface);border-radius:var(--radius-full);cursor:pointer}
.gallery-filter-btn.active{background:var(--clr-primary);color:var(--clr-white);border-color:var(--clr-primary)}
.gallery-grid.masonry{display:grid;grid-template-columns:repeat(var(--gallery-columns),1fr);gap:var(--gallery-gap)}
@media(max-width:639px){.gallery-grid.masonry{grid-template-columns:1fr}}
.gallery-item{position:relative;border-radius:var(--radius-lg);overflow:hidden;cursor:pointer}
.gallery-item-overlay{position:absolute;bottom:0;left:0;right:0;padding:var(--space-8);background:linear-gradient(transparent,rgba(0,0,0,.55));color:#fff;font-size:var(--fs-sm)}
.lightbox-overlay{position:fixed;inset:0;background:rgba(0,0,0,.88);z-index:var(--z-modal);display:flex;align-items:center;justify-content:center}
.lightbox-overlay img{max-height:85vh;max-width:90vw}
.lightbox-close,.lightbox-prev,.lightbox-next{position:absolute;background:rgba(255,255,255,.15);color:#fff;border:none;font-size:24px;padding:var(--space-12);cursor:pointer;border-radius:var(--radius-md)}
.lightbox-close{top:16px;right:16px}
.lightbox-prev{left:16px}
.lightbox-next{right:16px}
.panorama-viewer{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;height:var(--panorama-height);border-radius:var(--radius-xl);background:var(--clr-gray-200)}
.panorama-frame{flex:0 0 100%;scroll-snap-align:start;height:100%}
.panorama-img{width:100%;height:100%;object-fit:cover}
.panorama-indicator{display:flex;justify-content:center;gap:var(--space-8);margin-top:var(--space-16)}
.panorama-dot{width:10px;height:10px;border-radius:50%;background:var(--clr-gray-400);cursor:pointer}
.panorama-dot.active{background:var(--clr-primary)}
#rooms-section .rooms-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:var(--space-24)}
.room-card{background:var(--clr-surface);border-radius:var(--card-radius);overflow:hidden;box-shadow:var(--card-shadow)}
.room-card img{height:180px;width:100%;object-fit:cover}
.room-card-body{padding:var(--space-20)}
.room-features{list-style:none;padding:0;font-size:var(--fs-sm);color:var(--clr-text-secondary)}
.room-price{font-weight:var(--fw-bold);color:var(--clr-primary);margin-top:var(--space-12)}
.cost-comparison-grid{display:grid;grid-template-columns:1fr auto 1fr;gap:var(--space-16);align-items:stretch}
@media(max-width:639px){.cost-comparison-grid{grid-template-columns:1fr}}
.cost-col{background:var(--clr-surface);padding:var(--space-24);border-radius:var(--card-radius);box-shadow:var(--shadow-sm)}
.cost-col-facility{border:2px solid var(--clr-primary)}
.cost-col-amount{font-size:var(--fs-2xl);font-weight:var(--fw-bold)}
.cost-col-amount.highlight{color:var(--clr-primary)}
.cost-unit{font-size:var(--fs-md);font-weight:var(--fw-normal)}
.cost-vs{font-weight:var(--fw-bold);color:var(--clr-text-muted)}
.cost-saving-banner{margin-top:var(--space-24);text-align:center;padding:var(--space-20);background:linear-gradient(90deg,var(--clr-secondary-light),var(--clr-accent));border-radius:var(--radius-xl);font-weight:var(--fw-semibold)}
.cost-saving-amount{font-size:var(--fs-xl);color:var(--clr-primary-dark)}
.testimonials-carousel{position:relative;max-width:640px;margin:0 auto}
.testimonials-track{display:flex;transition:transform var(--dur-slow) var(--ease-out)}
.testimonial-card{flex:0 0 100%;padding:var(--space-24);background:var(--clr-surface);border-radius:var(--card-radius);box-shadow:var(--card-shadow)}
.testimonial-text{font-style:italic;margin:var(--space-16) 0;font-size:var(--fs-lg)}
.testimonial-author{display:flex;align-items:center;gap:var(--space-12)}
.testimonial-avatar{width:var(--testimonial-avatar-size);height:var(--testimonial-avatar-size);border-radius:50%;object-fit:cover}
.testimonial-stars{color:var(--clr-accent)}
.trust-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-24);text-align:center;margin-bottom:var(--space-32)}
.trust-stat-num{font-size:var(--trust-stat-size);font-weight:var(--fw-bold);color:var(--clr-primary)}
.trust-certs{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-24)}
.trust-cert{text-align:center;font-size:var(--fs-sm)}
.trust-cert img{width:64px;height:64px;margin:0 auto var(--space-8)}
.team-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:var(--space-24);text-align:center}
.team-photo{width:96px;height:96px;border-radius:50%;object-fit:cover;margin:0 auto var(--space-12);border:3px solid var(--clr-secondary)}
.activity-week{display:grid;grid-template-columns:repeat(auto-fit,minmax(100px,1fr));gap:var(--space-12)}
.activity-day{background:var(--clr-surface);padding:var(--space-12);border-radius:var(--radius-md);border:1px solid var(--clr-border);font-size:var(--fs-sm)}
.activity-day strong{display:block;color:var(--clr-primary)}
.faq-item{border:var(--faq-border);border-radius:var(--faq-radius);margin-bottom:var(--space-12);background:var(--clr-surface)}
.faq-q{width:100%;text-align:left;padding:var(--space-16);background:none;border:none;font-weight:var(--fw-semibold);cursor:pointer;display:flex;justify-content:space-between}
.faq-a{padding:0 var(--space-16) var(--space-16);color:var(--clr-text-secondary)}
.booking-form{max-width:480px;margin:0 auto}
.booking-field{margin-bottom:var(--space-16)}
.booking-field label{display:block;margin-bottom:var(--space-8);font-weight:var(--fw-medium)}
.booking-field input,.booking-field textarea{width:100%;padding:var(--space-12);border:1px solid var(--clr-border);border-radius:var(--radius-md);font-size:var(--fs-base)}
.field-error{color:var(--clr-error);font-size:var(--fs-sm)}
.required{color:var(--clr-error)}
.booking-contact-options{display:flex;gap:var(--space-12);justify-content:center;flex-wrap:wrap;margin-bottom:var(--space-24)}
.booking-contact-btn{padding:var(--space-12) var(--space-20);background:var(--clr-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}
.booking-success{text-align:center;padding:var(--space-32)}
#footer-section{background:var(--clr-primary-dark);color:var(--clr-white);max-width:none;text-align:center}
.footer-inst-name{font-size:var(--fs-xl);font-weight:var(--fw-bold)}
.footer-meta{margin:var(--space-8) 0;font-size:var(--fs-sm);opacity:.9}
.fab-cta{position:fixed;bottom:calc(var(--fab-margin) + 72px);right:var(--fab-margin);z-index:var(--z-dropdown);opacity:0;pointer-events:none;transition:opacity var(--dur-normal)}
.fab-cta.fab-visible{opacity:1;pointer-events:auto}
.fab-main-btn{width:var(--fab-size);height:var(--fab-size);border-radius:50%;background:var(--clr-primary);color:#fff;border:none;font-size:24px;cursor:pointer;box-shadow:var(--shadow-lg)}
.fab-menu{display:none;flex-direction:column;gap:var(--space-8);margin-bottom:var(--space-12)}
.fab-menu.fab-menu-open{display:flex}
.fab-menu-item{display:flex;align-items:center;gap:var(--space-8);padding:var(--space-8) var(--space-16);background:var(--clr-surface);border-radius:var(--radius-full);box-shadow:var(--shadow-md);border:none;cursor:pointer;text-decoration:none;color:var(--clr-text);font-size:var(--fs-sm)}
.sticky-cta{position:fixed;bottom:0;left:0;right:0;background:var(--clr-surface);box-shadow:0 -4px 16px rgba(0,0,0,.1);padding:var(--space-12) var(--space-16);display:flex;gap:var(--space-12);z-index:var(--z-sticky);transform:translateY(100%);transition:transform var(--dur-normal)}
.sticky-cta.visible{transform:translateY(0)}
.sticky-cta .btn{flex:1}
.a11y-toggle{position:fixed;top:72px;right:var(--space-16);z-index:var(--z-dropdown);width:44px;height:44px;border-radius:50%;border:2px solid var(--clr-primary);background:var(--clr-surface);cursor:pointer;font-size:14px}
.r134-toast{position:fixed;bottom:100px;left:50%;transform:translateX(-50%);background:rgba(0,0,0,.8);color:#fff;padding:var(--space-12) var(--space-24);border-radius:var(--radius-full);z-index:var(--z-toast);font-size:var(--fs-sm)}
.contact-footer{padding:var(--space-16);background:#1a1a1a;color:#fff;text-align:center}
.contact-footer__btns{display:flex;gap:var(--space-8);justify-content:center;flex-wrap:wrap;margin-bottom:var(--space-8)}
.contact-footer__cta,.contact-footer__btn{padding:var(--space-8) var(--space-16);border-radius:var(--radius-full);font-size:var(--fs-sm)}
.contact-footer__cta{background:var(--clr-accent);color:#fff}
.contact-footer__btn{background:#333;color:#fff;border:none;cursor:pointer;text-decoration:none;display:inline-block}
.contact-footer__brand{font-size:var(--fs-xs);opacity:.7;margin:0}
body.has-contact-footer{padding-bottom:120px}
@media(min-width:768px){body.has-contact-footer{padding-bottom:80px}}
