/*
Theme Name: Royal Grand Villa
Theme URI: https://royalgrandvilla.com
Author: Reliancy
Description: A premium, plugin-free countryside villa theme with native content management and booking enquiries.
Version: 0.15.0
Requires at least: 6.4
Requires PHP: 8.1
Text Domain: royal-grand-villa
License: GPL-2.0-or-later
*/
:root{--ivory:#f5f1e8;--forest:#28382f;--gold:#b59a6a;--stone:#a79d8e;--charcoal:#242623;--white:#fff;--serif:Georgia,"Times New Roman",serif;--sans:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
*,*::before,*::after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:88px}body{margin:0;color:var(--charcoal);background:var(--ivory);font-family:var(--sans);line-height:1.65;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button,input,textarea,select{font:inherit}button{cursor:pointer}img{max-width:100%;height:auto}h1,h2,h3,p{margin-top:0}h1,h2,h3{font-family:var(--serif);font-weight:400;line-height:1.12}h1{font-size:clamp(3.2rem,7.6vw,7.2rem);letter-spacing:-.045em}h2{font-size:clamp(2.5rem,5vw,5.2rem);letter-spacing:-.035em}h3{font-size:clamp(1.6rem,2.7vw,2.5rem)}p{color:inherit}.wrap{width:min(100% - 44px,1240px);margin-inline:auto}.eyebrow{display:block;font-size:.72rem;letter-spacing:.23em;font-weight:700;text-transform:uppercase;margin-bottom:22px;color:var(--gold)}.lead{font-size:clamp(1.12rem,1.8vw,1.4rem);line-height:1.75;max-width:620px}.muted{color:#6a6a63}.section{padding:clamp(78px,10vw,154px) 0}.section-head{max-width:690px;margin-bottom:48px}.section-head p{font-size:1.07rem;color:#64665e}.btn{display:inline-flex;align-items:center;justify-content:center;gap:12px;padding:16px 25px;border:1px solid transparent;text-transform:uppercase;font-size:.73rem;font-weight:750;letter-spacing:.13em;transition:transform .2s,background .2s,color .2s;min-height:52px;border-radius:0}.btn:hover{transform:translateY(-2px)}.btn:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid var(--gold);outline-offset:3px}.btn-primary{color:white;background:var(--forest)}.btn-primary:hover{background:#17261c}.btn-outline{border-color:currentColor;background:transparent}.btn-light{background:var(--ivory);color:var(--forest)}.site-header{position:absolute;z-index:40;left:0;right:0;top:0;color:#fff;border-bottom:1px solid rgba(255,255,255,.25)}.site-header.is-scrolled{position:fixed;background:var(--forest);box-shadow:0 12px 32px #13251a22}.header-inner{min-height:94px;display:flex;justify-content:space-between;align-items:center;gap:22px}.brand{display:flex;align-items:center;gap:12px;flex-shrink:0;font-family:var(--serif);font-size:1.55rem;line-height:1.05;letter-spacing:.02em}.brand small{display:block;font-family:var(--sans);text-transform:uppercase;font-size:.57rem;letter-spacing:.25em;margin-top:7px}.brand img{max-height:64px;width:auto}.site-nav{display:flex;align-items:center;gap:clamp(12px,1.7vw,30px)}.site-nav a:not(.btn){font-size:.72rem;font-weight:750;letter-spacing:.11em;text-transform:uppercase}.site-nav a:not(.btn):hover{color:#e6cb97}.menu-toggle{display:none;border:1px solid #ffffff88;background:transparent;color:white;padding:9px 13px;letter-spacing:.1em}.hero{position:relative;display:flex;align-items:center;min-height:90svh;min-height:min(940px,94svh);color:white;background:linear-gradient(135deg,#23362b,#506454);overflow:hidden}.hero-media,.hero-shade{position:absolute;inset:0}.hero-media picture{display:block;width:100%;height:100%}.hero-media img,.hero-media video{display:block;width:100%;height:100%;object-fit:cover}.hero-shade{background:linear-gradient(90deg,rgba(13,25,19,.7) 0%,rgba(18,28,23,.32) 65%,rgba(18,28,23,.35) 100%)}.hero-content{z-index:2;position:relative;padding-top:150px;padding-bottom:130px}.hero h1{max-width:900px;margin-bottom:30px;text-wrap:balance}.hero .intro{font-size:clamp(1.1rem,2vw,1.42rem);max-width:560px;margin-bottom:34px;color:#f6f2eb}.hero-actions{display:flex;gap:16px;flex-wrap:wrap}.booking-shell{position:relative;z-index:5;margin-top:-42px}.booking-bar{display:grid;grid-template-columns:1fr 1fr .75fr 1.15fr auto;align-items:end;gap:18px;background:white;padding:24px 27px;box-shadow:0 18px 55px #17231b18}.field label{display:block;text-transform:uppercase;font-size:.67rem;font-weight:750;letter-spacing:.13em;margin-bottom:8px;color:var(--forest)}.field input,.field select,.field textarea{display:block;width:100%;border:1px solid #deded8;background:#fff;min-height:47px;padding:10px 12px;border-radius:0;max-width:100%;color:#30332e}.field textarea{min-height:130px;resize:vertical}.field .hint{color:#777;font-size:.78rem}.booking-bar .btn{width:100%;white-space:nowrap}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:clamp(35px,7vw,110px);align-items:center}.image-frame{min-height:350px;background:linear-gradient(135deg,#d4cdbd,#869a83);overflow:hidden;position:relative}.image-frame img{width:100%;height:100%;object-fit:cover;display:block}.image-frame.portrait{aspect-ratio:4/5}.image-frame.landscape{aspect-ratio:4/3}.photo-placeholder{height:100%;min-height:280px;display:flex;align-items:end;padding:28px;color:white;background:linear-gradient(145deg,#697d69,#2e4838);font-family:var(--serif);font-size:1.6rem}.rooms-section{background:#eeeae1}.room-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:32px}.room-card{background:var(--ivory)}.room-card .room-photo{aspect-ratio:1.48;background:#748477;overflow:hidden}.room-card img{height:100%;width:100%;object-fit:cover;transition:transform .45s}.room-card:hover img{transform:scale(1.035)}.room-card-body{padding:26px 27px 30px}.room-card-body h3{margin-bottom:10px}.room-meta{font-size:.82rem;color:#66695e;letter-spacing:.03em}.amenity-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:#dedbd2;border:1px solid #dedbd2}.amenity{min-height:155px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:15px;padding:22px;text-align:center;background:var(--ivory)}.amenity-mark{font-family:var(--serif);font-size:2rem;color:var(--gold)}.amenity span:last-child{font-size:.82rem;font-weight:700}.dark-section{background:var(--forest);color:white}.dark-section .muted,.dark-section .section-head p{color:#e2e2d9}.gallery-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.gallery-item{display:block;aspect-ratio:4/3;overflow:hidden;background:#627465}.gallery-item:first-child{grid-column:span 2;grid-row:span 2;aspect-ratio:auto}.gallery-item img{width:100%;height:100%;object-fit:cover;transition:transform .35s}.gallery-item:hover img{transform:scale(1.04)}.contact-grid{display:grid;grid-template-columns:1fr 1.05fr;gap:clamp(30px,6vw,90px)}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.form-grid .full{grid-column:1/-1}.form-card{background:white;padding:clamp(24px,4vw,50px)}.notice{padding:16px 20px;margin-bottom:24px;border-left:4px solid var(--forest);background:#fff}.site-footer{background:#19271d;color:#f7f1e7;padding:60px 0 28px}.footer-grid{display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:44px}.footer-bottom{border-top:1px solid #ffffff22;margin-top:50px;padding-top:22px;color:#c7cbc4;font-size:.8rem}.site-footer a:hover{color:#efd49e}.footer-links{display:grid;gap:9px}.faq details{border-bottom:1px solid #cfc9bf;padding:20px 0}.faq summary{cursor:pointer;font-family:var(--serif);font-size:1.35rem}.faq p{margin-top:12px}.skip-link{position:absolute;top:-100px;left:20px;z-index:100;background:#fff;color:#111;padding:10px}.skip-link:focus{top:15px}.no-photo-note{font-size:.82rem;letter-spacing:.04em;color:#aebcae}.pill{display:inline-flex;padding:7px 12px;background:#eff1ed;color:#355040;font-size:.72rem;letter-spacing:.09em;text-transform:uppercase;font-weight:700}.fineprint{font-size:.83rem;color:#777}.map-link{display:inline-block;margin-top:12px;text-decoration:underline;text-underline-offset:4px}
@media(max-width:1080px){.site-nav{display:none;position:absolute;top:100%;right:0;left:0;background:var(--forest);padding:25px;flex-direction:column;align-items:stretch;gap:22px}.site-nav.open{display:flex}.menu-toggle{display:block}.booking-bar{grid-template-columns:repeat(2,minmax(0,1fr))}.booking-bar .btn{min-height:49px}.amenity-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:700px){.wrap{width:min(100% - 34px,1240px)}.header-inner{min-height:76px}.brand{font-size:1.26rem}.hero{min-height:80svh}.hero-content{padding-top:140px;padding-bottom:120px}.hero h1{font-size:clamp(2.95rem,13vw,4.8rem)}.booking-shell{margin-top:-35px}.booking-bar{grid-template-columns:1fr;gap:13px;padding:22px}.two-col,.room-grid,.contact-grid,.footer-grid{grid-template-columns:1fr}.two-col .image-frame{order:-1}.amenity-grid{grid-template-columns:repeat(2,1fr)}.gallery-grid{grid-template-columns:repeat(2,1fr)}.gallery-item:first-child{grid-column:span 2;grid-row:auto;aspect-ratio:4/3}.section{padding:75px 0}.form-grid{grid-template-columns:1fr}.form-grid .full{grid-column:auto}.hero-actions .btn{width:100%}}
.rgv-availability-result{margin-top:12px;padding:24px 28px;background:#fff;border-left:3px solid var(--forest);box-shadow:0 14px 40px #25332812}.rgv-availability-result p{margin:0 0 13px}.rgv-availability-result .fineprint{margin:12px 0 0}.rgv-availability-result[hidden]{display:none!important}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}}


/* Approved Royal Grand Villa horizontal brand image, with a discreet ivory plate on dark hero navigation. */
.site-header .rgv-brand-image{background:#fefdf8;padding:3px 6px;display:block;border-radius:2px;flex-shrink:0;line-height:0;box-shadow:0 1px 4px rgba(0,0,0,.06)}
.site-header .rgv-brand-image .rgv-default-logo{display:block;width:clamp(190px,23vw,310px);max-width:100%;height:auto;max-height:none;object-fit:contain}
@media(max-width:500px){.site-header .rgv-brand-image{padding:2px 4px}.site-header .rgv-brand-image .rgv-default-logo{width:clamp(165px,55vw,245px)}.header-inner{gap:10px}}

/* Native legal policies: one calm editorial layout, without a page builder. */
.rgv-policy-header{background:var(--forest);color:var(--ivory);padding:clamp(165px,19vw,230px) 0 clamp(68px,9vw,115px)}
.rgv-policy-header h1{font-size:clamp(3.2rem,7vw,6rem);max-width:960px;margin-bottom:20px;text-wrap:balance}
.rgv-policy-header p{font-size:1rem;color:#e7e4da}
.rgv-policy-body{padding:clamp(55px,8vw,115px) 0 clamp(90px,11vw,140px)}
.rgv-policy-body>.wrap{max-width:950px}
.rgv-policy-meta{font-size:.77rem;letter-spacing:.08em;text-transform:uppercase;color:#73786f;border-bottom:1px solid #d9d4ca;padding-bottom:20px;margin-bottom:48px}
.rgv-policy-prose{max-width:800px;font-size:1.05rem;line-height:1.85}
.rgv-policy-prose h2{font-size:clamp(1.8rem,3vw,2.5rem);margin:54px 0 16px;color:var(--forest)}
.rgv-policy-prose p{margin:0 0 19px;color:#454b45}
.rgv-policy-prose a,.rgv-policy-related a{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:4px}
.rgv-policy-prose ul,.rgv-policy-prose ol{padding-left:28px;margin-bottom:24px}
.rgv-policy-prose li{margin-bottom:10px}
.rgv-policy-related{border-top:1px solid #d9d4ca;margin-top:68px;padding-top:36px}
.rgv-policy-related h2{font-size:1.75rem;color:var(--forest)}
.rgv-policy-related nav{display:flex;flex-wrap:wrap;gap:13px 25px;margin-bottom:30px}
.rgv-policy-related a:hover{color:#8c744a}
.rgv-chat-privacy{margin:4px 0 10px;font-size:.72rem}
.rgv-chat-privacy a,.form-grid .fineprint a{text-decoration:underline;text-underline-offset:3px}
@media(max-width:700px){.rgv-policy-header{padding-top:140px}.rgv-policy-body{padding-top:50px}.rgv-policy-meta{margin-bottom:28px}.rgv-policy-prose{font-size:1rem}.rgv-policy-prose h2{margin-top:38px}}
