:root{--ink:#1d2a33;--bg:#fbf6ee;--card:#fff;--accent:#2f6f8f;--accent-ink:#fff;--warm:#f0a35e;--line:#e2d6c4;--bad:#a32121}
*{box-sizing:border-box}
[hidden]{display:none!important}
body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--ink);background:var(--bg);line-height:1.5}
h1{font-size:1.8rem;margin:0 0 .75rem}h2{font-size:1.3rem}h3{margin:.25rem 0}
a{color:var(--accent)}
img{max-width:100%;height:auto;border-radius:12px}
.btn,button{font:inherit}
.btn{display:inline-block;background:var(--accent);color:var(--accent-ink);border:0;border-radius:999px;padding:.5rem 1.1rem;cursor:pointer;text-decoration:none;margin:.25rem .25rem .25rem 0}
.btn.ghost{background:transparent;color:var(--accent);border:1px solid var(--accent)}
.btn[disabled],.chip[disabled],.day[disabled]{opacity:.45;cursor:not-allowed}
.icon-btn{background:transparent;border:0;font-size:1.5rem;cursor:pointer;color:inherit;line-height:1}
.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:1rem;margin:.75rem 0}
.eyebrow{text-transform:uppercase;letter-spacing:.08em;font-size:.75rem;margin:0;color:#6b5a45}
.big{font-size:1.4rem;margin:.25rem 0 .5rem;font-weight:600}
.lede{font-size:1.1rem}
.pill{display:inline-block;background:#fff1de;border:1px solid var(--warm);border-radius:999px;padding:.15rem .8rem;margin:.2rem .4rem .2rem 0}
.note-title{font-size:1.25rem;font-weight:700;margin:1.5rem 0 .25rem}
.row{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(14rem,1fr));gap:.75rem}
.tabs{display:flex;flex-wrap:wrap;gap:.5rem;margin:.75rem 0}
.tab,.chip,.day,.slot{border:1px solid var(--accent);background:#fff;color:var(--accent);border-radius:999px;padding:.35rem .9rem;cursor:pointer}
.tab[aria-pressed=true],.chip[aria-pressed=true],.day[aria-pressed=true],.slot[aria-pressed=true]{background:var(--accent);color:var(--accent-ink)}
.price{font-weight:600}
.meta{color:#6b5a45;font-size:.9rem;margin:.1rem 0}
.add::before{content:"+ " / "";font-weight:700}
.add{background:var(--accent);color:var(--accent-ink);border:0;border-radius:999px;padding:.4rem 1rem;cursor:pointer}
.stepper{display:inline-flex;align-items:center;gap:.5rem}
.stepper button{width:2rem;height:2rem;border-radius:50%;border:1px solid var(--accent);background:#fff;color:var(--accent);cursor:pointer}
.stepper button[disabled]{opacity:.4;cursor:not-allowed}
label{display:block;font-weight:600;margin:.8rem 0 .2rem}
input[type=text],input[type=tel],select{font:inherit;padding:.5rem;width:100%;max-width:22rem;border:1px solid var(--line);border-radius:8px;background:#fff}
fieldset{border:0;padding:0;margin:.8rem 0}legend{font-weight:600;padding:0}
.field-error,.error{color:var(--bad);margin:.2rem 0}
.error{background:#fde8e8;border:1px solid var(--bad);border-radius:8px;padding:.4rem .6rem}
.slots{display:grid;grid-template-columns:repeat(auto-fill,minmax(5.5rem,1fr));gap:.4rem;max-width:34rem}
.bill{margin:.8rem 0}.bill div{display:flex;justify-content:space-between;max-width:22rem}
.bill .due{font-weight:700;border-top:1px solid var(--line);margin-top:.25rem;padding-top:.25rem}
.slip{background:#fffdf7;border:2px dashed var(--accent);border-radius:14px;padding:1rem;margin:.75rem 0}
.status{color:#2e6b3a;margin:.3rem 0}
.hint{color:#6b5a45;font-size:.9rem}
/* desktop shell */
.sidebar{position:fixed;inset:0 auto 0 0;width:15rem;background:#fff;border-right:1px solid var(--line);padding:1.25rem;display:flex;flex-direction:column;gap:.5rem;overflow:auto}
.sidebar nav,.drawer nav{display:flex;flex-direction:column;gap:.15rem}
.sidebar nav a,.drawer nav a{padding:.4rem .6rem;border-radius:8px;text-decoration:none;color:var(--ink)}
.sidebar nav a[aria-current=page],.drawer nav a[aria-current=page]{background:#e6f0f5;font-weight:600}
.brand{font-weight:700;font-size:1.1rem;margin:0 0 .5rem}
.side-plate{margin:1rem 0 .5rem;color:#6b5a45}
.main{margin-left:15rem;padding:1.5rem 2rem 4rem;max-width:60rem}
.topbar,.platebar,.drawer{display:none}
/* phone and tablet shell: below 1081px there is no sign-in entry at all */
@media (max-width:1080px){
 .sidebar{display:none}
 .main{margin:0;padding:4.5rem 1rem 5.5rem}
 .topbar{display:flex;align-items:center;gap:.75rem;position:fixed;inset:0 0 auto 0;height:3.5rem;background:#fff;border-bottom:1px solid var(--line);padding:0 .75rem;z-index:20}
 .platebar{display:flex;align-items:center;justify-content:space-between;position:fixed;inset:auto 0 0 0;height:3.75rem;background:#fff;border-top:1px solid var(--line);padding:0 1rem;z-index:20}
 .drawer{display:flex;flex-direction:column;position:fixed;inset:0 auto 0 0;width:min(18rem,80vw);background:#fff;padding:1rem;z-index:60;transform:translateX(-110%);transition:transform .2s;pointer-events:none;box-shadow:2px 0 12px rgba(0,0,0,.2)}
 .drawer.open{transform:none;pointer-events:auto}
}
/* welcome veil and dialogs */
.veil,.dialog-wrap{position:fixed;inset:0;background:rgba(20,35,45,.82);display:flex;align-items:center;justify-content:center;z-index:100;padding:1rem}
.dialog-wrap{z-index:90}
.veil-card,.dialog-card{background:#fff;border-radius:16px;padding:1.5rem;max-width:26rem;width:100%;position:relative}
.veil-card .icon-btn,.dialog-card .icon-btn{position:absolute;top:.4rem;right:.6rem}
.dialog-card .btn{display:block;width:100%;margin:.5rem 0}
/* chat */
.fab{position:fixed;right:1rem;bottom:1rem;z-index:30;background:var(--warm);color:#3a2410;border:0;border-radius:999px;padding:.8rem 1.1rem;font-weight:700;cursor:pointer;box-shadow:0 2px 8px rgba(0,0,0,.25)}
.chat{position:fixed;right:1rem;bottom:1rem;width:22rem;max-height:32rem;background:#fff;border:1px solid var(--line);border-radius:16px;display:flex;flex-direction:column;z-index:40;box-shadow:0 6px 24px rgba(0,0,0,.25);padding:.75rem}
.chat-head{display:flex;gap:.4rem;align-items:center}.chat-head .icon-btn{margin-left:auto}
.chat-log{flex:1;overflow:auto;min-height:6rem;display:flex;flex-direction:column;gap:.4rem;padding:.5rem 0}
.msg{padding:.4rem .7rem;border-radius:12px;max-width:85%}.msg.user{align-self:flex-end;background:var(--accent);color:#fff}.msg.bot{background:#f0e8da}
.chips{display:flex;flex-wrap:wrap;gap:.4rem;margin:.3rem 0}
.chat-form{display:flex;gap:.4rem}.chat-form input{flex:1;max-width:none}
@media (max-width:700px){
 .chat{inset:auto 0 0 0;width:auto;max-height:70vh;border-radius:16px 16px 0 0;right:0;bottom:0}
 .fab{bottom:4.75rem}
}
