:root{--deep:#40291B;--deep-soft:#5A3C29;--sand:#F7F0E4;--sand-warm:#EFE1C9;--line:#E6D9C6;--ink:#33241A;--mute:#6B584A;
--accent:#C2632C;--accent-bright:#E8944F;--ok:#2F7D4F;--warn:#B7791F;--bad:#B23B2E;--white:#fff;--radius:12px}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;font:16px/1.45 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;color:var(--ink);background:var(--sand)}
a{color:var(--accent)}a:hover{color:var(--deep)}
h1{font-size:1.45rem;margin:.2rem 0 1rem}h2{font-size:1.1rem;margin:0 0 .6rem}h3{font-size:1rem;margin:.8rem 0 .4rem}
.topbar{position:sticky;top:0;z-index:20;background:var(--deep);color:var(--sand);display:flex;align-items:center;gap:.75rem;padding:.6rem 1rem}
.brand{color:var(--sand);text-decoration:none;font-weight:700;letter-spacing:.2px;white-space:nowrap;display:flex;align-items:center;gap:.45rem}
.brand .logo{width:30px;height:30px;border-radius:50%;background:var(--accent);display:grid;place-items:center;font-size:.85rem;color:#fff}
.brand small{display:block;font-weight:400;font-size:.7rem;opacity:.75}
.topsearch{flex:1;max-width:420px;margin-left:auto}
.topsearch input{width:100%;border:0;border-radius:999px;padding:.5rem .9rem;background:var(--deep-soft);color:var(--sand);font-size:15px}
.topsearch input::placeholder{color:#d8c7b4}
.layout{display:flex;min-height:calc(100vh - 52px)}
.sidenav{width:220px;background:var(--white);border-right:1px solid var(--line);padding:1rem .6rem;flex-shrink:0}
.sidenav a{display:flex;justify-content:space-between;align-items:center;padding:.55rem .75rem;border-radius:10px;color:var(--ink);text-decoration:none;font-weight:500}
.sidenav a:hover,.sidenav a.active{background:var(--sand-warm)}
.sidenav .sep{border-top:1px solid var(--line);margin:.6rem .4rem}
.badge{display:inline-block;min-width:1.4rem;padding:.05rem .45rem;border-radius:999px;background:var(--accent);color:#fff;font-size:.75rem;text-align:center;font-weight:600}
main{flex:1;padding:1.25rem;max-width:1200px;width:100%}
.bottomnav{display:none}
.card{background:var(--white);border:1px solid var(--line);border-radius:var(--radius);padding:1rem;margin-bottom:1rem}
.grid{display:grid;gap:1rem}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.stat{font-size:1.6rem;font-weight:700;color:var(--deep)}.muted{color:var(--mute)}.small{font-size:.85rem}
.row{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}.space{justify-content:space-between}.right{margin-left:auto}
.btn{display:inline-flex;align-items:center;gap:.35rem;border:1px solid var(--deep);background:var(--white);color:var(--deep);padding:.5rem .9rem;border-radius:999px;font-weight:600;font-size:.92rem;text-decoration:none;cursor:pointer;min-height:40px}
.btn:hover{background:var(--sand-warm);color:var(--deep)}
.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover{background:#a9521f;color:#fff}
.btn-deep{background:var(--deep);color:var(--sand)}.btn-deep:hover{background:var(--deep-soft);color:var(--sand)}
.btn-danger{border-color:var(--bad);color:var(--bad)}.btn-sm{padding:.25rem .65rem;min-height:32px;font-size:.82rem}
form.inline{display:inline}
table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:.55rem .5rem;border-bottom:1px solid var(--line);vertical-align:top}
th{font-size:.78rem;text-transform:uppercase;letter-spacing:.04em;color:var(--mute);font-weight:600}
td.num,th.num{text-align:right;white-space:nowrap}
.pill{display:inline-block;padding:.12rem .55rem;border-radius:999px;font-size:.75rem;font-weight:600;background:var(--sand-warm);color:var(--deep);white-space:nowrap}
.st-requested,.st-draft,.st-queued{background:#FCEBD7;color:#8A4B12}.st-confirmed,.st-open{background:#DCEBF7;color:#1F4E79}
.st-completed,.st-paid,.st-sent,.st-manual{background:#DDF0E3;color:var(--ok)}.st-cancelled,.st-void,.st-failed{background:#F6DEDA;color:var(--bad)}
.alert{padding:.7rem 1rem;border-radius:10px;margin-bottom:1rem;border:1px solid var(--line);background:var(--white)}
.alert-success{border-color:#b9dcc5;background:#eef8f1}.alert-error{border-color:#e8b9b2;background:#fbefed}.alert-info,.alert-warning{border-color:#f0cf9c;background:#fff6e8}
.demo{display:inline-block;font-size:.68rem;padding:.05rem .4rem;border:1px dashed var(--accent);color:var(--accent);border-radius:6px;font-weight:700;letter-spacing:.04em}
.flag{color:var(--bad);font-weight:700}
form p,.field{margin:0 0 .9rem}
label{display:block;font-weight:600;font-size:.9rem;margin-bottom:.25rem}
input[type=text],input[type=email],input[type=tel],input[type=number],input[type=password],input[type=date],input[type=datetime-local],input[type=url],input[type=search],select,textarea{
 width:100%;padding:.6rem .7rem;border:1px solid #cdbca5;border-radius:10px;background:#fff;font:inherit;font-size:16px;color:var(--ink)}
input:focus,select:focus,textarea:focus{outline:2px solid var(--accent-bright);border-color:var(--accent)}
input[type=checkbox]{width:20px;height:20px;vertical-align:middle;accent-color:var(--accent)}
.checkrow label{display:inline;font-weight:500}
.helptext,.help{display:block;font-size:.8rem;color:var(--mute);margin-top:.2rem}
.errorlist{color:var(--bad);margin:.2rem 0;padding-left:1.1rem;font-size:.88rem}
ul.checks{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:.4rem 1rem}ul.checks label{font-weight:500;display:flex;gap:.35rem;align-items:center}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 1rem}.form-grid .wide{grid-column:1/-1}
dl.kv{display:grid;grid-template-columns:auto 1fr;gap:.3rem 1rem;margin:0}dl.kv dt{color:var(--mute);font-size:.88rem}dl.kv dd{margin:0}
.list{list-style:none;margin:0;padding:0}.list li{padding:.6rem 0;border-bottom:1px solid var(--line)}.list li:last-child{border-bottom:0}
.appt{display:block;text-decoration:none;color:var(--ink);border-left:4px solid var(--accent);background:#fff;border-radius:8px;padding:.45rem .6rem;margin:.3rem 0;box-shadow:0 1px 0 var(--line)}
.appt.video{border-left-color:#1F4E79}.appt.st-cancelled{opacity:.55;text-decoration:line-through}.appt .t{font-weight:700;font-size:.85rem}
.appt.requested{border-left-style:dashed}
.week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:.5rem}
.day{background:var(--white);border:1px solid var(--line);border-radius:10px;padding:.5rem;min-height:140px}
.day.today{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.day h3{margin:0 0 .3rem;font-size:.85rem;display:flex;justify-content:space-between}
.hours .hour{display:grid;grid-template-columns:70px 1fr;border-top:1px solid var(--line);min-height:48px}.hours .hour .h{color:var(--mute);font-size:.8rem;padding-top:.3rem}
.tabs{display:inline-flex;border:1px solid var(--deep);border-radius:999px;overflow:hidden}.tabs a{padding:.4rem .85rem;text-decoration:none;color:var(--deep);font-weight:600;font-size:.88rem}.tabs a.on{background:var(--deep);color:var(--sand)}
.soap h3{color:var(--accent);margin-top:1rem}.soap .txt{white-space:pre-wrap}
.thumbs{display:flex;flex-wrap:wrap;gap:.5rem}.thumbs img{width:110px;height:110px;object-fit:cover;border-radius:8px;border:1px solid var(--line)}
.msg{white-space:pre-wrap;background:var(--sand);border:1px solid var(--line);border-radius:10px;padding:.6rem;font-size:.92rem}
.totals td{border:0;padding:.25rem .5rem}.totals tr.big td{font-size:1.15rem;font-weight:700;border-top:2px solid var(--deep)}
.login-wrap{min-height:100vh;display:grid;place-items:center;padding:1rem;background:linear-gradient(160deg,var(--deep) 0%,var(--deep-soft) 45%,var(--sand) 45%)}
.login-card{width:100%;max-width:380px}
.pagination{margin-top:1rem}
.only-mobile{display:none}
@media (max-width:900px){
 .sidenav{display:none}main{padding:.85rem .75rem 5.5rem}
 .bottomnav{display:flex;position:fixed;bottom:0;left:0;right:0;z-index:30;background:var(--deep);padding:.3rem .2rem calc(.3rem + env(safe-area-inset-bottom))}
 .bottomnav a{flex:1;text-align:center;color:#e9dccb;text-decoration:none;font-size:.7rem;padding:.25rem 0;position:relative}
 .bottomnav a .i{display:block;font-size:1.25rem;line-height:1.3}.bottomnav a.active{color:#fff;font-weight:700}
 .bottomnav .badge{position:absolute;top:0;right:18%;min-width:1.1rem;font-size:.62rem;padding:0 .3rem}
 .grid-2,.grid-3{grid-template-columns:1fr}.grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}
 .form-grid{grid-template-columns:1fr}
 .week{grid-template-columns:1fr}.day{min-height:auto}
 .brand small{display:none}.topsearch{max-width:none}
 table.responsive thead{display:none}table.responsive tr{display:block;border-bottom:1px solid var(--line);padding:.4rem 0}
 table.responsive td{display:flex;justify-content:space-between;gap:1rem;border:0;padding:.2rem 0}
 table.responsive td::before{content:attr(data-label);color:var(--mute);font-size:.8rem;font-weight:600}
 table.responsive td.num{text-align:right}
 .hide-mobile{display:none}.only-mobile{display:revert}
 h1{font-size:1.25rem}
}
@media print{
 .topbar,.sidenav,.bottomnav,.noprint,.messages{display:none!important}
 body{background:#fff}main{padding:0}.card{border:0;padding:0}
}

.pill.forms-ok{background:#dff0e5;color:#245c3b;font-weight:700;text-decoration:none}
.pill.forms-pending{background:#fff1d6;color:#7a4b00;font-weight:700;text-decoration:none}
details.staffform{border:1px solid var(--line);border-radius:10px;padding:.5rem .7rem;margin-top:.7rem;background:#fbf8f3}
details.staffform summary{cursor:pointer}
mark.unreadable{background:#fff1a8;color:#5a3d00;border:1px dashed #b98c00;border-radius:4px;padding:0 .2rem}

/* client portal / quick-book / client record / unpaid / calendar sync */
.feedurl{font-family:ui-monospace,Menlo,monospace;font-size:.82rem;background:var(--sand-warm);border-radius:8px;padding:.55rem .7rem;word-break:break-all;display:block}
.steps{margin:.3rem 0 .3rem 1.2rem;line-height:1.7}
.pill.inv-paid{background:#dff0e5;color:#245c3b;font-weight:700}.pill.inv-unpaid{background:#fbe1dc;color:#9b2c1f;font-weight:700}
.pill.inv-draft{background:#eee6dc;color:#5d4a3c;font-weight:700}.pill.opened{background:#e6eefb;color:#1f4e79}
.paybadge{display:inline-block;font-weight:800;letter-spacing:.03em;padding:.35rem .8rem;border-radius:999px;font-size:1rem}
.paybadge.ok{background:#dff0e5;color:#245c3b}.paybadge.owes{background:#fbe1dc;color:#9b2c1f}
.paysum{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.6rem;align-items:center}
.paysum .stat{font-size:1.3rem}
.tabs{position:sticky;top:0;z-index:5;display:flex;gap:.35rem;overflow-x:auto;background:var(--sand,#f7f0e6);padding:.4rem 0;margin-bottom:.6rem;scrollbar-width:none}
.tabs a{white-space:nowrap;padding:.35rem .75rem;border-radius:999px;background:var(--white);border:1px solid var(--line);font-size:.85rem;font-weight:600;text-decoration:none;color:var(--deep)}
.timeline{list-style:none;margin:0;padding:0}.timeline li{display:grid;grid-template-columns:1.6rem 1fr auto;gap:.4rem;padding:.35rem 0;border-bottom:1px solid var(--line);font-size:.88rem}
.timeline .tm{color:var(--mute);font-size:.78rem;white-space:nowrap}
.chat{display:flex;flex-direction:column;gap:.35rem;max-height:340px;overflow:auto}.chat .b{max-width:85%;padding:.4rem .65rem;border-radius:12px;font-size:.88rem}
.chat .in{background:var(--sand-warm);align-self:flex-start}.chat .out{background:#dcebf7;align-self:flex-end}
.thumbs img{width:84px;height:84px;object-fit:cover;border-radius:8px;margin:0 .3rem .3rem 0}
.searchwrap{position:relative;flex:1;max-width:420px;margin-left:auto}
.searchwrap .topsearch{max-width:none;margin:0}
.sresults{position:absolute;left:0;right:0;top:calc(100% + 6px);background:var(--white);border:1px solid var(--line);border-radius:12px;box-shadow:0 10px 28px rgba(0,0,0,.18);z-index:50;overflow:hidden;max-height:70vh;overflow-y:auto}
.sresults a{display:block;padding:.6rem .8rem;border-bottom:1px solid var(--line);text-decoration:none;color:var(--ink)}
.sresults a:last-child{border-bottom:0}.sresults a.on,.sresults a:hover{background:var(--sand-warm)}
.sresults .sm{font-size:.8rem;color:var(--mute)}.sresults .empty{padding:.7rem .8rem;color:var(--mute);font-size:.88rem}
.qb fieldset{border:1px solid var(--line);border-radius:12px;padding:.7rem .8rem;margin:0 0 .9rem}
.qb legend{font-weight:800;padding:0 .3rem}
.qb label{display:block;font-size:.85rem;font-weight:600;margin:.35rem 0 .15rem}
.qb input[type=text],.qb input[type=tel],.qb input[type=email],.qb input[type=date],.qb input[type=time],.qb input[type=number],.qb select,.qb textarea{width:100%}
.qb .two{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}
.qb .checks label{display:flex;gap:.45rem;align-items:center;font-weight:500;margin:.25rem 0}
.qb .checks input{width:auto}
.qb .picked{display:flex;justify-content:space-between;align-items:center;background:#eef8f1;border:1px solid #b9dcc5;border-radius:10px;padding:.5rem .7rem}
.qb .errorlist{color:var(--bad);font-size:.8rem;margin:.1rem 0;padding:0;list-style:none}
.qb .warn{background:#fff6e8;border:1px solid #f0cf9c;border-radius:10px;padding:.6rem .8rem;margin-bottom:.8rem}
.qb .savebar{position:sticky;bottom:0;background:var(--white);border-top:1px solid var(--line);padding:.6rem 0;display:flex;gap:.5rem;align-items:center;justify-content:space-between}
.sendlink textarea{width:100%;font-size:.95rem}
.sendlink .btns{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.45rem;margin-top:.5rem}
@media (max-width:700px){.paysum{grid-template-columns:1fr 1fr}.qb .two{grid-template-columns:1fr}}
/* quick-book: range add-on prices, extra charges, running total */
.qb .addons .addon{padding:.15rem 0}
.qb .addonprice{margin:.25rem 0 .45rem 1.7rem}
.qb .addonprice input[type=text]{max-width:9rem}
.qb .extra{display:grid;grid-template-columns:1fr 7.5rem 2.6rem;gap:.4rem;align-items:center;margin:.35rem 0}
.qb .extra .money{display:flex;align-items:center;gap:.2rem}
.qb .extra .money input{width:100%}
.qb .extra .xrm{height:2.6rem;border:1px solid var(--line,#d9cbb8);border-radius:10px;background:#fff;font-size:1rem;cursor:pointer}
.qb .extra .xerr{grid-column:1/-1;margin-top:-.15rem}
.qb input.bad{border-color:#b3261e;background:#fff5f4}
.qb #addextra{margin:.2rem 0 .6rem}
.qb .runtotal{border-top:1px dashed var(--line,#d9cbb8);margin-top:.6rem;padding-top:.5rem}
.qb .runtotal>div{display:flex;justify-content:space-between;padding:.12rem 0;font-size:.95rem}
.qb .runtotal .tot{border-top:1px solid var(--line,#d9cbb8);margin-top:.25rem;padding-top:.35rem;font-size:1.08rem}
@media (max-width:420px){.qb .extra{grid-template-columns:1fr 6.4rem 2.6rem}}
.lineedit{display:inline-block;text-align:left}
.lineedit[open]{display:block;margin:.3rem 0}
.lineedit .lineform{display:grid;gap:.35rem;min-width:14rem;margin-top:.35rem}
.lineedit .lineform input{width:100%}

.btn-delete{background:var(--bad);border-color:var(--bad);color:#fff!important}.btn-delete:hover{background:#8f2e24;color:#fff}
.btn-delete:disabled{opacity:.45;cursor:not-allowed}
.danger-zone{border:1.5px solid var(--bad)}.danger-zone h2{color:var(--bad)}
.danger-card{border:1.5px solid var(--bad)}.del-sum td{padding:.35rem .2rem;border-bottom:1px solid var(--line)}

.msgst.msg-warn{color:#8a5a12;background:#fff4dc;border:1px solid #f0d49a;border-radius:999px;padding:0 .45rem;font-weight:700}
.msgst.msg-ok{color:#245c3b;font-weight:700}

.msgst.msg-prep{color:#5b5048;background:#f1ece6;border:1px solid #ddd2c6;border-radius:999px;padding:0 .45rem;font-weight:600}
a.textclient{white-space:nowrap}.btn.disabled{opacity:.55;pointer-events:none}
.qrlist{margin:.2rem 0 .5rem}.qrlist summary{cursor:pointer;padding:.35rem 0}
.qr{list-style:none;margin:.3rem 0 0;padding:0;display:flex;flex-direction:column;gap:.35rem}
.qr li{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.35rem .5rem;border:1px solid #e7ddd2;border-radius:10px;background:#fff}
.qr .qrt{font-size:.9rem;font-weight:600;min-width:0}.qr .qrb{display:flex;gap:.3rem;flex-shrink:0}
.compose textarea{width:100%}

.appt .t.needtime,.needtime{color:#8a3b12}.needtime-note{color:#8a3b12}
mark.preftime-hl{display:inline-block;background:#fff1b8;color:#4a3300;border-radius:6px;padding:.05rem .4rem;font-weight:700;font-size:.85rem;margin-top:.15rem}
.needtime-box{border:2px solid #e8b04b;background:#fffaf0}

.disagree-box{border:2px solid #b3261e;background:#fdf0ee}.disagree-box h2{color:#9b1c14}
.pill.disagree{background:#b3261e;color:#fff}

.review-card{border:2px solid #e8b04b}.revrow{padding:.55rem 0;border-top:1px solid var(--line)}.revrow:first-of-type{border-top:0}
.revbtns{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.4rem}.revbtns form{margin:0}.btn.copied{background:#eef7f1;border-color:#2f7d4f}
.pill.rev-due,.pill.rev-opened{background:#fff1b8;color:#4a3300}.pill.rev-sent{background:#e3f3e8;color:#245c3b}.pill.rev-skipped{background:#eee;color:#555}

/* Quick-book: add the typed name as a new client */
.sresults .addnew{display:block;width:100%;margin:0;border:0;border-top:1px solid var(--line,#e5dccf);background:#eef7f1;color:#1f6f43;font-weight:700;font-size:1.05rem;padding:.95rem .9rem;text-align:left;cursor:pointer;min-height:3.2rem}
.sresults .addnew:hover,.sresults .addnew:focus-visible{background:#dff0e6}
.sresults .empty.small{padding:.6rem .9rem}
.qb .picked[hidden]{display:none}

/* quick travel fee */
.tfcard{margin-bottom:1rem}.tfh{display:block;font-weight:800;font-size:1.1rem;margin:0 0 .4rem}
.tfrow{display:flex;gap:.5rem}.tfrow input{flex:1;min-width:0;font-size:1.05rem}.tfrow .btn{flex:0 0 auto}
.tfout:empty{display:none}.tfout{margin-top:.6rem}
.tfres{display:flex;flex-wrap:wrap;align-items:baseline;gap:.35rem .6rem}.tfzone{font-weight:800;font-size:1.1rem}
.tffee{font-weight:900;font-size:1.35rem;color:#1f6f43;background:#eef7f1;border-radius:8px;padding:.05rem .5rem}
.tftot{width:100%;margin:.5rem 0 .2rem;border-collapse:collapse;font-size:.95rem}.tftot td{padding:.3rem 0;border-top:1px solid var(--line)}.tftot td.r{text-align:right;font-weight:700;white-space:nowrap;padding-left:.6rem}
.tfmore{margin-top:.4rem}
