/* Shared presentation layer. Keep workflows and semantic status colours intact. */
:root{--lux-violet:#54245b;--lux-mauve:#815487;--lux-gold:#c69a38;--lux-line:#e5d6e5;--lux-paper:#fffdf9}
body.vh-surface{line-height:1.6}
.vh-surface :where(main,section,article,nav,form,label,fieldset,div){min-width:0}
.vh-surface :where(h1,h2,h3,p,li,label,a,button,dd,dt){overflow-wrap:break-word}
.vh-surface :where(h1,h2,h3){text-wrap:balance}
.vh-surface :where(p,li){text-wrap:pretty}
.vh-surface :where(img,video,iframe){max-width:100%}
.vh-surface :where(button,.button,.cta,.back){white-space:normal;text-align:center;max-width:100%;line-height:1.45}
.vh-surface :where(button,.button,.cta){min-height:44px}
.vh-surface :where(input,select,textarea){max-width:100%;box-sizing:border-box}
.vh-surface :where(a,button,input,select,textarea,summary):focus-visible{outline:3px solid var(--lux-gold);outline-offset:4px}
body.vh-public :where(.section-heading,.services-intro){text-align:center}
body.vh-public :where(.section-heading){justify-content:center;flex-wrap:wrap}
body.vh-public :where(.rooms-grid,.services-grid,.unique-grid,.feature-panels){max-width:1440px;margin-inline:auto}
body.vh-public .room-card{display:flex;flex-direction:column}
body.vh-public .room-content{flex:1;display:flex;flex-direction:column}
body.vh-public .room-content .text-button{margin-top:auto}
body.vh-public :where(.contact-links,.header-actions){min-width:0}
body.vh-public .contact-links a{overflow-wrap:anywhere}
body.vh-guide :where(.grid,.places){align-items:stretch}
body.vh-guide .card p{display:block;overflow:visible;-webkit-line-clamp:unset}
body.vh-guide .section h2{text-align:center}
body.vh-guide .place{padding:clamp(20px,2.5vw,30px);box-shadow:0 12px 32px #421b4a08}
body.vh-guide .top{height:auto;min-height:94px;flex-wrap:wrap;padding-block:14px}
body.vh-app .card{border:1px solid var(--lux-line);background:var(--lux-paper)}
body.vh-app .button{background:linear-gradient(135deg,var(--lux-mauve),var(--lux-violet));border:1px solid var(--lux-gold)}
body.vh-app .button.secondary{background:#f5edf4;color:#54245b;border-color:#d8c7d8}
body.vh-app .card h2{text-align:center;color:var(--lux-violet)}
body.vh-app .app-brand{flex-wrap:wrap;justify-content:center;text-align:center}
body.vh-admin>main{max-width:1440px;margin-inline:auto;padding:clamp(24px,4vw,64px) clamp(16px,4vw,64px)}
body.vh-admin>main>h1{font-size:clamp(32px,5vw,48px)!important;line-height:1.15;text-align:center}
body.vh-admin>main>p{text-align:center;max-width:80ch;margin-inline:auto}
body.vh-admin #loginPanel{margin-inline:auto;border:1px solid var(--lux-line)}
body.vh-admin .admin-menu button{border-color:var(--lux-line);box-shadow:0 8px 24px #54245b0a}
body.vh-admin .admin-menu button.active{background:linear-gradient(135deg,var(--lux-violet),var(--lux-mauve));border-color:var(--lux-gold)}
body.vh-admin .admin-module{border-color:var(--lux-line)}
body.vh-admin :where(.admin-section-title,.cancel-review-actions){row-gap:16px}
body.vh-guest :where(.guest-detail,.guest-login-card,.guest-balance-panel){border-color:var(--lux-line);box-shadow:0 12px 32px #421b4a08}
body.vh-guest .local-guide-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr))}
body.vh-guest .local-guide-card{border-radius:16px;background:var(--lux-paper);display:flex;flex-direction:column}
body.vh-guest .local-guide-card>div{flex:1;display:flex;flex-direction:column;padding:24px}
body.vh-guest .local-guide-card .guide-actions{margin-top:auto;padding-top:12px}
body.vh-guest .guest-detail :where(p,li){line-height:1.75}
body.vh-guest .guest-detail dl div{gap:16px;flex-wrap:wrap}
body.vh-guest .guest-detail dd{overflow-wrap:anywhere}
body.vh-legal main{box-sizing:border-box;width:min(880px,calc(100% - 32px));margin-inline:auto}
body.vh-legal nav{display:flex;flex-wrap:wrap;gap:16px;justify-content:center}
body.vh-gallery .tabs{display:flex;flex-wrap:wrap;justify-content:center;gap:10px}
@media(max-width:1080px){
 body.vh-public .site-header{height:auto;min-height:80px;flex-wrap:wrap;padding-block:12px}
 body.vh-public .main-nav{display:flex;order:3;width:100%;margin:0;justify-content:center;flex-wrap:wrap;gap:8px 18px}
 body.vh-public .main-nav a{display:inline-flex;align-items:center;min-height:44px;font-size:13px}
 body.vh-public .header-actions{flex-wrap:wrap;justify-content:flex-end;gap:10px}
}
@media(max-width:640px){
 .vh-surface :where(input,select,textarea){font-size:16px}
 body.vh-public .site-header{position:relative;padding-inline:16px;justify-content:center}
 body.vh-public .header-actions{width:100%;justify-content:center;margin:0}
 body.vh-public .header-book{display:inline-flex}
 body.vh-public :where(.quote-band,.section-heading){text-align:center}
 body.vh-public .quote-band .button{width:100%}
 body.vh-public .chatbox{width:min(310px,calc(100vw - 32px));right:16px}
 body.vh-guide .top{position:relative;justify-content:center;gap:12px 20px}
 body.vh-guide .langs{margin:0}
 body.vh-guide .back{flex-basis:100%;order:3}
 body.vh-guide .hero h1{font-size:clamp(40px,11vw,64px);line-height:1.08}
 body.vh-admin .admin-menu{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
 body.vh-admin .admin-menu button{padding:14px 10px;font-size:14px}
 body.vh-admin .admin-module{padding:18px!important}
 body.vh-guest :where(.guest-welcome,.desktop-page-title,.guest-balance-total,.guest-balance-line){flex-wrap:wrap;gap:12px}
 body.vh-guest .desktop-page-title>div{max-width:100%}
 body.vh-guest .guest-actions{grid-template-columns:repeat(2,minmax(0,1fr))}
 body.vh-guest .guest-upsell-grid{grid-template-columns:1fr}
 body.vh-app main{padding-block:24px}
}
@media(prefers-reduced-motion:reduce){.vh-surface{scroll-behavior:auto}.vh-surface :where(a,button,article){transition:none!important}}
