.navbar{position:sticky;top:0;z-index:40;background:var(--mist-50);border-bottom:1px solid var(--pine-100)}.navbar-inner{display:flex;align-items:center;justify-content:space-between;height:68px;gap:var(--space-5)}.navbar-logo{display:inline-flex;align-items:center;gap:9px;flex-shrink:0}.navbar-logo-mark{width:32px;height:32px;border-radius:8px;background:var(--pine-950);color:var(--marigold-500);font-family:var(--font-display);font-weight:700;display:inline-flex;align-items:center;justify-content:center;font-size:1.05rem}.navbar-logo-text{font-family:var(--font-display);font-weight:600;font-size:1.3rem;color:var(--pine-950)}.navbar-links{display:flex;gap:var(--space-5);flex:1}.navbar-link{font-weight:600;font-size:.92rem;color:var(--pine-600);padding:6px 0;border-bottom:2px solid transparent}.navbar-link:hover{color:var(--pine-950)}.navbar-link.active{color:var(--pine-950);border-bottom-color:var(--marigold-600)}.navbar-user{font-size:.86rem;color:var(--pine-600)}@media (max-width: 720px){.navbar-links{gap:var(--space-4)}.navbar-user{display:none}}@media (max-width: 480px){.navbar-links{overflow-x:auto;white-space:nowrap;-ms-overflow-style:none;scrollbar-width:none}.navbar-links::-webkit-scrollbar{display:none}}.footer{background:var(--pine-950);color:var(--mist-100);margin-top:var(--space-9);padding-top:var(--space-8)}.footer .navbar-logo-mark{background:var(--marigold-500);color:var(--pine-950)}.footer-brand-text{font-family:var(--font-display);font-weight:600;font-size:1.25rem;color:var(--mist-0)}.footer-tagline{max-width:320px;margin-top:var(--space-3);color:var(--pine-300);font-size:.9rem;line-height:1.55}.footer-inner{display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr;gap:var(--space-6);padding-bottom:var(--space-7)}.footer-col{display:flex;flex-direction:column;gap:10px}.footer-col a{color:var(--pine-100);font-size:.9rem}.footer-col a:hover{color:var(--marigold-500)}.footer .divider{background:#ffffff1f}.footer-bottom{padding:var(--space-4) 0 var(--space-6);font-size:.8rem}@media (max-width: 780px){.footer-inner{grid-template-columns:1fr 1fr}}.search-bar{display:flex;align-items:stretch;background:var(--mist-0);border-radius:var(--radius-lg);box-shadow:var(--shadow-pop);padding:var(--space-3) var(--space-3);gap:var(--space-3)}.search-bar-field{flex:1.4;min-width:0}.search-bar-field-narrow{flex:1}.search-bar-field label{font-family:var(--font-mono);font-size:.66rem;letter-spacing:.08em;text-transform:uppercase}.search-bar-field input,.search-bar-field select{border:none;padding:4px 2px;font-weight:600;color:var(--pine-950)}.search-bar-field input:focus,.search-bar-field select:focus{outline:none;border-color:transparent}.search-bar-divider{width:1px;background:var(--pine-100);margin:4px 0}.search-bar-submit{align-self:center;flex-shrink:0}.search-bar-compact{box-shadow:var(--shadow-card);padding:var(--space-2) var(--space-3)}@media (max-width: 860px){.search-bar{flex-wrap:wrap;border-radius:var(--radius-md)}.search-bar-divider{display:none}.search-bar-field{flex:1 1 42%}.search-bar-submit{flex:1 1 100%}}.hotel-card{display:flex;flex-direction:column;background:var(--mist-0);border-radius:var(--radius-md);box-shadow:var(--shadow-card);overflow:hidden;transition:transform .16s ease,box-shadow .16s ease}.hotel-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-pop)}.hotel-card-image{position:relative;aspect-ratio:4 / 3;background:var(--mist-100)}.hotel-card-image img{width:100%;height:100%;object-fit:cover}.hotel-card-image-fallback{width:100%;height:100%;background:linear-gradient(135deg,var(--mist-100),var(--pine-100))}.hotel-card-rating{position:absolute;top:12px;right:12px;background:#f4f6f1f0}.hotel-card .ticket-perforation{margin-top:-1px}.hotel-card-body{padding:var(--space-4) var(--space-4) var(--space-4);display:flex;flex-direction:column;gap:2px;flex:1}.hotel-card-name{font-size:1.15rem;margin-top:2px}.hotel-card-address{font-size:.86rem;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hotel-card-footer{margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--pine-100)}.hotel-card-price{font-size:1.05rem;font-weight:600;color:var(--pine-950)}.hero{position:relative;background:var(--pine-950);padding:var(--space-9) 0 var(--space-8);overflow:hidden}.hero-route{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.hero-inner{position:relative;z-index:1;max-width:720px}.hero-eyebrow{color:var(--marigold-500)}.hero-title{color:var(--mist-0);margin-top:var(--space-3)}.hero-sub{color:var(--pine-100);margin-top:var(--space-4);font-size:1.05rem;max-width:480px}.hero-search{margin-top:var(--space-6);max-width:900px}.destination-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-4)}.destination-card{background:var(--mist-0);border:1px solid var(--pine-100);border-radius:var(--radius-md);padding:var(--space-5);transition:border-color .15s ease,transform .15s ease}.destination-card:hover{border-color:var(--marigold-600);transform:translateY(-2px)}.hotel-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-5)}@media (max-width: 1020px){.destination-grid,.hotel-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 560px){.destination-grid,.hotel-grid{grid-template-columns:1fr}}.listing-search-band{background:var(--pine-950);padding:var(--space-5) 0}.listing-header{align-items:flex-end;flex-wrap:wrap;gap:var(--space-4);margin-bottom:var(--space-2)}.listing-controls .field label{font-family:var(--font-mono);font-size:.64rem;text-transform:uppercase;letter-spacing:.08em}.listing-controls select{min-width:140px}.detail-header{margin-bottom:var(--space-5)}.detail-gallery{display:flex;gap:var(--space-3);margin-bottom:var(--space-7)}.detail-gallery-main{flex:1;aspect-ratio:16 / 8;border-radius:var(--radius-lg);overflow:hidden;background:var(--mist-100)}.detail-gallery-main img{width:100%;height:100%;object-fit:cover}.detail-gallery-thumbs{display:flex;flex-direction:column;gap:var(--space-2);width:96px;flex-shrink:0}.detail-thumb{border:2px solid transparent;border-radius:var(--radius-sm);overflow:hidden;padding:0;height:64px;background:var(--mist-100)}.detail-thumb img{width:100%;height:100%;object-fit:cover}.detail-thumb.active{border-color:var(--marigold-600)}.detail-layout{display:grid;grid-template-columns:1fr 320px;gap:var(--space-7);align-items:start}.detail-description{margin-top:var(--space-3);max-width:62ch;line-height:1.65}.room-list{display:flex;flex-direction:column;gap:var(--space-4);margin-top:var(--space-4)}.room-card-top{padding:var(--space-4) var(--space-4) var(--space-3)}.room-card-bottom{padding:var(--space-3) var(--space-4) var(--space-4)}.detail-side{position:sticky;top:84px}.detail-dates-card{padding-top:2px}@media (max-width: 900px){.detail-layout{grid-template-columns:1fr}.detail-side{position:static}.detail-gallery{flex-direction:column-reverse}.detail-gallery-thumbs{flex-direction:row;width:100%}.detail-thumb{height:56px;flex:1}}.booking-layout{display:grid;grid-template-columns:1fr 340px;gap:var(--space-7);align-items:start}.booking-form-section{padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-3)}.payment-options{display:flex;flex-direction:column;gap:var(--space-2)}.payment-option{display:flex;align-items:center;gap:10px;border:1px solid var(--pine-100);border-radius:var(--radius-sm);padding:12px 14px;cursor:pointer}.payment-option.active{border-color:var(--teal-500);background:var(--teal-100)}.payment-option input{accent-color:var(--teal-700)}.booking-summary{position:sticky;top:84px}.booking-summary-rows{display:flex;flex-direction:column;gap:10px;padding:var(--space-4);font-size:.88rem}.booking-summary-total{padding:var(--space-4);font-weight:700;font-size:1.1rem}@media (max-width: 900px){.booking-layout{grid-template-columns:1fr}.booking-summary{position:static}}.confirm-section{max-width:640px}.confirm-header{margin-bottom:var(--space-6)}.confirm-ticket-top{padding:var(--space-5) var(--space-5) var(--space-4)}.confirm-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-3);padding:var(--space-4) var(--space-5)}.confirm-footer{padding:var(--space-4) var(--space-5) var(--space-5)}@media (max-width: 560px){.confirm-grid{grid-template-columns:repeat(2,1fr);gap:var(--space-4)}}.my-bookings{max-width:760px}.lookup-form{display:flex;align-items:end;gap:var(--space-3);margin-bottom:var(--space-6)}.lookup-field{flex:1}.booking-list{display:flex;flex-direction:column;gap:var(--space-4)}.booking-list-top{padding:var(--space-4) var(--space-4) var(--space-3)}.booking-list-bottom{padding:var(--space-3) var(--space-4) var(--space-4)}@media (max-width: 560px){.lookup-form{flex-direction:column;align-items:stretch}}.auth-wrap{max-width:420px;margin:0 auto}.auth-header{text-align:center;margin-bottom:var(--space-6)}.auth-header .eyebrow{display:block;margin-bottom:6px}.auth-card{padding:var(--space-5);display:flex;flex-direction:column;gap:var(--space-4)}.role-toggle{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:4px;background:var(--mist-100);border-radius:var(--radius-sm)}.role-toggle-option{display:flex;flex-direction:column;align-items:center;gap:2px;padding:10px 8px;border-radius:6px;border:none;background:transparent;color:var(--pine-600);font-weight:600;font-size:.86rem}.role-toggle-option.active{background:var(--mist-0);color:var(--pine-950);box-shadow:var(--shadow-card)}.role-toggle-option span.hint{font-weight:400;font-size:.72rem;color:var(--pine-300)}.role-toggle-option.active span.hint{color:var(--pine-600)}.auth-switch{text-align:center;font-size:.88rem;color:var(--pine-600)}.auth-switch a{color:var(--teal-700);font-weight:600}.auth-switch a:hover{text-decoration:underline}.manager-dashboard{max-width:980px}.manager-form{max-width:560px}.manager-hotel-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:var(--space-5)}.manager-hotel-card{padding:var(--space-5)}.manager-room-list{margin-top:var(--space-2)}.manager-room-row{padding:var(--space-2) 0;border-bottom:1px solid var(--pine-100);align-items:flex-start}.manager-room-row:last-of-type{border-bottom:none}.room-form{margin-top:var(--space-3);padding:var(--space-3);background:var(--mist-100);border-radius:10px}.bookings-table-wrap{overflow-x:auto;border-radius:12px;border:1px solid var(--pine-100)}.bookings-table{width:100%;border-collapse:collapse;font-size:.88rem;min-width:720px}.bookings-table th{text-align:left;padding:var(--space-3);background:var(--mist-100);color:var(--pine-600);font-weight:600;font-size:.78rem;text-transform:uppercase;letter-spacing:.02em}.bookings-table td{padding:var(--space-3);border-top:1px solid var(--pine-100);vertical-align:top}@media (max-width: 560px){.manager-hotel-grid{grid-template-columns:1fr}}.admin-dashboard{max-width:1040px}.admin-stats-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:var(--space-4)}.admin-stat-card{padding:var(--space-4)}:root{--pine-950: #0f1a14;--pine-800: #16241d;--pine-600: #3a4d40;--pine-300: #97a89b;--pine-100: #dfe6e0;--mist-50: #f4f6f1;--mist-100: #eaeee3;--mist-0: #ffffff;--marigold-600: #d68b1f;--marigold-500: #e8a33d;--marigold-100: #fbead0;--teal-700: #164d45;--teal-500: #1f6f64;--teal-100: #dcece8;--rust-600: #b6431f;--rust-100: #f7e1d7;--gold-500: #c99a2e;--font-display: "Fraunces", "Georgia", serif;--font-body: "Inter", -apple-system, BlinkMacSystemFont, sans-serif;--font-mono: "IBM Plex Mono", "SFMono-Regular", monospace;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--space-7: 48px;--space-8: 64px;--space-9: 96px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 18px;--content-width: 1180px;--shadow-card: 0 1px 2px rgba(15, 26, 20, .06), 0 8px 24px rgba(15, 26, 20, .07);--shadow-pop: 0 12px 32px rgba(15, 26, 20, .16)}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--mist-50);color:var(--pine-800);font-family:var(--font-body);font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased}img{max-width:100%;display:block}a{color:inherit;text-decoration:none}button{font-family:inherit;cursor:pointer}input,select,textarea{font-family:inherit;font-size:inherit}ul{list-style:none;margin:0;padding:0}h1,h2,h3,h4,p{margin:0}:focus-visible{outline:2px solid var(--teal-500);outline-offset:2px}.display-xl{font-family:var(--font-display);font-weight:600;font-size:clamp(2.4rem,4.2vw,3.6rem);line-height:1.05;letter-spacing:-.01em;color:var(--pine-950)}.display-lg{font-family:var(--font-display);font-weight:600;font-size:clamp(1.7rem,2.6vw,2.3rem);line-height:1.12;color:var(--pine-950)}.display-md{font-family:var(--font-display);font-weight:600;font-size:1.4rem;line-height:1.2;color:var(--pine-950)}.eyebrow{font-family:var(--font-mono);font-size:.72rem;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--teal-700)}.mono-stat{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.text-muted{color:var(--pine-600)}.text-faint{color:var(--pine-300)}.container{width:100%;max-width:var(--content-width);margin:0 auto;padding:0 var(--space-5)}.page-section{padding:var(--space-8) 0}.stack{display:flex;flex-direction:column}.row{display:flex;align-items:center}.spread{display:flex;align-items:center;justify-content:space-between}.wrap{flex-wrap:wrap}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);border-radius:var(--radius-sm);border:1px solid transparent;font-weight:600;font-size:.94rem;padding:12px 22px;transition:transform .12s ease,box-shadow .12s ease,background .15s ease,border-color .15s ease;white-space:nowrap}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.55;cursor:not-allowed;transform:none}.btn-primary{background:var(--marigold-600);color:var(--pine-950)}.btn-primary:hover:not(:disabled){background:var(--marigold-500);box-shadow:var(--shadow-pop)}.btn-dark{background:var(--pine-950);color:var(--mist-50)}.btn-dark:hover:not(:disabled){background:var(--teal-700)}.btn-outline{background:transparent;border-color:var(--pine-100);color:var(--pine-800)}.btn-outline:hover:not(:disabled){border-color:var(--pine-800)}.btn-ghost{background:transparent;color:var(--pine-800);padding:10px 14px}.btn-ghost:hover:not(:disabled){background:var(--mist-100)}.btn-block{width:100%}.btn-sm{padding:8px 14px;font-size:.85rem}.field{display:flex;flex-direction:column;gap:6px}.field label{font-size:.78rem;font-weight:600;color:var(--pine-600);letter-spacing:.01em}.field input,.field select,.field textarea{border:1px solid var(--pine-100);background:var(--mist-0);border-radius:var(--radius-sm);padding:11px 12px;color:var(--pine-800)}.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid var(--teal-500);outline-offset:1px;border-color:var(--teal-500)}.field-error{color:var(--rust-600);font-size:.78rem}.card{background:var(--mist-0);border-radius:var(--radius-md);box-shadow:var(--shadow-card);border:1px solid var(--pine-100)}.ticket{position:relative;background:var(--mist-0);border-radius:var(--radius-md);box-shadow:var(--shadow-card);overflow:visible}.ticket-perforation{position:relative;border-top:1.5px dashed var(--pine-100);margin:0 var(--space-4)}.ticket-perforation:before,.ticket-perforation:after{content:"";position:absolute;top:-8px;width:16px;height:16px;background:var(--mist-50);border-radius:50%}.ticket-perforation:before{left:-24px}.ticket-perforation:after{right:-24px}.badge{display:inline-flex;align-items:center;gap:4px;font-family:var(--font-mono);font-size:.72rem;font-weight:500;padding:4px 9px;border-radius:999px}.badge-teal{background:var(--teal-100);color:var(--teal-700)}.badge-marigold{background:var(--marigold-100);color:var(--marigold-600)}.badge-rust{background:var(--rust-100);color:var(--rust-600)}.divider{height:1px;background:var(--pine-100);border:none}.skeleton{background:linear-gradient(90deg,var(--mist-100) 25%,var(--pine-100) 37%,var(--mist-100) 63%);background-size:400% 100%;animation:shimmer 1.4s ease infinite;border-radius:var(--radius-sm)}@keyframes shimmer{0%{background-position:100% 50%}to{background-position:0 50%}}@media (prefers-reduced-motion: reduce){*{animation-duration:.001ms!important;transition-duration:.001ms!important}}@media (max-width: 720px){.container{padding:0 var(--space-4)}.page-section{padding:var(--space-6) 0}}
