:root{--ink:#17210f;--g:#3d7a2a;--g2:#2c5a1e;--y:#e0a22a;--y2:#b97f12;--bg:#faf7ee;--card:#fff;--line:#e5dfcc;--mut:#6a6652;--err:#b3261e;--hero1:#0d1a0a;--hero2:#1d3314;--hero3:#33401a}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--ink:#f1eedf;--bg:#10150c;--card:#192112;--line:#32402a;--mut:#a7ae94;--g:#7fbf5f;--g2:#9bd67c;--y:#e6b445;--y2:#e6b445}}
:root[data-theme="dark"]{--ink:#f1eedf;--bg:#10150c;--card:#192112;--line:#32402a;--mut:#a7ae94;--g:#7fbf5f;--g2:#9bd67c;--y:#e6b445;--y2:#e6b445}
*{box-sizing:border-box}[hidden]{display:none!important}html{scroll-behavior:smooth}
body{margin:0;font:16px/1.6 system-ui,"Segoe UI",Roboto,sans-serif;color:var(--ink);background:var(--bg)}
h1,h2,h3,.brand{font-family:Georgia,"Times New Roman",serif}
a{color:var(--g)}
.wrap{max-width:1040px;margin:0 auto;padding:0 16px}
/* nav */
header.nav{position:sticky;top:0;z-index:20;background:#0b1208e6;backdrop-filter:blur(8px);color:#f4efd9}
header.nav .wrap{display:flex;align-items:center;justify-content:space-between;min-height:60px;gap:12px;flex-wrap:wrap;padding-top:6px;padding-bottom:6px}
.brand{display:flex;align-items:center;gap:10px;font-size:18px;color:#f4efd9;text-decoration:none;font-weight:400}
.mono{display:inline-grid;place-items:center;height:34px;padding:0 11px;border:1.5px solid var(--y);border-radius:99px;color:var(--y);font:700 13px Georgia,serif;letter-spacing:.08em}
nav{display:flex;gap:16px;align-items:center;flex-wrap:wrap}nav a{margin:0;color:#f4efd9;text-decoration:none;font-size:14px}nav a:hover{color:var(--y)}
nav a.btn{color:#1a1405}
.icon-btn{width:34px;height:34px;border-radius:50%;border:1px solid var(--y);background:none;color:var(--y);cursor:pointer;font-size:15px}
.btn{display:inline-block;background:var(--y);color:#1a1405;border:0;border-radius:8px;padding:11px 20px;font:600 15px system-ui;cursor:pointer;text-decoration:none;text-align:center}
.btn:hover{background:var(--y2);color:#fff}.btn.alt{background:var(--y)}.btn.ghost{background:transparent;color:var(--ink);border:1px solid var(--line)}
.btn.ghost:hover{background:transparent;border-color:var(--y);color:var(--y2)}.btn.light{background:transparent;border:1px solid #f4efd999;color:#f4efd9}
.btn.sm{padding:6px 14px;font-size:13px}.btn.danger{background:var(--err);color:#fff}.btn[disabled]{opacity:.5;cursor:wait}
:focus-visible{outline:2px solid var(--y);outline-offset:2px}
/* hero */
.hero{min-height:64vh;display:grid;align-items:center;padding:70px 16px 90px;color:#f4efd9;text-align:left;background:radial-gradient(circle at 80% 15%,#4b5a22 0,transparent 55%),linear-gradient(135deg,var(--hero1),var(--hero2) 60%,var(--hero3))}
.hero .wrap{width:100%}
.eyebrow{letter-spacing:.2em;text-transform:uppercase;color:var(--y);font-size:13px;margin:0}
.hero h1{font-size:clamp(34px,6vw,60px);line-height:1.1;margin:.25em 0 .4em;font-weight:400}
.hero p.lead{max-width:560px;opacity:.92;margin:0 0 14px;font-size:1.05rem}
.rating{color:var(--y);font-weight:600}.rating span{color:#cfd3b8;font-weight:400}
.search{max-width:1040px;margin:-52px auto 0;padding:0 16px;position:relative;z-index:3}
.search .card{display:flex;gap:14px;flex-wrap:wrap;align-items:flex-end;box-shadow:0 14px 34px #0003}
.search label{flex:1;min-width:140px;margin:0}
/* sections */
section{padding:60px 0 8px}section h2{font-size:30px;font-weight:400;margin:0 0 6px}section .sub{color:var(--mut);margin:0 0 24px}
.grid{display:grid;gap:18px;grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}
.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:20px;box-shadow:0 6px 20px #0001}
.card h3{margin:.2rem 0 .4rem;font-weight:400}
.room{padding:0;overflow:hidden;display:flex;flex-direction:column}
.room .ph{height:150px;display:grid;place-items:center;background:linear-gradient(135deg,#1d3314,#4b6b2a);color:var(--y);font:italic 34px Georgia}
.room .body{padding:16px;display:flex;flex-direction:column;gap:8px;flex:1}.room h3{font-size:20px;margin:0}
.tags{display:flex;flex-wrap:wrap;gap:6px}.tags span{font-size:12px;border:1px solid var(--line);border-radius:99px;padding:2px 10px;color:var(--mut)}
.price{color:var(--y2);font-weight:700;font-size:22px}.price small{font-weight:400;color:var(--mut);font-size:13px}
.feat{list-style:none;padding:0;margin:0;display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}
.feat li{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:16px}.feat b{display:block;margin:4px 0}.feat .emoji{font-size:1.8rem}
.rev{display:flex;gap:22px;align-items:center;flex-wrap:wrap}.rev .big{font:400 54px Georgia,serif;color:var(--y2);line-height:1}
.two{display:grid;grid-template-columns:1fr 1fr;gap:24px;align-items:start}.two iframe{width:100%;min-height:320px;border:1px solid var(--line);border-radius:14px}
.marquee{overflow:hidden;margin-top:22px;-webkit-mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent);mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent)}
.track{display:flex;gap:16px;width:max-content;animation:scroll-left var(--dur,40s) linear infinite}
.marquee:hover .track,.marquee:focus-within .track{animation-play-state:paused}
@keyframes scroll-left{from{transform:translateX(0)}to{transform:translateX(-25%)}}
.rcard{margin:0;width:320px;flex:none;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:18px;box-shadow:0 6px 20px #0001;display:flex;flex-direction:column;gap:8px}
.rcard .stars{color:var(--y);letter-spacing:2px}.rcard blockquote{margin:0;flex:1;font-size:.95rem;display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;overflow:hidden}
.rcard figcaption{font-size:.85rem;color:var(--mut);display:flex;align-items:center;gap:6px;flex-wrap:wrap}.rcard figcaption b{color:var(--ink)}.rcard img{width:26px;height:26px;border-radius:50%}
@media(prefers-reduced-motion:reduce){.track{animation:none;overflow-x:auto;width:auto}.marquee{overflow-x:auto;-webkit-mask-image:none;mask-image:none}}
.photos-head{margin-top:26px;color:var(--mut);font-size:.9rem;max-width:1040px;margin-left:auto;margin-right:auto;padding:0 16px}
.rev-photos .track{animation-name:scroll-right}
@keyframes scroll-right{from{transform:translateX(-25%)}to{transform:translateX(0)}}
.pcard{margin:0;width:240px;flex:none;position:relative;border-radius:14px;overflow:hidden;border:1px solid var(--line)}
.pcard img{width:100%;height:180px;object-fit:cover;display:block;background:var(--line)}
.pcard figcaption{position:absolute;left:0;right:0;bottom:0;padding:6px 10px;font-size:.75rem;color:#fff;background:linear-gradient(transparent,#000a)}
.alt-bg{background:transparent}
.actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}
footer{text-align:center;color:var(--mut);padding:44px 16px;font-size:14px;margin-top:40px;border-top:1px solid var(--line)}footer a{color:var(--g)}
.wa{position:fixed;right:16px;bottom:16px;background:#25d366;color:#fff;border-radius:50px;padding:12px 18px;text-decoration:none;font-weight:700;box-shadow:0 4px 12px #0004;z-index:30}
/* forms */
label{display:block;font-weight:600;margin:12px 0 4px;font-size:.88rem;color:var(--mut)}
input,select,textarea{width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:8px;font:inherit;background:var(--bg);color:var(--ink)}
.row{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}
.msg{padding:12px 14px;border-radius:8px;margin:12px 0}.msg.err{background:#fde8e6;color:#8a1f12}.msg.ok{background:#e4f4e4;color:#1b5e20}.msg.info{background:#fff3d6;color:#6b4a00}
.badge{display:inline-block;padding:2px 10px;border-radius:20px;font-size:.78rem;font-weight:700}
.b-pending{background:#fff3d6;color:#8a5a00}.b-sah{background:#e0f2e0;color:#1b5e20}.b-selesai{background:#e3e8f5;color:#27408b}.b-dibatalkan{background:#fde8e6;color:#8a1f12}
.pick{border:2px solid var(--line);border-radius:12px;padding:14px;margin:10px 0;cursor:pointer;background:var(--card)}
.pick.sel{border-color:var(--y);background:color-mix(in srgb,var(--y) 10%,var(--card))}.pick.na{opacity:.5;cursor:not-allowed}
/* admin */
.tabs{display:flex;gap:6px;flex-wrap:wrap;margin:16px 0;border-bottom:2px solid var(--line)}
.tabs button{border:0;background:none;padding:10px 16px;font:inherit;font-weight:600;cursor:pointer;border-bottom:3px solid transparent;margin-bottom:-2px;color:var(--mut)}
.tabs button.on{color:var(--g2);border-color:var(--y)}
table{width:100%;border-collapse:collapse;font-size:.92rem}th,td{padding:8px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}th{background:color-mix(in srgb,var(--g) 12%,var(--card));position:sticky;top:0}
.scroll{overflow:auto;max-height:70vh;border:1px solid var(--line);border-radius:10px;background:var(--card)}
.stats{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));margin:12px 0}
.stat{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px}.stat b{display:block;font-size:1.5rem;color:var(--g2)}
.tl{border-collapse:separate;border-spacing:0;font-size:.75rem}.tl td,.tl th{padding:0;border:1px solid var(--line);min-width:30px;height:30px;text-align:center}
.tl th.rn,.tl td.rn{min-width:130px;text-align:left;padding:4px 8px;position:sticky;left:0;background:var(--card);z-index:2}
.tl .bk{background:var(--g);color:#fff;font-size:.65rem;overflow:hidden;white-space:nowrap}.tl .pd{background:var(--y);color:#222}.tl .bl{background:#8a8a8a;color:#fff}.tl .td{box-shadow:inset 0 0 0 2px var(--y)}
.bars{display:flex;align-items:flex-end;gap:6px;height:160px;margin:10px 0}.bars div{flex:1;background:var(--g);border-radius:4px 4px 0 0;position:relative;min-height:2px}.bars span{position:absolute;bottom:-20px;left:0;right:0;text-align:center;font-size:.7rem;color:var(--mut)}
.modal{position:fixed;inset:0;background:#000a;display:flex;align-items:center;justify-content:center;z-index:50;padding:16px}.modal>div{background:var(--card);color:var(--ink);border-radius:14px;padding:22px;max-width:520px;width:100%;max-height:90vh;overflow:auto}
code{background:color-mix(in srgb,var(--y) 15%,var(--card));padding:2px 6px;border-radius:5px;word-break:break-all}
@media(max-width:720px){.two{grid-template-columns:1fr}.hero{padding:50px 16px 80px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
/* kalendar kekosongan */
.chips{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.chip{border:1px solid var(--line);background:var(--bg);color:var(--ink);border-radius:99px;padding:6px 14px;font:inherit;font-size:.88rem;cursor:pointer}
.chip.on{background:var(--y);border-color:var(--y);color:#1a1405;font-weight:600}
.cal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.cal-head b{font:400 1.2rem Georgia,serif}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.cal-dow span{text-align:center;font-size:.75rem;color:var(--mut);padding:4px 0}
.day{aspect-ratio:1;border:1px solid transparent;border-radius:10px;font:inherit;font-size:.95rem;cursor:pointer;color:var(--ink);background:color-mix(in srgb,var(--g) 16%,var(--card));border-color:color-mix(in srgb,var(--g) 40%,transparent)}
.day.part{background:color-mix(in srgb,var(--y) 28%,var(--card));border-color:color-mix(in srgb,var(--y) 60%,transparent)}
.day.full{background:color-mix(in srgb,var(--err) 18%,var(--card));border-color:color-mix(in srgb,var(--err) 40%,transparent);color:var(--mut);text-decoration:line-through;cursor:not-allowed}
.day.past{background:transparent;border-color:transparent;color:var(--mut);opacity:.4;cursor:default}
.day.today{box-shadow:inset 0 0 0 2px var(--y2)}
.day.inr{background:color-mix(in srgb,var(--y) 35%,var(--card))}.day.sel{background:var(--y);color:#1a1405;font-weight:700;border-color:var(--y2)}
.day:not(:disabled):not(.full):hover{filter:brightness(1.1);transform:translateY(-1px)}
.legend{display:flex;gap:16px;flex-wrap:wrap;margin-top:14px;font-size:.82rem;color:var(--mut)}.legend .d{display:inline-block;width:12px;height:12px;border-radius:4px;margin-right:6px;vertical-align:-1px}
.d.free{background:color-mix(in srgb,var(--g) 55%,var(--card))}.d.part{background:color-mix(in srgb,var(--y) 60%,var(--card))}.d.full{background:color-mix(in srgb,var(--err) 50%,var(--card))}.d.sel{background:var(--y)}
.pickbar{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-top:14px;padding:12px 14px;border-radius:10px;background:color-mix(in srgb,var(--g) 14%,var(--card));border:1px solid color-mix(in srgb,var(--g) 40%,transparent)}
.pickbar.warn{background:#fff3d6;color:#6b4a00;border-color:#e0c37a}
@media(max-width:480px){.cal-grid{gap:3px}.day{font-size:.85rem;border-radius:8px}}
/* bahasa */
.lang{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--y);border-radius:99px;padding:2px 4px;color:#f4efd9}
.lang i{font-style:normal;opacity:.5}.lang button{border:0;background:none;color:inherit;font:600 12px system-ui;padding:4px 8px;border-radius:99px;cursor:pointer}
.lang button.on{background:var(--y);color:#1a1405}
