:root{--ink:#17243c;--ink-soft:rgba(23,36,60,.72);--ink-faint:rgba(23,36,60,.45);--rose:#d5aaa4;--rose-deep:#c89790;--rose-soft:#eedad7;--rose-wash:rgba(213,170,164,.22);--paper:#f7f5ef;--paper-2:#efece4;--cream:#f1eee6;--card:#fbfaf6;--line:rgba(23,36,60,.18);--line-soft:rgba(23,36,60,.09);--red:#985e60;--ok:#5d7a66;--serif:"Instrument Serif",Georgia,serif;--sans:"Jost",system-ui,sans-serif;--ease:cubic-bezier(.22,1,.36,1);--green:var(--ink);--green-deep:#0f1a2e;--leaf:var(--ink-soft);--leaf-soft:var(--line);--peach:var(--rose);--peach-soft:var(--rose-soft);--blush:var(--rose-soft)}*{margin:0;padding:0;box-sizing:border-box}body,html{height:100%}body{font-family:var(--sans);font-weight:400;background:var(--paper);color:var(--ink);-webkit-font-smoothing:antialiased;line-height:1.45}:focus-visible{outline:2px solid var(--ink);outline-offset:3px}a{color:inherit;text-decoration:none}button,input,select,textarea{font-family:inherit;color:inherit}button{-webkit-tap-highlight-color:transparent}.serif,h1,h2,h3{font-family:var(--serif);font-weight:400;letter-spacing:-.01em}.shell{max-width:640px;margin:0 auto;min-height:100dvh;display:flex;flex-direction:column}.topbar{position:-webkit-sticky;position:sticky;top:0;z-index:40;justify-content:space-between;padding:calc(14px + env(safe-area-inset-top)) 18px 10px;background:rgba(247,245,239,.92);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line-soft)}.topbar,.topbar .brand{display:flex;align-items:center}.topbar .brand{gap:8px;font-size:12px;letter-spacing:.3em;text-transform:uppercase;font-weight:400;color:var(--ink)}.topbar .brand img{display:block;width:36px;height:36px;margin:-8px 0}.topbar .brand .amp{color:var(--rose-deep)}.topbar .pg{font-size:11px;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-soft)}main.content{flex:1 1;padding:18px 18px calc(86px + env(safe-area-inset-bottom))}.tabs{position:fixed;bottom:0;left:0;right:0;z-index:40;display:flex;justify-content:space-around;background:rgba(247,245,239,.96);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-top:1px solid var(--line-soft);padding:8px 6px calc(8px + env(safe-area-inset-bottom))}.tabs a{flex:1 1;display:flex;flex-direction:column;align-items:center;gap:3px;font-size:10.5px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);position:relative;padding:4px 0;border-radius:12px}.tabs a.on{color:var(--ink)}.tabs a .ic{font-size:20px;line-height:1}.tabs a svg{display:block}.tabs .badge{position:absolute;top:-2px;right:calc(50% - 22px);background:var(--rose);color:var(--ink);font-size:10px;font-weight:500;min-width:17px;height:17px;border-radius:99px;display:flex;align-items:center;justify-content:center;padding:0 4px}@media (min-width:900px){.shell{max-width:1180px;display:grid;grid-template-columns:200px minmax(0,1fr);grid-template-rows:auto minmax(0,1fr);grid-template-areas:"top top" "nav main"}.topbar{grid-area:top;padding:22px 36px 16px}.topbar .brand{font-size:13px}main.content{grid-area:main;padding:28px 36px 48px}.offline{grid-column:1/-1}.tabs{grid-area:nav;position:-webkit-sticky;position:sticky;top:72px;align-self:start;flex-direction:column;gap:4px;background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none;border:0;padding:28px 16px 0 24px}.tabs,.tabs a{justify-content:flex-start}.tabs a{flex:none;flex-direction:row;gap:12px;padding:10px 12px;font-size:12px;letter-spacing:.14em}.tabs a.on{background:var(--rose-wash)}.tabs .badge{position:static;margin-left:auto}}.offline{background:var(--cream);color:var(--red);font-size:13px;text-align:center;padding:8px;border-bottom:1px solid var(--line-soft)}h1.pageh{font-size:30px;line-height:1.05;color:var(--ink);margin-bottom:14px}.subh{font-size:10px;font-weight:500;letter-spacing:.2em;text-transform:uppercase;margin:20px 0 8px}.fine,.subh{color:var(--ink-soft)}.fine{font-size:12px;line-height:1.6}.card{background:var(--card);border:1px solid var(--line-soft);border-radius:4px;padding:16px;margin-bottom:12px}.card .row1{display:flex;justify-content:space-between;align-items:baseline;gap:10px}.card .when{font-family:var(--serif);font-size:19px;color:var(--ink)}.card .code{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint)}.card .who{font-weight:500;font-size:15px;margin-top:4px}.card .meta{font-size:13.5px;color:var(--ink-soft);margin-top:2px}.card .addr{display:inline-block;font-size:13.5px;color:var(--ink);border-bottom:1px solid var(--rose);margin-top:6px}.chiprow{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}.chip{font-size:11.5px;font-weight:500;border-radius:99px;padding:3px 10px;background:var(--paper-2);color:var(--ink)}.chip.p{background:var(--rose-soft);color:var(--red)}.assignee{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;margin-top:8px;color:var(--ink-soft)}.assignee .dot{width:9px;height:9px;border-radius:50%}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:4px;font-family:var(--serif);font-size:18px;padding:12px 20px;cursor:pointer;transition:background .2s ease,transform .2s ease;border:1px solid transparent;line-height:1.1}.btn:disabled{opacity:.38;cursor:not-allowed}.btn-solid{background:var(--rose);color:var(--ink)}.btn-solid:not(:disabled):hover{background:var(--rose-deep)}.btn-peach{background:var(--ink);color:var(--paper)}.btn-line{border-color:var(--ink);color:var(--ink);background:transparent}.btn-line:not(:disabled):hover{background:var(--ink);color:var(--paper)}.btn-danger{border-color:var(--red);color:var(--red);background:transparent}.btn-block{width:100%}.btn-sm{font-size:16px;padding:8px 14px}.btnrow{display:flex;gap:8px;margin-top:12px}.btnrow .btn{flex:1 1}.text-link{font-family:var(--serif);font-size:17px;border:0;background:none;padding:4px 0;border-bottom:1px solid var(--ink);cursor:pointer}.empty{text-align:center;padding:48px 20px;color:var(--ink-soft)}.empty .big{font-size:40px;margin-bottom:10px}.empty p{font-family:var(--serif);font-size:22px;color:var(--ink)}.empty small{font-size:13px;display:block;margin-top:6px}.st-badge{display:inline-block;border-radius:999px;padding:4px 12px;font-size:10px;font-weight:500;letter-spacing:.14em;text-transform:uppercase}.st-requested{background:var(--rose-soft);color:var(--red)}.st-confirmed{background:var(--paper-2);color:var(--ink)}.st-cancelled,.st-declined,.st-expired{background:#efe0de;color:var(--red)}.st-completed{background:var(--ink);color:var(--paper)}.fld{margin-bottom:14px}.fld label{display:block;font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-soft);font-weight:500;margin-bottom:4px}.fld input,.fld select,.fld textarea{width:100%;border:0;border-bottom:1px solid rgba(23,36,60,.4);border-radius:0;background:rgba(255,255,255,.45);padding:11px 9px;font-size:16px;color:var(--ink)}.fld input:focus,.fld select:focus,.fld textarea:focus{border-color:var(--ink);outline:none;background:rgba(255,255,255,.7)}.fld input::placeholder,.fld textarea::placeholder{color:#7a7c84;font-size:14px}.fld-row{display:grid;grid-template-columns:1fr 1fr;grid-gap:14px;gap:14px}@media (max-width:420px){.fld-row{grid-template-columns:1fr;gap:0}}.sheet-back{position:fixed;inset:0;background:rgba(23,36,60,.42);z-index:60;display:flex;align-items:flex-end;justify-content:center}.sheet{background:var(--paper);border-radius:4px 4px 0 0;padding:24px 20px calc(24px + env(safe-area-inset-bottom));width:100%;max-width:640px;max-height:90dvh;overflow:auto;animation:sheet-in .45s var(--ease)}.sheet h2{font-size:30px;line-height:1.05;color:var(--ink);margin-bottom:6px}.sheet .lead{font-size:13px;color:var(--ink-soft);margin-bottom:18px}@keyframes sheet-in{0%{transform:translateY(24px);opacity:0}to{transform:none;opacity:1}}@media (min-width:900px){.sheet-back{align-items:center}.sheet{border-radius:4px;max-width:560px;max-height:86vh}}.err{background:#f3e3e1;border:1px solid #e3c7c3;color:var(--red);border-radius:4px}.err,.ok{padding:11px 14px;font-size:13.5px;margin-top:10px}.ok{background:var(--paper-2);border:1px solid var(--line-soft);color:var(--ink);border-radius:4px}.ag-head{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;margin-bottom:14px}.ag-head h1{font-size:34px;line-height:1;margin:0}.ag-head h1 em{font-style:italic;color:var(--rose-deep)}.ag-head .ctl{gap:6px}.ag-head .ctl,.navbtn{display:flex;align-items:center}.navbtn{width:36px;height:36px;justify-content:center;border:1px solid var(--line);border-radius:50%;background:transparent;color:var(--ink);cursor:pointer}.navbtn:hover{background:rgba(255,255,255,.55)}.navbtn.txt{width:auto;padding:0 14px;font-family:var(--serif);font-size:15px}.jump{position:relative}.jump input{position:absolute;inset:0;opacity:0;width:100%;height:100%;cursor:pointer}.seg{display:flex;border:1px solid var(--line);border-radius:999px;padding:3px;gap:2px;margin-bottom:14px}.seg button{flex:1 1;border:none;background:transparent;padding:8px 0;border-radius:999px;font-family:var(--serif);font-size:16px;color:var(--ink-soft);cursor:pointer}.seg button.on{background:var(--ink);color:var(--paper)}.strip{display:grid;grid-template-columns:repeat(7,1fr);grid-gap:4px;gap:4px;margin-bottom:6px}.dcell{border:1px solid transparent;border-radius:999px;padding:9px 0 8px;text-align:center;background:transparent;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:3px;position:relative;transition:background .2s}.dcell:hover{background:rgba(255,255,255,.55)}.dcell .dw{font-size:9.5px;letter-spacing:.14em;color:var(--ink-faint);text-transform:uppercase}.dcell .dn{font-family:var(--serif);font-size:20px;color:var(--ink);line-height:1.1}.dcell.past .dn{color:var(--ink-faint)}.dcell.now .dn{color:var(--rose-deep)}.dcell.sel{background:var(--ink);border-color:var(--ink)}.dcell.sel .dn,.dcell.sel .dw{color:var(--paper)}.dcell.blocked .dn{text-decoration:line-through;-webkit-text-decoration-color:var(--rose-deep);text-decoration-color:var(--rose-deep)}.dots{display:flex;gap:3px;justify-content:center;height:5px}.dots i{width:5px;height:5px;border-radius:50%;background:var(--rose);display:block}.dots i.pend{background:transparent;border:1px solid var(--rose-deep)}.dcell.sel .dots i{background:var(--rose)}.dcell.sel .dots i.pend{background:transparent;border-color:var(--rose)}.day-head{display:flex;justify-content:space-between;align-items:baseline;gap:10px;margin:22px 0 10px}.day-head .lbl{font-family:var(--serif);font-size:22px;color:var(--ink)}.day-head .lbl small{font-family:var(--sans);font-size:12px;color:var(--ink-soft);margin-left:8px}.day-head .acts{display:flex;gap:6px}.ag-list{list-style:none;border-top:1px solid var(--line-soft)}.ag-row{display:grid;grid-template-columns:66px minmax(0,1fr) auto;grid-gap:12px;gap:12px;align-items:start;padding:14px 0;border-bottom:1px solid var(--line-soft)}.ag-row .t{font-family:var(--serif);font-size:17px;color:var(--ink);line-height:1.2}.ag-row .t small{display:block;font-family:var(--sans);font-size:11px;color:var(--ink-faint);margin-top:2px}.ag-row .main{min-width:0}.ag-row .name{font-weight:500;font-size:15.5px;color:var(--ink);display:block}.ag-row .name:hover{text-decoration:underline;-webkit-text-decoration-color:var(--rose);text-decoration-color:var(--rose)}.ag-row .svc{font-size:13px;color:var(--ink-soft);margin-top:2px}.ag-row .svc span+span:before{content:" · "}.ag-row .quick{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}.ag-row .quick button{border:1px solid var(--ink);background:transparent;border-radius:4px;padding:6px 12px;font-family:var(--serif);font-size:15px;cursor:pointer}.ag-row .quick button.rose{background:var(--rose);border-color:var(--rose)}.ag-row .quick button.ghost{border-color:var(--line);color:var(--ink-soft)}.ag-row.pend{background:linear-gradient(90deg,var(--rose-wash),transparent 70%);margin:0 -8px;padding-left:8px;padding-right:8px;border-left:2px dashed var(--rose-deep)}.ag-row.block,.ag-row.done .name,.ag-row.done .t{color:var(--ink-soft)}.ag-row.block .name{color:var(--red);font-weight:400;font-style:italic}.price{font-family:var(--serif);font-size:20px;color:var(--ink);background:none;border:0;border-bottom:1px dashed var(--line);padding:0 2px 1px;cursor:text;text-align:right;min-width:52px}.price.est{color:var(--ink-faint)}.price-in{font-family:var(--serif);font-size:20px;width:92px;border:0;border-bottom:1px solid var(--ink);background:rgba(255,255,255,.6);padding:0 4px 1px;text-align:right}.price-in:focus{outline:none}.day-total{display:flex;justify-content:space-between;align-items:baseline;padding:14px 0 4px;font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft)}.day-total b{font-family:var(--serif);font-weight:400;font-size:24px;color:var(--ink);letter-spacing:0;text-transform:none}.ledger{list-style:none;border-top:1px solid var(--line-soft)}.ledger li{display:grid;grid-template-columns:54px minmax(0,1fr) auto;grid-gap:12px;gap:12px;align-items:center;padding:13px 0;border-bottom:1px solid var(--line-soft);cursor:pointer}.ledger li:hover{background:rgba(255,255,255,.45)}.ledger .d{font-family:var(--serif);font-size:19px;line-height:1.05}.ledger .d small{display:block;font-family:var(--sans);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint)}.ledger li.now .d{color:var(--rose-deep)}.ledger li.past .d{color:var(--ink-faint)}.ledger .what{font-size:13.5px;color:var(--ink-soft);min-width:0}.ledger .what b{font-weight:500;color:var(--ink);display:block;font-size:14px}.ledger .what i{color:var(--red);font-style:italic}.ledger .amt{font-family:var(--serif);font-size:20px;color:var(--ink)}.ledger li.quiet .amt{color:var(--ink-faint)}.ledger-foot{display:flex;justify-content:space-between;align-items:baseline;padding:16px 0 0;font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-soft)}.ledger-foot b{font-family:var(--serif);font-weight:400;font-size:30px;color:var(--ink);letter-spacing:0;text-transform:none}.agenda{display:block}.agenda .pane-week,.agenda.show-week .pane-day{display:none}.agenda.show-week .pane-week{display:block}@media (min-width:900px){.agenda{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(300px,.9fr);grid-gap:48px;gap:48px;align-items:start}.agenda .pane-day,.agenda .pane-week{display:block!important}.agenda .pane-week{position:-webkit-sticky;position:sticky;top:96px}.seg{display:none}.ag-head h1{font-size:44px}.dcell{padding:12px 0 10px}.dcell .dn{font-size:24px}}.toggle{display:flex;gap:8px;margin:4px 0 14px}.toggle button{flex:1 1;border:1px solid var(--line);background:transparent;border-radius:999px;padding:9px 0;font-family:var(--serif);font-size:16px;cursor:pointer}.toggle button[aria-pressed=true]{background:var(--ink);color:var(--paper);border-color:var(--ink)}.meta-ic{display:inline-flex;align-items:center;gap:6px}.statusdot{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--ok);margin-right:7px}.week-scroll{overflow-x:auto;margin:0 -18px;padding:0 18px}.week-grid{display:grid;grid-template-columns:repeat(7,minmax(120px,1fr));grid-gap:8px;gap:8px;min-width:880px}.wday{background:var(--card);border:1px solid var(--line-soft);border-radius:4px;padding:8px;min-height:180px}.wday .dh{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);text-align:center;margin-bottom:8px}.wday .dh.today{color:var(--rose-deep)}.wjob{border-radius:4px;padding:7px 8px;font-size:11.5px;color:#fff;margin-bottom:6px;display:block}.wjob small{display:block;opacity:.9}.wstrip{display:grid;grid-template-columns:repeat(7,1fr);grid-gap:4px;gap:4px}.mcal{grid-template-columns:repeat(7,1fr);grid-gap:2px;gap:2px}.mcal,.mdow{display:grid}.mdow{grid-template-columns:repeat(7,1fr);margin-bottom:4px}.mdow span{font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint);text-align:center}.dcell.dim{opacity:.35}.sched-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.tl{list-style:none;margin-top:8px}.tl li{display:flex;gap:10px;padding:6px 0;font-size:13.5px}.tl .dot{width:8px;height:8px;border-radius:50%;background:var(--rose);margin-top:6px;flex:none}.tl .t{color:var(--ink-soft);font-size:12px}.login-page{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:24px;background:var(--paper)}.login-card{background:var(--card);border:1px solid var(--line-soft);border-radius:4px;padding:36px 28px;max-width:400px;width:100%}.login-card .brand{margin:-6px auto 10px;text-align:center}.login-card .brand img{display:inline-block;width:170px;height:auto}.login-card .brand .amp{color:var(--rose-deep)}.install-float{position:fixed;left:12px;right:12px;bottom:calc(78px + env(safe-area-inset-bottom));z-index:70;background:var(--paper);border:1px solid var(--line);border-radius:4px;padding:14px 16px;box-shadow:0 16px 44px rgba(23,36,60,.18);max-width:616px;margin:0 auto}.install-float .x{position:absolute;top:6px;right:10px;border:none;background:transparent;color:var(--ink-soft);font-size:22px;cursor:pointer;line-height:1;padding:4px}.install-float .row{display:flex;gap:12px;align-items:center}.install-float .appicon{width:44px;height:44px;border-radius:4px;background:var(--ink);color:var(--paper);display:flex;align-items:center;justify-content:center;font-family:var(--serif);font-size:18px;flex:none}.install-float .txt{flex:1 1;min-width:0}.install-float .txt b{display:block;font-size:14.5px;font-weight:500;color:var(--ink)}.install-float .txt small{font-size:12.5px;color:var(--ink-soft);line-height:1.4;display:block;margin-top:2px}@media (min-width:900px){.install-float{display:none}}.check{display:flex;gap:10px;align-items:flex-start;padding:9px 0;border-bottom:1px solid var(--line-soft);font-size:14.5px}.check input{width:19px;height:19px;accent-color:var(--ink);margin-top:1px}.check.done{opacity:.55;text-decoration:line-through}.setrow{display:flex;justify-content:space-between;align-items:center;padding:13px 0;border-bottom:1px solid var(--line-soft)}.setrow .l b{display:block;font-size:14.5px;font-weight:500}.setrow .l small{font-size:12.5px;color:var(--ink-soft)}.ios-steps{background:var(--card);border:1px solid var(--line-soft);border-radius:4px;padding:16px;margin-top:10px}.ios-steps ol{margin-left:18px;font-size:14px}.ios-steps li{padding:4px 0}.install-float.bare{bottom:calc(16px + env(safe-area-inset-bottom))}.install-float img.appicon{object-fit:cover;background:transparent}.install-page h2{font-size:30px;line-height:1.1;margin:4px 0 8px}.install-page .lead,.sheet .lead{font-size:15px;color:var(--ink-soft);margin-bottom:14px;line-height:1.5}.install-page .fine{font-size:12.5px;color:var(--ink-soft);margin-top:14px;line-height:1.6}.install-page .linkbtn{border:none;background:transparent;color:var(--ink);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;cursor:pointer;border-bottom:1px solid var(--line);padding:2px 0;margin-top:4px}.install-steps{list-style:none;margin:6px 0 4px}.install-steps li{display:flex;gap:12px;align-items:flex-start;padding:10px 0;border-bottom:1px solid var(--line-soft);font-size:15px;line-height:1.45}.install-steps li:last-child{border-bottom:none}.install-steps li b{flex:none;width:28px;height:28px;border-radius:50%;background:var(--ink);color:var(--paper);display:flex;align-items:center;justify-content:center;font-family:var(--serif);font-size:16px;font-weight:400}.install-steps li.warn b{background:var(--red)}.install-steps li strong{font-weight:500}.login-card .fine{font-size:12.5px;color:var(--ink-soft);line-height:1.6}.install-page .textlink,.login-card .textlink{border:none;background:transparent;color:var(--ink);font-family:inherit;font-size:13px;cursor:pointer;border-bottom:1px solid var(--line);padding:0 0 1px}.login-card .textlink:hover{border-color:var(--ink)}