:root{--bg:#fff8f6;--ink:#2b1f24;--muted:#7d6b72;--rose:#d9667f;--rose-d:#bd4a64;--blush:#fde7ec;--line:#f0dde2;--card:#fff;--ok:#2f8f5b;--warn:#c27a14;--bad:#c0392b;--r:18px}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;font-family:Inter,system-ui,sans-serif;background:var(--bg);color:var(--ink);line-height:1.55}
h1,h2,h3{font-family:Fraunces,Georgia,serif;font-weight:600;line-height:1.15;margin:0 0 .5em}
h1{font-size:clamp(2.3rem,7vw,4rem)}h1 em{color:var(--rose);font-style:italic}
h2{font-size:clamp(1.7rem,4vw,2.3rem)}h3{font-size:1.15rem;display:flex;align-items:center;gap:.6rem;margin-top:1.4rem}
.card h3:first-child{margin-top:0}
.wrap{width:min(1080px,100% - 2rem);margin-inline:auto}
.section{padding-block:3rem}
.muted{color:var(--muted)}
button{font:inherit;cursor:pointer}
:focus-visible{outline:3px solid #f2a0b3;outline-offset:2px}
.top{position:sticky;top:0;z-index:20;background:rgba(255,248,246,.9);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.top-in{display:flex;justify-content:space-between;align-items:center;padding-block:.7rem}
.brand{background:none;border:0;font-family:Fraunces,serif;font-size:1.25rem;font-weight:600;color:var(--ink)}
.top nav{display:flex;gap:.5rem;align-items:center}
.top nav button:not(.btn){background:none;border:0;padding:.5rem .8rem;color:var(--ink)}
.btn{background:var(--rose);color:#fff;border:0;border-radius:999px;padding:.8rem 1.5rem;font-weight:600;transition:.15s;display:inline-block}
.btn:hover{background:var(--rose-d)}
.btn:disabled{background:#e6cdd3;cursor:not-allowed}
.btn.small{padding:.5rem 1.1rem}
.btn.ghost{background:transparent;color:var(--rose-d);border:1.5px solid var(--rose)}
.btn.ghost:hover{background:var(--blush)}
.btn.full{width:100%;margin-top:.5rem}
.btn.danger{background:var(--bad)}
.hero{background:radial-gradient(circle at 80% 10%,#fcd5de 0,transparent 45%),radial-gradient(circle at 10% 90%,#ffe9d9 0,transparent 40%);padding-block:clamp(3rem,9vw,6rem)}
.hero-in{max-width:720px;margin-inline:0}
.hero .wrap{margin-inline:auto}
.eyebrow{text-transform:uppercase;letter-spacing:.14em;font-size:.78rem;color:var(--rose-d);font-weight:600;margin:0 0 1rem}
.lead{font-size:1.15rem;color:var(--muted);max-width:560px}
.hero-cta{display:flex;gap:.8rem;flex-wrap:wrap;margin:1.8rem 0}
.perks{display:flex;gap:1.2rem;flex-wrap:wrap;list-style:none;padding:0;margin:0;color:var(--muted);font-size:.95rem}
.cat{margin-top:2rem}
.cat h3{color:var(--rose-d)}
.svc-grid{display:grid;gap:.8rem;grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}
.svc{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:1rem 1.1rem;display:flex;gap:1rem;justify-content:space-between;align-items:center}
.svc b{display:block}
.svc small{color:var(--muted)}
.svc .price{font-family:Fraunces,serif;font-size:1.3rem;color:var(--rose-d);text-align:right;white-space:nowrap}
.svc .price button{display:block;margin-top:.3rem;margin-left:auto}
.add{background:var(--blush);border:0;border-radius:999px;padding:.3rem .8rem;font-size:.85rem;font-weight:600;color:var(--rose-d)}
.add.on{background:var(--rose);color:#fff}
.book-grid{display:grid;gap:1.2rem;grid-template-columns:1.3fr 1fr;align-items:start;margin-top:1.2rem}
@media(max-width:820px){.book-grid{grid-template-columns:1fr}}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:1.4rem;box-shadow:0 6px 24px rgba(217,102,127,.07)}
.step{display:inline-grid;place-items:center;width:1.7rem;height:1.7rem;border-radius:50%;background:var(--rose);color:#fff;font-family:Inter;font-size:.85rem}
.chips{display:flex;flex-wrap:wrap;gap:.5rem}
.chip{border:1.5px solid var(--line);background:#fff;border-radius:999px;padding:.45rem .9rem;color:var(--ink)}
.chip.on{background:var(--rose);border-color:var(--rose);color:#fff}
.summary{margin-top:.8rem;padding:.7rem .9rem;background:var(--blush);border-radius:12px;font-size:.95rem}
.summary.has{color:var(--ink)}
.dates{display:flex;gap:.5rem;overflow-x:auto;padding-bottom:.4rem}
.date{flex:0 0 auto;width:62px;border:1.5px solid var(--line);background:#fff;border-radius:14px;padding:.5rem 0;text-align:center;line-height:1.25}
.date small{display:block;color:var(--muted);font-size:.72rem;text-transform:uppercase}
.date b{font-size:1.2rem;font-family:Fraunces,serif}
.date.on{background:var(--rose);border-color:var(--rose);color:#fff}.date.on small{color:#ffe3ea}
.date:disabled{opacity:.4;cursor:not-allowed}
.times{display:grid;grid-template-columns:repeat(auto-fill,minmax(82px,1fr));gap:.5rem}
.times p{grid-column:1/-1;margin:0}
.time{border:1.5px solid var(--line);background:#fff;border-radius:12px;padding:.55rem 0}
.time:hover{border-color:var(--rose)}
.time.on{background:var(--rose);color:#fff;border-color:var(--rose)}
label{display:block;font-size:.88rem;font-weight:500;margin-top:.9rem}
input,textarea,select{width:100%;margin-top:.3rem;font:inherit;padding:.7rem .8rem;border:1.5px solid var(--line);border-radius:12px;background:#fff;color:var(--ink)}
input:focus,textarea:focus,select:focus{outline:none;border-color:var(--rose)}
.chosen{padding:.7rem .9rem;background:var(--blush);border-radius:12px;font-size:.95rem}
.chosen.has{color:var(--ink)}
.error{color:var(--bad);font-size:.9rem;margin:.6rem 0 0}
.done{text-align:center;padding:2.5rem 1.4rem;margin-top:1.2rem}
.done .tick{width:64px;height:64px;border-radius:50%;background:var(--ok);color:#fff;display:grid;place-items:center;font-size:2rem;margin:0 auto 1rem}
.done dl{display:inline-grid;grid-template-columns:auto auto;gap:.3rem 1.2rem;text-align:left;margin:1rem 0}
.done dt{color:var(--muted)}.done dd{margin:0;font-weight:600}
.hours .card{max-width:420px}
.hours ul{list-style:none;padding:0;margin:0}
.hours li{display:flex;justify-content:space-between;padding:.5rem 0;border-bottom:1px dashed var(--line)}
.foot{display:flex;justify-content:space-between;padding-block:2rem;color:var(--muted);font-size:.9rem}
.linklike{background:none;border:0;color:var(--muted);text-decoration:underline}
#toast{position:fixed;left:50%;bottom:1.5rem;transform:translate(-50%,120px);background:var(--ink);color:#fff;padding:.7rem 1.2rem;border-radius:999px;transition:.3s;z-index:100;max-width:90vw}
#toast.show{transform:translate(-50%,0)}
/* admin */
#admin{min-height:100vh;background:#fbf3f1}
.adm-top{background:#fff;border-bottom:1px solid var(--line)}
.adm-top .wrap{display:flex;justify-content:space-between;align-items:center;padding-block:.8rem;gap:.5rem;flex-wrap:wrap}
.tabs{display:flex;gap:.4rem;margin:1.4rem 0}
.tab{border:0;background:#fff;border-radius:999px;padding:.55rem 1.1rem;border:1.5px solid var(--line)}
.tab.on{background:var(--ink);color:#fff;border-color:var(--ink)}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.8rem;margin-bottom:1.2rem}
.stat{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:1rem}
.stat b{display:block;font-family:Fraunces,serif;font-size:1.8rem;color:var(--rose-d)}
.appt{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:1rem 1.1rem;margin-bottom:.7rem;display:grid;gap:.6rem;grid-template-columns:auto 1fr auto;align-items:center}
@media(max-width:720px){.appt{grid-template-columns:1fr}}
.appt .when{text-align:center;background:var(--blush);border-radius:12px;padding:.5rem .9rem;min-width:92px}
.appt .when b{display:block;font-family:Fraunces,serif;font-size:1.2rem}
.appt .acts{display:flex;gap:.4rem;flex-wrap:wrap}
.mini{border:1.5px solid var(--line);background:#fff;border-radius:999px;padding:.35rem .85rem;font-size:.85rem}
.mini.ok{background:var(--ok);color:#fff;border-color:var(--ok)}
.mini.bad{color:var(--bad);border-color:#efb9b2}
.badge{display:inline-block;border-radius:999px;padding:.1rem .6rem;font-size:.75rem;font-weight:600;margin-left:.4rem}
.badge.pending{background:#fff0d6;color:var(--warn)}.badge.confirmed{background:#dff3e8;color:var(--ok)}.badge.cancelled{background:#fbe0dc;color:var(--bad)}
.empty{text-align:center;padding:3rem 1rem;color:var(--muted);background:#fff;border:1px dashed var(--line);border-radius:var(--r)}
.row-actions{display:flex;gap:.4rem;margin-top:.4rem;justify-content:flex-end}
dialog{border:0;border-radius:var(--r);padding:1.5rem;width:min(460px,94vw);box-shadow:0 20px 60px rgba(0,0,0,.25)}
dialog::backdrop{background:rgba(43,31,36,.5)}
.two{display:grid;grid-template-columns:1fr 1fr;gap:.8rem}
.dlg-acts{display:flex;justify-content:flex-end;gap:.5rem;margin-top:1.2rem}
