:root{--p:#4a1d6b;--p2:#7b3fa0;--bg:#f6f0fa;--card:#fff;--ok:#2e9e5b;--warn:#c9821b;--lock:#b3261e;--tx:#2a1636}
*{box-sizing:border-box}
body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;background:var(--bg);color:var(--tx);padding-bottom:env(safe-area-inset-bottom)}
.top{display:flex;align-items:center;justify-content:space-between;padding:calc(env(safe-area-inset-top) + 10px) 14px 10px;background:linear-gradient(135deg,var(--p),var(--p2));color:#fff}
.logo{height:52px;border-radius:10px}
main{max-width:720px;margin:0 auto;padding:14px}
h2{font-size:1.15rem;margin:22px 0 10px;color:var(--p)}
.packages{display:grid;gap:12px}
.pkg{background:var(--card);border-radius:14px;overflow:hidden;box-shadow:0 2px 8px #0002}
.pkg img{width:100%;display:block;max-height:180px;object-fit:cover}
.pkg .body{padding:12px}
.pkg .badge{font-size:.8rem;color:var(--p2);font-weight:600}
.pkg h3{margin:4px 0}
.pkg p{margin:6px 0;font-size:.92rem}
.price{font-weight:700;font-size:1.2rem;color:var(--p)}
.pkg.sel{outline:3px solid var(--p2)}
.legend{display:flex;gap:14px;font-size:.85rem;margin-bottom:8px;flex-wrap:wrap}
.cal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.calendar{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.dow{text-align:center;font-size:.75rem;color:#777;padding:4px 0}
.day{aspect-ratio:1;border:0;border-radius:10px;background:var(--card);font-size:1rem;position:relative}
.day.free{border:2px solid var(--ok)}
.day.part{border:2px solid var(--warn)}
.day.full{background:#eee;color:#999}
.day.full::after{content:"🔒";position:absolute;font-size:.6rem;top:2px;right:3px}
.day.past{opacity:.35}
.day.sel{background:var(--p);color:#fff}
.panel{background:var(--card);border-radius:14px;padding:14px;margin-top:14px;box-shadow:0 2px 8px #0002}
.slots{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.slot{padding:10px 0;border-radius:10px;border:2px solid var(--ok);background:#fff;font-size:.95rem}
.slot.taken{border-color:#ccc;background:#f0f0f0;color:#999}
.slot.sel{background:var(--ok);color:#fff}
.admin .slot.taken{border-color:var(--lock);color:var(--lock);background:#fff2f1}
.btn{display:block;width:100%;text-align:center;text-decoration:none;border:0;border-radius:12px;background:var(--p);color:#fff;padding:13px;font-size:1rem;margin-top:10px}
.btn.warn{background:var(--warn)}
.btn.wa{background:#1faa59}
.btn.ghost{background:#ddd;color:#333}
.chip{border:0;border-radius:20px;padding:8px 14px;background:#ffffff33;color:inherit;font-size:.9rem}
main .chip{background:#e6d8f0;color:var(--p)}
.admin-banner{display:flex;justify-content:space-between;align-items:center;gap:8px;background:#fff3cd;border-radius:12px;padding:10px;font-size:.9rem}
label{display:block;margin-top:10px;font-size:.9rem}
input,textarea{width:100%;margin-top:4px;padding:11px;border:1px solid #ccc;border-radius:10px;font-size:1rem;font-family:inherit}
dialog{border:0;border-radius:16px;padding:18px;width:min(92vw,380px)}
dialog::backdrop{background:#0008}
.row{display:flex;gap:10px}
.error{color:var(--lock);min-height:1.2em;font-size:.9rem}
.muted{color:#666;font-size:.9rem}
footer{text-align:center;font-size:.78rem;color:#777;padding:20px 14px}
.toast{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom));transform:translateX(-50%);background:#222;color:#fff;padding:10px 16px;border-radius:20px;font-size:.9rem;z-index:10}

