:root{--ink:#2b3a2e;--canvas:#f7efea;--rose:#c17f72;--rose-dark:#9c6156;--gold:#b08d57;--sage:#7c9473;--deep:#24322a;--line:#e4d8ce;--white:#fffdfb}*{box-sizing:border-box}body,html{padding:0;margin:0}.app{font-family:Inter,sans-serif;color:var(--ink);background:var(--canvas);min-height:100vh;padding:20px}.brandName,.h1,.h2,.h3,.h4{font-family:Fraunces,serif}.h1{font-size:26px;margin:4px 0 2px}.h1,.h2{font-weight:600}.h2{font-size:22px;margin:0}.h3{font-size:17px}.h3,.h4{font-weight:600;margin:0 0 10px}.h4{font-size:14px;display:flex;align-items:center;gap:6px;color:var(--rose-dark)}.muted{color:#7a756e}.small{font-size:12.5px}.strong{font-weight:600}.accent{color:var(--rose-dark)}.grow{flex:1 1}.row{display:flex;gap:10px;align-items:center}.gapSm{gap:6px}.divider{height:1px;background:var(--line);margin:16px 0}.loadingWrap{display:flex;align-items:center;gap:8px;justify-content:center;height:60vh;color:var(--rose-dark);font-family:Fraunces,serif}.spin{animation:spin 1.4s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.loginPage{max-width:420px;margin:0 auto;padding-top:30px}.brandMark{display:flex;align-items:center;gap:10px;color:var(--rose-dark);margin-bottom:30px;justify-content:center}.brandName{font-size:20px;font-weight:600;color:var(--deep)}.brandSub{font-size:12px;color:#8a8378}.loginCard{background:var(--white);border:1px solid var(--line);border-radius:18px;padding:26px;display:flex;flex-direction:column;gap:10px}.linkBack{background:none;border:none;color:#8a8378;font-size:12.5px;cursor:pointer;padding:0;margin-bottom:4px}.linkBack,.loginNote{display:flex;align-items:center;gap:6px}.loginNote{margin-top:16px;justify-content:center}.loginFooter,.loginNote{font-size:11.5px;color:#a08f80;text-align:center}.loginFooter{margin-top:22px;line-height:1.6}.input{width:100%;border:1px solid var(--line);background:var(--white);border-radius:10px;padding:11px 13px;font-size:14px;font-family:inherit;color:var(--ink)}.input:focus{outline:none;border-color:var(--rose)}.inputBare{border:none;background:none;flex:1 1;font-size:14px;font-family:inherit;color:var(--ink)}.inputBare:focus{outline:none}.searchRow{display:flex;align-items:center;gap:8px;border:1px solid var(--line);background:var(--white);border-radius:10px;padding:9px 13px;color:#8a8378}.searchRow.grow{flex:1 1}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:none;border-radius:10px;padding:11px 16px;font-size:13.5px;font-weight:600;font-family:inherit;cursor:pointer}.btn.small{padding:7px 11px;font-size:12.5px}.btnPrimary{background:var(--rose);color:#fff}.btnPrimary:hover{background:var(--rose-dark)}.btnGhost{background:transparent;color:var(--rose-dark);border:1px solid var(--line)}.btnGhost:hover{background:#f1e6de}.wide{width:100%}.iconBtn{background:none;border:1px solid var(--line);border-radius:8px;padding:5px 7px;cursor:pointer;color:var(--ink)}.pickList{display:flex;flex-direction:column;gap:4px;max-height:180px;overflow-y:auto}.pickRow{display:flex;align-items:center;gap:8px;text-align:left;background:none;border:none;padding:8px 4px;border-radius:8px;cursor:pointer;font-family:inherit;font-size:14px}.pickRow:hover{background:#f1e6de}.toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);background:var(--deep);color:#fff;padding:10px 18px;border-radius:10px;font-size:13px;z-index:50}.portal{max-width:980px;margin:0 auto}.topBar{display:flex;align-items:center;justify-content:space-between;background:var(--deep);color:#fff;padding:14px 20px;border-radius:16px;margin-bottom:16px}.topBar svg{color:#e9b9ac}.topTitle{font-family:Fraunces,serif;font-weight:600;font-size:16px}.topSub{font-size:11.5px;color:#c9c2b6}.topBar .btnGhost{color:#fff;border-color:hsla(0,0%,100%,.25)}.topBar .btnGhost:hover{background:hsla(0,0%,100%,.1)}.tabs{margin-bottom:14px}.tabBtn,.tabs{display:flex;gap:6px}.tabBtn{align-items:center;background:var(--white);border:1px solid var(--line);border-radius:10px;padding:9px 14px;font-size:13px;font-family:inherit;cursor:pointer;color:#7a756e}.tabActive{background:var(--rose);color:#fff;border-color:var(--rose)}.panel{background:var(--white);border:1px solid var(--line);border-radius:16px;padding:20px}.panelHead{display:flex;gap:10px;margin-bottom:14px}.table{display:flex;flex-direction:column}.tRow{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr .7fr;grid-gap:8px;gap:8px;padding:11px 4px;border-bottom:1px solid var(--line);align-items:center;font-size:13.5px}.tHead{font-size:11.5px;text-transform:uppercase;letter-spacing:.04em;color:#a08f80;border-bottom:1px solid var(--ink)}.empty{padding:20px 4px;color:#a08f80;font-size:13.5px}.detailHead{display:flex;justify-content:space-between;align-items:flex-start;margin:6px 0 18px;flex-wrap:wrap;gap:12px}.statPair{display:flex;gap:18px}.stat{text-align:right}.statLabel{font-size:11px;color:#a08f80}.statVal{font-family:Fraunces,serif;font-size:18px;font-weight:600}.grid2{display:grid;grid-template-columns:1fr 1fr;grid-gap:14px;gap:14px}@media (max-width:720px){.grid2{grid-template-columns:1fr}.tRow{grid-template-columns:1.2fr 1fr .8fr}.tRow div:nth-child(3),.tRow div:nth-child(4){display:none}}.card{background:#fdfaf7;border:1px solid var(--line);border-radius:14px;padding:16px;display:flex;flex-direction:column;gap:8px}.centerCard{align-items:center}.listMini{display:flex;flex-direction:column;gap:6px;margin-top:10px;max-height:220px;overflow-y:auto}.miniRow{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 2px;border-bottom:1px solid var(--line)}.tag{font-size:10.5px;text-transform:uppercase;letter-spacing:.03em;padding:4px 8px;border-radius:999px;border:none;cursor:default;font-family:inherit}.tag-upcoming{background:#f1e1d8;color:var(--rose-dark)}.tag-completed{background:#e4ebe0;color:#4f6b47}.tag-cancelled{background:#efe9e3;color:#a08f80}.reminderRow{display:flex;align-items:center;gap:10px;padding:10px 6px;border-bottom:1px solid var(--line)}.chatFeed{display:flex;flex-direction:column;gap:8px;max-height:240px;overflow-y:auto}.chatBubble{background:#f1e6de;border-radius:12px;padding:9px 12px;font-size:13px}.chatTime{font-size:10.5px;color:#a08f80;margin-top:3px}.banner{display:flex;align-items:center;gap:10px;background:#efe3dc;border:1px solid var(--line);border-radius:12px;padding:12px 16px;margin-bottom:14px;font-size:13.5px;color:var(--deep)}.ringWrap{position:relative;width:140px;height:140px}.ringWrap svg{transform:rotate(-90deg)}.ringTrack{fill:none;stroke:#eadfd6;stroke-width:10}.ringFill{fill:none;stroke:var(--rose);stroke-width:10;stroke-linecap:round;transition:stroke-dashoffset .6s ease}.ringCenter{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}.ringVal{font-family:Fraunces,serif;font-weight:600;font-size:18px}.ringLabel{font-size:10.5px;color:#a08f80}.modalOverlay{position:fixed;inset:0;background:rgba(36,50,42,.4);align-items:center;justify-content:center;z-index:40}.modal,.modalOverlay{display:flex;padding:20px}.modal{background:var(--white);border-radius:16px;width:100%;max-width:380px;flex-direction:column;gap:10px}.modalHead{display:flex;justify-content:space-between;align-items:center}.fieldLabel{font-size:12.5px;color:#7a756e;margin-bottom:-4px}