@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Playfair+Display:wght@400;500&display=swap');
:root{--green:#244c3d;--ink:#223e33;--muted:#788178;--paper:#f6f5ef;--line:#dedfd5;--gold:#b88f56}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:'DM Sans',Arial,sans-serif;font-size:14px}button,input,select{font:inherit}button,a,input,select{touch-action:manipulation}button{cursor:pointer}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible{outline:3px solid var(--gold);outline-offset:4px}[hidden]{display:none!important}.nav{height:98px;max-width:1440px;margin:auto;padding:0 5%;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:12px;font-size:21px;letter-spacing:4px;font-weight:600}.brand small{display:block;font-size:14px;letter-spacing:3px;margin-top:3px;font-weight:500}.brand-icon{display:grid;place-items:center;border:1px solid var(--green);border-radius:50%;height:40px;width:40px;font-family:Georgia;font-size:32px;letter-spacing:-4px;padding-right:4px;font-weight:400}.nav nav{display:flex;align-items:center;gap:36px}.text-button{border:0;background:none;color:var(--green);padding:8px 0}.hero{max-width:1440px;margin:auto;padding:70px 5% 66px;display:flex;justify-content:space-between;align-items:center;background:radial-gradient(ellipse at 80% 20%,#e6eada88,transparent 50%)}.eyebrow{font-size:14px;font-weight:700;letter-spacing:2px;color:#798476}h1,h2,h3{font-family:'Playfair Display',Georgia,serif;font-weight:400}h1{font-size:clamp(38px,4.5vw,66px);line-height:1.12;letter-spacing:-1.8px;margin:20px 0}p{line-height:1.8}.hero p{color:#6e7a6f;font-size:15px;margin:22px 0}.hero-link{display:inline-flex;align-items:center;gap:54px;border-bottom:1px solid #97a28d;padding:10px 0;font-size:14px;font-weight:600}.hero-link span{font-size:23px}.hero-note{padding:22px 44px;border-left:1px solid #cbd1c3;margin:0 8% 0 20px}.hero-note span{font-size:14px;letter-spacing:2px;color:#85917e}.hero-note p{font-family:Georgia;font-size:24px;line-height:1.55;color:#64765d}.booking-section{max-width:1440px;padding:30px 5% 0;margin:auto;scroll-margin-top:24px}.section-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:27px}.section-heading h2{font-size:30px;margin:10px 0}.preview-pill{border:1px solid #cbd5c4;border-radius:30px;padding:9px 14px;font-size:14px;letter-spacing:1.2px;color:#6b7b60}.booking-grid{display:grid;grid-template-columns:minmax(0,1fr) 350px;gap:26px;align-items:start}.map-panel{background:white;border:1px solid var(--line);border-radius:12px;overflow:hidden}.map-toolbar{padding:20px 23px;display:flex;align-items:center;justify-content:space-between}.map-toolbar strong{font-size:14px;font-weight:600}.map-toolbar span{display:block;font-size:14px;color:var(--muted);margin-top:6px}.map-toolbar button{font-size:14px}.map-image{position:relative;width:100%;line-height:0}.map-image img{display:block;width:100%;height:auto}.hotspot{position:absolute;transform:translate(-50%,-50%);width:4%;height:5.6%;border-radius:50%;border:2px solid rgba(255,255,255,.7);background:rgba(250,252,240,.10);box-shadow:0 0 0 2px #244c3d20;transition:background .15s,box-shadow .15s;min-width:22px;min-height:22px;padding:0}.hotspot:hover{background:#f6efbe77;box-shadow:0 0 0 4px #f6efbe44}.hotspot.selected{background:#244c3dcc;border:2px solid white;box-shadow:0 0 0 4px #d8e1c6aa}.hotspot.selected::after{content:'✓';font-size:16px;color:white;position:absolute;inset:0;display:grid;place-items:center;line-height:1}.hotspot::before{content:attr(data-label);display:none;position:absolute;bottom:130%;left:50%;transform:translateX(-50%);background:var(--green);color:white;line-height:1;padding:8px 10px;font-size:14px;border-radius:5px;white-space:nowrap}.hotspot:hover::before,.hotspot:focus-visible::before{display:block}.map-caption{padding:14px 21px;display:flex;align-items:center;gap:19px;color:var(--muted);font-size:14px;border-bottom:1px solid var(--line)}.map-caption span{display:flex;align-items:center;gap:6px}.map-caption span:last-child{margin-left:auto}.legend-dot{height:8px;width:8px;border:1px solid #87997b;border-radius:50%;display:inline-block}.legend-dot.chosen{background:var(--green)}.villa-picker{padding:20px 22px 22px}.picker-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}.filters{display:flex;gap:4px}.filters button{border:0;background:none;color:#879081;padding:6px 9px;border-radius:20px;font-size:14px}.filters button.active{background:#edf1e7;color:var(--green)}#villa-list{display:flex;flex-wrap:wrap;gap:7px}#villa-list button,#group-picker button{border:1px solid var(--line);border-radius:5px;background:white;color:#647161;padding:9px 12px;font-size:14px}#villa-list button.selected,#group-picker button.selected{color:white;background:var(--green);border-color:var(--green)}.booking-card{border:1px solid var(--line);border-radius:12px;padding:25px;background:#fffef9;position:sticky;top:20px;box-shadow:0 8px 24px #2d443407}.card-top{display:flex;justify-content:space-between;align-items:center}.card-top>span:last-child{font-size:14px;color:#7a8871;background:#eff2e7;padding:5px 9px;border-radius:20px}.booking-card h3{font-size:30px;margin:20px 0 10px}.booking-card>p{font-size:14px;color:var(--muted);margin:0 0 22px}label{display:flex;flex-direction:column;gap:9px;font-size:14px;color:#596653;margin:17px 0}input,select{border:1px solid #d8ddcf;border-radius:6px;background:white;padding:12px 11px;color:var(--ink);width:100%;min-width:0;outline:none}input:focus,select:focus{border-color:var(--green);box-shadow:0 0 0 2px #244c3d15}.dates{display:grid;grid-template-columns:1fr 1fr;gap:10px}.dates label{margin:6px 0 0}.dates input{font-size:14px;padding:12px 7px}.stay-summary{padding:18px 0;margin:4px 0 17px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);font-size:14px;color:#7f8779;line-height:1.7}.stay-summary strong{color:var(--green)}.primary,.secondary{display:flex;align-items:center;justify-content:space-between;border:1px solid var(--green);border-radius:6px;padding:14px 17px;font-size:14px;font-weight:500}.primary{width:100%;background:var(--green);color:white}.primary:hover{background:#163c2d}.primary:disabled{background:#b8c1ac;border-color:#b8c1ac;cursor:default}.secondary{background:transparent;color:var(--green)}.full{width:100%;margin-top:12px;justify-content:center}.card-foot{font-size:14px;text-align:center;color:#8a9282;margin:12px 0 20px}.demo-note{background:#f1f2e9;border-radius:7px;padding:12px;display:flex;gap:9px;color:#788270}.demo-note p{font-size:14px;line-height:1.65;margin:0}.features{max-width:1440px;margin:65px auto 60px;padding:0 5%;display:grid;grid-template-columns:repeat(3,1fr);gap:50px}.features>div{border-top:1px solid var(--line);padding-top:20px}.features span{font-size:14px;color:var(--gold)}.features h3{font-size:22px;margin:14px 0 10px}.features p{font-size:14px;color:var(--muted);max-width:290px}footer{display:flex;align-items:center;justify-content:space-between;gap:20px;border-top:1px solid var(--line);padding:30px 5%;font-size:14px;color:#828b7e}footer .brand{font-size:15px;gap:8px}footer .brand small{font-size:14px;margin:0}dialog{border:1px solid var(--line);border-radius:14px;padding:36px;width:min(460px,calc(100% - 32px));max-height:90vh;overflow:auto;background:#fffef9;color:var(--ink);box-shadow:0 30px 100px #142e3233}dialog::backdrop{background:#132e2c88;backdrop-filter:blur(4px)}dialog h2{font-size:32px;margin:16px 0}dialog>p{font-size:14px;color:var(--muted)}dialog small{font-size:14px;display:block;margin-top:18px;color:var(--muted)}dialog .primary{margin-top:22px}.close{position:absolute;right:14px;top:10px;background:transparent;border:none;font-size:25px;color:#7b8576;padding:4px 8px}.payment-placeholder{padding:27px 16px;border:1px dashed #aeba9e;border-radius:10px;margin:25px 0;text-align:center}.payment-placeholder>span{display:block;font-size:30px;margin-bottom:10px}.payment-placeholder strong{font-size:14px}.payment-placeholder p{font-size:14px;color:var(--muted)}.confirmation-check{height:54px;width:54px;border-radius:50%;background:#e6ecdb;display:grid;place-items:center;font-size:24px;margin-bottom:20px}.reference{font-family:monospace;font-size:17px;padding:14px;background:#f0f2e8;border-radius:6px;letter-spacing:1px}.confirmation-row{display:flex;justify-content:space-between;border-bottom:1px solid var(--line);padding:12px 0;font-size:14px}.email-preview{margin-top:20px;border:1px solid var(--line);padding:14px;border-radius:6px;font-size:14px;line-height:1.8}.email-preview p{font-size:14px;color:var(--muted);margin:7px 0 0}.admin-title{display:flex;align-items:center;justify-content:space-between;gap:20px}.admin-title h1{font-size:42px}.admin-title p{font-size:14px;color:var(--muted)}#admin-view{max-width:1440px;padding:60px 5%;margin:auto;min-height:75vh}.admin-banner{padding:15px 20px;background:#e9eedf;border-radius:7px;font-size:14px;margin:25px 0}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin:25px 0 35px}.stats>div{padding:22px;border:1px solid var(--line);border-radius:9px;background:white}.stats span{font-size:14px;color:var(--muted)}.stats strong{display:block;font-size:30px;margin-top:12px}.admin-controls{display:flex;align-items:center;gap:15px;margin:20px 0}.admin-controls h2{margin-right:auto;white-space:nowrap}.admin-controls input{max-width:270px}.admin-controls select{max-width:175px}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:9px;background:white}table{width:100%;border-collapse:collapse;text-align:left;font-size:14px;min-width:750px}th{font-size:14px;color:var(--muted);text-transform:uppercase;letter-spacing:1px;background:#f0f2e9;padding:18px}td{padding:20px 18px;border-top:1px solid var(--line);line-height:1.7}td small{display:block;color:var(--muted)}td button{background:#eef1e6;border:0;border-radius:5px;color:var(--green);font-size:14px;padding:8px;margin:2px}.status{border-radius:20px;padding:6px 10px;font-size:14px;white-space:nowrap;display:inline-block}.status.confirmed{background:#e5efdf;color:#416933}.status.pending_payment{background:#faf0dc;color:#9b7939}.status.cancelled{background:#eee;color:#828282}.admin-small{font-size:14px;color:var(--muted);margin:22px 0}#full-map{width:min(1400px,95vw)}#group-picker{display:flex;gap:8px;margin-bottom:20px}#toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);padding:13px 20px;background:var(--green);color:white;border-radius:7px;box-shadow:0 4px 25px #19332922;z-index:10;display:none;font-size:14px}.empty{padding:40px;text-align:center;color:var(--muted)}
@media(min-width:1500px){.booking-grid{grid-template-columns:minmax(0,1fr) 370px}}@media(max-width:1050px){.booking-grid{grid-template-columns:minmax(0,1fr) 305px;gap:18px}.booking-card{padding:20px}.hero-note{margin-right:0;padding-right:0}.map-caption{gap:10px;padding:13px}.map-caption span:last-child{display:none}.map-toolbar{padding:17px}.filters button{padding:6px}.picker-top{gap:10px}.eyebrow{font-size:14px;letter-spacing:1.5px}.hero{padding-top:50px;padding-bottom:40px}}@media(max-width:780px){.nav{height:78px}.nav nav{gap:18px}.nav-link{display:none}.hero{padding:40px 5% 32px}.hero-note{display:none}h1{font-size:43px}.hero p{font-size:14px}.section-heading{align-items:start;gap:12px}.section-heading h2{font-size:25px}.preview-pill{font-size:14px;padding:8px;white-space:nowrap;margin-top:22px}.booking-grid{grid-template-columns:1fr}.booking-card{position:static;padding:24px}.map-scroll{overflow-x:auto}.map-image{min-width:650px}.map-caption{font-size:14px}.map-toolbar strong{font-size:14px}.map-toolbar button{white-space:nowrap}.villa-picker{padding:18px}.features{grid-template-columns:1fr;gap:22px;margin:40px auto}.features p{max-width:100%}footer{flex-wrap:wrap;gap:18px}footer>span:last-child{width:100%}.admin-title{display:block}.admin-title h1{font-size:33px}.stats{grid-template-columns:1fr 1fr;gap:10px}.stats>div{padding:16px}.admin-controls{flex-wrap:wrap}.admin-controls h2{width:100%;margin:0}.admin-controls input{flex:1;max-width:none}.admin-controls select{max-width:150px}#admin-view{padding-top:35px}#full-map{padding:30px 15px}.desktop{display:none}}
