:root{--ivory: #f8f5ef;--cream: #f1ede5;--sage: #a9b89e;--forest: #344d3b;--taupe: #b7aa9d;--sand: #e9dfd2;--white: #fff;--ink: #26332a;--muted: #6b6a62;--amber: #c98a3b;--terracotta: #c0654a;--red: #b3261e;--u-villa1: #7c9a82;--u-villa2: #c9a46e;--u-studio: #8aa0b5;--radius: 16px;--shadow: 0 1px 2px rgba(52,77,59,.06), 0 4px 14px rgba(52,77,59,.07);--border: 1px solid rgba(52,77,59,.12)}*{box-sizing:border-box}html,body{margin:0;background:var(--ivory);color:var(--ink);font-family:Heebo,Assistant,system-ui,sans-serif;line-height:1.5}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}.app{max-width:880px;margin:0 auto;padding-bottom:88px;min-height:100dvh}.demo-banner{background:var(--sand);font-size:13px;padding:6px 16px;text-align:center;color:var(--muted)}.hero{position:relative;padding:28px 20px 56px;color:var(--forest);overflow:hidden;background:#ecebe7;border-radius:0 0 28px 28px}.hero>*{position:relative}.logo{display:block;margin:0 auto 14px;height:170px;width:auto;max-width:92%}.logo-text{text-align:center;font-weight:300;letter-spacing:.35em;font-size:15px;margin-bottom:18px;direction:ltr}.logo-text b{display:block;font-size:22px;font-weight:500;letter-spacing:.28em}.hero h1{margin:0;font-size:28px;font-weight:500}.hero p{margin:2px 0 0;opacity:.95}.page{padding:16px}.page h2{font-weight:500;margin:8px 0 14px}.grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-top:-34px;padding:0 16px;position:relative}.card{background:var(--white);border:var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px}.stat{text-align:start;border:var(--border);display:flex;flex-direction:column;gap:4px;background:var(--white)}.stat .ico{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:var(--cream);color:var(--forest)}.stat .num{font-size:28px;font-weight:500;color:var(--forest);line-height:1.1}.stat .lbl{color:var(--muted);font-size:14px}.stat.warn .num{color:var(--terracotta)}.section{padding:20px 16px 0}.section-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.section-head h3{margin:0;font-weight:500}.link{background:none;border:0;color:var(--forest);text-decoration:underline;padding:6px}.row{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--cream)}.row:last-child{border:0}.dot{width:10px;height:10px;border-radius:50%;flex:none}.u-villa1{background:var(--u-villa1)}.u-villa2{background:var(--u-villa2)}.u-studio{background:var(--u-studio)}.u-whole{background:var(--forest)}.muted{color:var(--muted);font-size:14px}.cal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.cal-head h2{margin:0}.iconbtn{width:44px;height:44px;border-radius:12px;border:var(--border);background:var(--white);font-size:20px}.filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}.chip{border:var(--border);background:var(--white);border-radius:999px;padding:6px 14px;font-size:14px;display:inline-flex;gap:6px;align-items:center}.chip.on{background:var(--forest);color:#fff;border-color:var(--forest)}.cal{background:var(--white);border:var(--border);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}.cal-wd,.cal-week{display:grid;grid-template-columns:repeat(7,1fr)}.cal-wd div{text-align:center;padding:8px 0;font-size:13px;color:var(--muted);background:var(--cream)}.cell{min-height:78px;border:0;border-top:1px solid var(--cream);border-inline-start:1px solid var(--cream);background:var(--white);padding:3px;text-align:start;display:flex;flex-direction:column;gap:2px;min-width:0}.cell.out{background:var(--ivory);opacity:.55}.cell.today .d{background:var(--forest);color:#fff}.cell.sel{outline:2px solid var(--forest);outline-offset:-2px}.cell .d{font-size:12px;width:22px;height:22px;border-radius:50%;display:grid;place-items:center}.pill{font-size:10.5px;line-height:1.25;padding:1px 4px;border-radius:4px;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pill.u-villa1{background:var(--u-villa1)}.pill.u-villa2{background:var(--u-villa2)}.pill.u-studio{background:var(--u-studio)}.pill.u-whole{background:var(--forest)}.pill.pending{opacity:.55}.more-count{font-size:10px;color:var(--muted)}.day-panel{margin-top:14px}.badge{font-size:12px;padding:2px 8px;border-radius:999px;background:var(--sand)}.badge.confirmed{background:#dfe8d9;color:var(--forest)}.badge.pending_deposit{background:#f6e5c8;color:#7a5316}.badge.cancelled{background:#eee;color:#777}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#26332a73;display:flex;align-items:flex-end;justify-content:center;z-index:30}.sheet{background:var(--ivory);width:100%;max-width:560px;max-height:94dvh;overflow:auto;border-radius:22px 22px 0 0;padding:18px 18px 28px}.sheet h2{margin:0 0 12px;font-weight:500}label.f{display:block;margin-bottom:12px;font-size:14px;color:var(--muted)}label.f>span{display:block;margin-bottom:4px}.in{width:100%;padding:11px 12px;border-radius:12px;border:var(--border);background:var(--white);min-height:44px}.in[dir=ltr]{text-align:end}.two{display:grid;grid-template-columns:1fr 1fr;gap:10px}.btn{min-height:48px;border-radius:14px;border:0;padding:0 20px;background:var(--forest);color:#fff;font-weight:500}.btn.ghost{background:var(--white);color:var(--forest);border:var(--border)}.btns{display:flex;gap:10px;margin-top:16px}.btns .btn{flex:1}.err{color:var(--red);font-size:13px;margin-top:3px}.alert{background:#fbeceb;border:1px solid #efc3bf;color:var(--red);border-radius:12px;padding:10px 12px;margin:8px 0;font-size:14px}.info{background:var(--cream);border-radius:12px;padding:8px 12px;font-size:14px;margin-bottom:12px}.toast{position:fixed;bottom:96px;inset-inline:0;margin:auto;width:max-content;max-width:90vw;background:var(--forest);color:#fff;padding:10px 18px;border-radius:999px;z-index:40}.nav{position:fixed;bottom:0;inset-inline:0;background:#fffffff5;border-top:var(--border);display:flex;justify-content:center;padding-bottom:env(safe-area-inset-bottom);z-index:20;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.nav-inner{display:flex;width:100%;max-width:880px}.nav button{flex:1;border:0;background:none;padding:8px 0 10px;display:flex;flex-direction:column;align-items:center;gap:2px;font-size:12px;color:var(--muted)}.nav button.on{color:var(--forest);font-weight:700}.nav svg{width:24px;height:24px}.list-btn{width:100%;text-align:start;display:flex;justify-content:space-between;background:var(--white);border:var(--border);border-radius:var(--radius);padding:16px;margin-bottom:10px}
