:root{
  --bg:#fff8f8;--card:#fff;--border:#f0d9db;
  --pink:#e8829a;--pink-lt:#fdeef1;--pink-md:#f5b8c4;
  --rose:#d45f7a;--peach:#f7c4cc;
  --text:#3a2a2d;--muted:#b0868e;
  --green:#7ab89a;--danger:#e05c6a;
  --shadow:0 2px 18px rgba(220,130,150,0.10);
  --radius:16px;--rad-sm:10px;
}
*{box-sizing:border-box;margin:0;padding:0;}
button,input,select,textarea{font-family:inherit;}
html{font-size:15px;height:100%;overflow:hidden;overscroll-behavior:none;}
body{background:var(--bg);color:var(--text);font-family:'PingFang TC','Noto Sans TC',-apple-system,BlinkMacSystemFont,'Helvetica Neue',sans-serif;height:100%;overflow:hidden;overscroll-behavior:none;}
::-webkit-scrollbar{width:4px;height:4px;}
::-webkit-scrollbar-thumb{background:var(--peach);border-radius:4px;}

/* ── 密碼頁 ── */
#login-screen{position:fixed;inset:0;background:linear-gradient(135deg,#f7c4cc,#fdeef1);z-index:9999;display:flex;align-items:center;justify-content:center;}
.login-box{background:#fff;border-radius:24px;padding:36px 28px;width:90%;max-width:340px;box-shadow:0 8px 40px rgba(212,95,122,0.18);text-align:center;}
.login-logo{font-size:2.4rem;margin-bottom:8px;}
.login-title{font-family:'PingFang TC','Noto Sans TC',-apple-system,BlinkMacSystemFont,'Helvetica Neue',sans-serif;font-size:1.3rem;color:var(--rose);margin-bottom:6px;}
.login-sub{font-size:0.78rem;color:var(--muted);margin-bottom:24px;}
.login-input{width:100%;border:1.5px solid var(--border);border-radius:var(--rad-sm);padding:10px 14px;font-size:1rem;font-family:inherit;color:var(--text);background:var(--bg);outline:none;text-align:center;letter-spacing:0.1em;margin-bottom:12px;}
.login-input:focus{border-color:var(--pink);box-shadow:0 0 0 3px rgba(232,130,154,0.12);}
.login-btn{width:100%;padding:12px;background:linear-gradient(135deg,var(--pink),var(--rose));color:#fff;border:none;border-radius:var(--rad-sm);font-family:inherit;font-size:0.9rem;font-weight:700;cursor:pointer;}
.login-err{font-size:0.78rem;color:var(--danger);margin-top:8px;display:none;}
.pw-input-wrap{position:relative;margin-bottom:12px;}
.pw-input-wrap .login-input{margin-bottom:0;padding-right:38px;}
.pw-hint-btn{position:absolute;right:10px;top:10px;width:20px;height:20px;border-radius:50%;background:var(--pink-lt);border:1.5px solid var(--pink-md);color:var(--rose);font-size:0.65rem;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:1;padding:0;}
.pw-hint-box{display:none;background:#fff8f5;border:1px solid var(--pink-md);border-radius:8px;padding:8px 12px;font-size:0.74rem;color:var(--muted);text-align:left;line-height:1.7;margin-top:4px;}
.time-sel-wrap{display:flex;align-items:center;gap:2px;}
.auth-login-form{display:flex;flex-direction:column;gap:0;}
.auth-user-panel{margin-bottom:16px;}
.auth-user-name{font-size:0.82rem;color:var(--text);font-weight:700;margin-bottom:10px;line-height:1.5;word-break:break-word;}
.auth-logout-btn{background:#fff;color:var(--rose);border:1.5px solid var(--pink-md);margin:8px 0 12px;}

/* ── Header ── */
header{background:linear-gradient(135deg,#f7c4cc,#f9dde2,#fdeef1);padding:18px 20px 14px;position:sticky;top:0;z-index:300;box-shadow:0 2px 20px rgba(220,130,150,0.15);}
.header-inner{max-width:100%;margin:0 auto;display:flex;align-items:center;justify-content:space-between;padding:0 4px;}
.logo{display:flex;align-items:center;gap:10px;}
.logo-text{font-family:'PingFang TC','Noto Sans TC',-apple-system,BlinkMacSystemFont,'Helvetica Neue',sans-serif;font-size:1.15rem;color:var(--rose);}
.op-wrap{display:flex;align-items:center;gap:7px;}
.op-wrap label{font-size:0.7rem;color:var(--muted);white-space:nowrap;}
.op-sel{background:rgba(255,255,255,0.75);border:1.5px solid var(--pink-md);border-radius:20px;padding:5px 24px 5px 11px;font-size:0.8rem;font-family:inherit;color:var(--text);outline:none;max-width:110px;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='7'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%23b0868e' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center;}

/* ── Tabs ── */
.tab-nav{background:#fff;border-bottom:1.5px solid var(--border);position:sticky;top:var(--header-h,64px);z-index:290;overflow-x:auto;box-shadow:0 1px 8px rgba(220,130,150,0.07);}
.tab-inner{display:flex;width:100%;}
.tab-btn{flex:1;padding:11px 8px 9px;background:none;border:none;border-bottom:2.5px solid transparent;font-family:inherit;font-size:0.74rem;font-weight:600;color:var(--muted);cursor:pointer;transition:all 0.2s;white-space:nowrap;text-align:center;}
.tab-btn.active{color:var(--rose);border-bottom-color:var(--rose);}

/* ── Layout ── */
.page{display:none;}
.page.active{display:block;position:fixed;top:calc(var(--header-h,64px) + var(--tabnav-h,44px));left:0;right:0;bottom:0;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain;}

/* ── Page swipe animations ── */
@keyframes pgSlideInR{from{transform:translateX(48px);opacity:0}to{transform:translateX(0);opacity:1}}
@keyframes pgSlideInL{from{transform:translateX(-48px);opacity:0}to{transform:translateX(0);opacity:1}}
.page.pg-enter-r{animation:pgSlideInR 0.24s cubic-bezier(.25,.46,.45,.94) both}
.page.pg-enter-l{animation:pgSlideInL 0.24s cubic-bezier(.25,.46,.45,.94) both}
@keyframes bannerPop{from{opacity:0;transform:translateX(-50%) scale(0.8)}to{opacity:1;transform:translateX(-50%) scale(1)}}

.container{max-width:100%;padding:20px 16px 0;}
.sec-title{font-size:0.7rem;font-weight:700;letter-spacing:0.1em;text-transform:uppercase;color:var(--muted);margin:20px 0 11px;display:flex;align-items:center;gap:8px;}
.sec-title::after{content:'';flex:1;height:1px;background:var(--border);}
.sec-title:first-child{margin-top:0;}

/* ── Card & Fields ── */
.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);border:1.5px solid var(--border);margin-bottom:12px;overflow:hidden;}
.field-row{display:grid;grid-template-columns:90px 1fr;align-items:center;padding:10px 15px;border-bottom:1px solid var(--border);gap:10px;}
.field-row:last-child{border-bottom:none;}
.field-label{font-size:0.74rem;color:var(--muted);font-weight:500;white-space:nowrap;}
.field-val{font-size:0.86rem;color:var(--text);font-weight:600;text-align:right;}
.field-val.gray{color:var(--muted);font-size:0.8rem;font-weight:400;}

input.f,select.f,textarea.f{width:100%;border:1.5px solid var(--border);border-radius:var(--rad-sm);padding:7px 11px;font-size:0.84rem;font-family:inherit;color:var(--text);background:var(--bg);outline:none;transition:border 0.2s,box-shadow 0.2s;-webkit-appearance:none;}
input.f:focus,select.f:focus,textarea.f:focus{border-color:var(--pink);box-shadow:0 0 0 3px rgba(232,130,154,0.12);background:#fff;}
textarea.f{resize:none;height:66px;line-height:1.5;}
select.f{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='7'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%23b0868e' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;background-size:10px;padding-right:28px;}

.calc-row{display:flex;align-items:center;justify-content:space-between;padding:10px 15px;background:var(--pink-lt);border-bottom:1px solid var(--border);}
.calc-row:last-child{border-bottom:none;}
.calc-label{font-size:0.74rem;color:var(--muted);}
.calc-val{font-size:0.95rem;font-weight:700;color:var(--rose);}

/* ── Buttons ── */
.btn-primary{display:block;width:100%;padding:13px;margin-top:14px;background:linear-gradient(135deg,var(--pink),var(--rose));color:#fff;border:none;border-radius:var(--radius);font-family:inherit;font-size:0.87rem;font-weight:700;letter-spacing:0.05em;cursor:pointer;transition:opacity 0.2s,transform 0.1s;box-shadow:0 4px 14px rgba(212,95,122,0.28);}
.btn-primary:hover{opacity:0.92;}
.btn-primary:active{transform:scale(0.98);}
.btn-secondary{display:block;width:100%;padding:12px;margin-top:8px;background:#fff;color:var(--rose);border:1.5px solid var(--pink-md);border-radius:var(--radius);font-family:inherit;font-size:0.84rem;font-weight:700;cursor:pointer;transition:all 0.2s;}
.btn-secondary:hover{background:var(--pink-lt);}
.btn-add{background:var(--rose);color:#fff;border:none;border-radius:20px;padding:7px 14px;font-size:0.8rem;font-weight:700;cursor:pointer;font-family:inherit;transition:opacity 0.2s;flex-shrink:0;}
.btn-add:hover{opacity:0.88;}
.btn-add:active{opacity:0.75;}
.btn-ghost{background:none;border:1.5px solid var(--border);border-radius:var(--rad-sm);padding:6px 13px;font-size:0.74rem;font-family:inherit;color:var(--muted);cursor:pointer;transition:all 0.15s;}
.btn-ghost:hover{border-color:var(--pink);color:var(--rose);}
.btn-danger{background:none;border:none;color:#dbb0b6;font-size:0.77rem;cursor:pointer;padding:4px 7px;border-radius:6px;transition:all 0.15s;font-family:inherit;}
.btn-danger:hover{color:var(--danger);background:#fdeaea;}
.btn-teal{background:linear-gradient(135deg,#7ab8d4,#4a88b4);color:#fff;border:none;border-radius:var(--rad-sm);padding:10px;font-family:inherit;font-size:0.82rem;font-weight:700;cursor:pointer;width:100%;margin-top:8px;}

/* ── Lists ── */
.list-item{display:flex;align-items:center;justify-content:space-between;padding:11px 15px;border-bottom:1px solid var(--border);}
.list-item:last-child{border-bottom:none;}
.list-name{font-weight:700;font-size:0.88rem;}
.list-meta{font-size:0.71rem;color:var(--muted);margin-top:2px;}
.item-edit-btn{background:var(--pink-lt);border:none;color:var(--pink);font-size:0.72rem;padding:5px 10px;border-radius:8px;cursor:pointer;font-family:inherit;transition:background 0.15s;}
.item-edit-btn:hover{background:var(--peach);}
.item-btn-teal{background:#eef4fb;border:none;color:#4a88b4;font-size:0.72rem;padding:5px 10px;border-radius:8px;cursor:pointer;font-family:inherit;}

/* ── Care steps editor ── */
.step-reorder-item{display:flex;align-items:center;gap:12px;padding:14px 13px;border-bottom:1px solid var(--border);background:#fff;cursor:grab;user-select:none;-webkit-user-select:none;touch-action:none;}
.step-reorder-item:last-child{border-bottom:none;}
.step-reorder-item.drag-over{background:var(--pink-lt);}
.step-reorder-handle{font-size:1.3rem;color:#bbb;flex-shrink:0;padding:4px 6px;}
.step-reorder-title{font-size:0.88rem;font-weight:600;flex:1;color:var(--text);}
.step-item{display:flex;align-items:flex-start;gap:8px;padding:9px 13px;border-bottom:1px solid var(--border);background:#fff;}
.step-item:last-child{border-bottom:none;}
.step-drag{color:#ccc;font-size:1rem;line-height:1.8;cursor:grab;user-select:none;}
.step-order-btns{display:flex;flex-direction:column;gap:3px;padding-top:2px;flex-shrink:0;}
.step-order-btn{background:none;border:1.5px solid var(--border);border-radius:6px;width:28px;height:28px;font-size:0.7rem;color:var(--muted);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all 0.12s;}
.step-order-btn:hover:not(:disabled){background:var(--pink-lt);border-color:var(--pink);color:var(--rose);}
.step-order-btn:disabled{opacity:0.25;cursor:default;}
.step-body{flex:1;}
.step-body input{width:100%;border:1px solid var(--border);border-radius:7px;padding:6px 10px;font-size:0.82rem;font-family:inherit;color:var(--text);background:var(--bg);outline:none;}
.step-body input:focus{border-color:var(--pink);background:#fff;}
.step-tags{display:flex;gap:5px;margin-top:6px;flex-wrap:wrap;}
.step-tag{font-size:0.65rem;padding:2px 9px;border-radius:20px;cursor:pointer;border:1.5px solid var(--border);color:var(--muted);background:#fff;font-family:inherit;transition:all 0.15s;}
.step-tag.am{border-color:#f0a500;background:#fff9e6;color:#9a6a00;}
.step-tag.pm{border-color:#7aaad4;background:#eef4fb;color:#3a6fa0;}
.step-tag.both{border-color:var(--pink);background:var(--pink-lt);color:var(--rose);}
.step-del{background:none;border:none;color:#ccc;font-size:0.9rem;cursor:pointer;padding:3px 4px;transition:color 0.15s;align-self:center;line-height:1;}
.step-del:hover{color:var(--danger);}
.add-step-row{width:100%;padding:10px;border:none;border-top:1px solid var(--border);background:transparent;color:var(--muted);font-size:0.78rem;font-family:inherit;cursor:pointer;transition:all 0.15s;}
.add-step-row:hover{background:var(--pink-lt);color:var(--rose);}
.tpl-btn{background:var(--pink-lt);border:1px solid var(--pink-md);border-radius:20px;padding:4px 10px;font-size:0.7rem;color:var(--rose);cursor:pointer;font-family:inherit;transition:all 0.15s;white-space:nowrap;}
.tpl-btn:hover{background:var(--peach);}
.step-desc{width:100%;border:1px solid var(--border);border-radius:7px;padding:5px 10px;font-size:0.78rem;font-family:inherit;color:var(--text);background:var(--bg);outline:none;resize:none;height:54px;line-height:1.5;margin-top:5px;}
.step-desc:focus{border-color:var(--pink);background:#fff;}

/* ── Pet grid ── */
.pet-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:4px;}
.pet-grid-card{background:var(--card);border:1.5px solid var(--border);border-radius:var(--rad-sm);display:flex;align-items:stretch;overflow:hidden;box-shadow:var(--shadow);transition:border-color 0.15s;}
.pet-grid-card.active{border-color:var(--rose);background:#fff;}
.pet-grid-card:hover{border-color:var(--pink-md);}
.pet-grid-main{flex:1;padding:12px 14px;text-align:left;cursor:pointer;}
.pet-grid-edit-btn{background:none;border:none;border-left:1px solid var(--border);padding:8px 10px;cursor:pointer;color:var(--muted);font-size:0.8rem;transition:all 0.15s;flex-shrink:0;}
.pet-grid-edit-btn:hover{background:var(--pink-lt);color:var(--rose);}
.pet-grid-name{font-weight:700;font-size:0.88rem;color:var(--text);}
.pet-grid-steps{font-size:0.68rem;color:var(--muted);margin-top:2px;}

/* ── Care pet header (full-screen mode) ── */
.care-pet-header{display:flex;align-items:center;gap:10px;padding:10px 0 12px;}
.care-back-btn{background:var(--pink-lt);border:1.5px solid var(--pink-md);border-radius:20px;padding:6px 14px;font-size:0.78rem;color:var(--rose);cursor:pointer;font-family:inherit;font-weight:600;transition:all 0.15s;}
.care-back-btn:hover{background:var(--peach);}
.care-pet-hdr-name{font-weight:700;font-size:0.92rem;flex:1;}

/* ── Step photo upload ── */
.step-photo-btn{font-size:0.68rem;padding:3px 10px;border-radius:20px;cursor:pointer;border:1.5px solid var(--border);color:var(--muted);background:#fff;font-family:inherit;transition:all 0.15s;}
.step-photo-btn:hover{border-color:var(--pink);color:var(--rose);}
.step-photo-del{font-size:0.65rem;padding:3px 8px;border-radius:20px;cursor:pointer;border:1.5px solid #ffd0a0;color:#b06020;background:#fff8f0;font-family:inherit;}
.step-photo-preview{width:100%;border-radius:8px;margin-top:6px;max-height:160px;object-fit:cover;display:block;}
.check-step-photo{width:100%;border-radius:8px;margin-top:7px;max-height:220px;object-fit:cover;display:block;cursor:pointer;}
.care-ro-item{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:12px 14px;margin-bottom:8px;}
.care-ro-title{font-weight:700;font-size:0.88rem;color:var(--text);margin-bottom:3px;}
.care-ro-desc{font-size:0.78rem;color:var(--muted);white-space:pre-wrap;line-height:1.55;margin-top:2px;}
.map-nav-btn{font-size:0.69rem;padding:3px 10px;border-radius:20px;text-decoration:none;display:inline-block;background:#e8f4fd;color:#2a7ae2;border:1px solid #b3d4f5;}
.map-nav-apple{background:#e8f5ee;color:#2a7a4a;border-color:#a3d4b3;}
.disc-type-btn{padding:5px 13px;border-radius:20px;font-size:0.76rem;border:1.5px solid var(--border);background:#fff;color:var(--muted);cursor:pointer;font-family:inherit;transition:all 0.12s;}
.disc-type-btn.active{background:var(--rose);color:#fff;border-color:var(--rose);}

/* ── Care checklist ── */
.care-prog{background:var(--pink-lt);border-radius:var(--rad-sm);padding:10px 14px;margin-bottom:12px;display:flex;align-items:center;gap:10px;}
.care-prog-txt{font-size:0.78rem;color:var(--rose);font-weight:600;white-space:nowrap;}
.care-bar-wrap{flex:1;height:6px;background:var(--peach);border-radius:3px;overflow:hidden;}
.care-bar{height:100%;background:var(--rose);border-radius:3px;transition:width 0.3s;}
.care-num{font-size:0.72rem;color:var(--muted);white-space:nowrap;}
.check-item{display:flex;align-items:flex-start;gap:10px;padding:11px 14px;border-bottom:1px solid var(--border);}
.check-item:last-child{border-bottom:none;}
.check-box{width:21px;height:21px;border:2px solid var(--pink-md);border-radius:6px;flex-shrink:0;cursor:pointer;display:flex;align-items:center;justify-content:center;margin-top:1px;transition:all 0.15s;}
.check-box.checked{background:var(--rose);border-color:var(--rose);}
.check-tick{display:none;color:#fff;font-size:0.75rem;font-weight:700;}
.check-box.checked .check-tick{display:block;}
.check-content{flex:1;}
.check-label{font-size:0.84rem;line-height:1.5;transition:all 0.2s;}
.check-item.done .check-label{text-decoration:line-through;color:var(--muted);}
.time-chip{display:inline-block;font-size:0.63rem;padding:2px 7px;border-radius:20px;margin-top:4px;}
.chip-am{background:#fff9e6;color:#9a6a00;border:1px solid #f0d070;}
.chip-pm{background:#eef4fb;color:#3a6fa0;border:1px solid #aacce8;}
.chip-both{background:var(--pink-lt);color:var(--rose);border:1px solid var(--pink-md);}

/* ── Records ── */
.filter-bar{display:flex;align-items:center;gap:10px;margin-bottom:14px;flex-wrap:wrap;}
.filter-bar label{font-size:0.72rem;color:var(--muted);white-space:nowrap;}
.filter-sel{border:1.5px solid var(--border);border-radius:20px;padding:6px 26px 6px 13px;font-size:0.78rem;font-family:inherit;color:var(--text);background:var(--card);outline:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='7'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%23b0868e' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 9px center;}
.btn-batch{background:none;border:1.5px solid var(--border);border-radius:20px;padding:5px 12px;font-size:0.76rem;font-family:inherit;color:var(--muted);cursor:pointer;margin-left:auto;transition:all 0.15s;}
.btn-batch.active{background:var(--rose);color:#fff;border-color:var(--rose);}
.batch-bar{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:var(--pink-lt);border-bottom:1.5px solid var(--border);font-size:0.77rem;font-weight:600;color:var(--rose);position:fixed;top:0;left:0;right:0;z-index:285;}
.batch-bar button{background:#fff;border:1.5px solid var(--border);border-radius:20px;padding:4px 11px;font-size:0.73rem;font-family:inherit;color:var(--muted);cursor:pointer;transition:all 0.15s;}
.batch-bar button:hover{border-color:var(--rose);color:var(--rose);}
.batch-cb{display:flex;align-items:center;padding-right:10px;cursor:pointer;flex-shrink:0;}
.comm-settle-label{display:inline-flex;align-items:center;gap:5px;font-size:0.73rem;color:var(--muted);cursor:pointer;margin-top:3px;padding:3px 8px;border-radius:20px;border:1.5px solid var(--border);background:#fff;transition:all 0.15s;}
.comm-settle-label.settled{color:var(--green);border-color:var(--green);background:var(--green-lt,#eafaf1);font-weight:600;}
.comm-settle-label input{accent-color:var(--green);cursor:pointer;}
.batch-cb input{width:16px;height:16px;accent-color:var(--rose);cursor:pointer;}
.rec-card.batch-selected{outline:2px solid var(--rose);outline-offset:-2px;}
.op-summary{background:var(--card);border:1.5px solid var(--border);border-radius:var(--rad-sm);margin-bottom:12px;overflow:hidden;}
.op-hdr{padding:8px 13px;background:var(--pink-lt);font-size:0.73rem;font-weight:700;color:var(--rose);letter-spacing:0.05em;}
.op-row{padding:8px 13px;border-bottom:1px solid var(--border);font-size:0.77rem;}
.op-row:last-child{border-bottom:none;}
.op-row-main{display:flex;justify-content:space-between;align-items:flex-start;}
.op-name{font-weight:600;padding-top:2px;}
.op-nums-wrap{display:flex;flex-direction:column;align-items:flex-end;gap:5px;}
.op-nums{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end;font-size:0.7rem;color:var(--muted);}
.op-settle{display:flex;gap:10px;flex-wrap:wrap;font-size:0.7rem;margin-top:5px;padding-top:5px;border-top:1px dashed var(--border);}
.settle-pay{color:var(--danger);font-weight:600;}
.settle-recv{color:var(--green);font-weight:600;}
.hi{color:var(--rose);font-weight:600;}
.month-hdr{display:flex;align-items:center;justify-content:space-between;padding:8px 13px;background:linear-gradient(90deg,var(--pink-lt),var(--bg));border-radius:var(--rad-sm);margin:16px 0 7px;}
.month-hdr:first-child{margin-top:0;}
.month-label{font-size:0.8rem;font-weight:700;color:var(--rose);}
.month-stats{font-size:0.69rem;color:var(--muted);}
.rec-card{background:var(--card);border-radius:var(--rad-sm);border:1.5px solid var(--border);margin-bottom:7px;overflow:hidden;}
.rec-card.rec-unpaid{background:#e05555 !important;border-color:#c0392b;}
.rec-card.rec-unpaid .rec-title,.rec-card.rec-unpaid .rec-meta,.rec-card.rec-unpaid .rec-amount,.rec-card.rec-unpaid .rec-amount small,.rec-card.rec-unpaid .hi,.rec-card.rec-unpaid .unpaid{color:#fff !important;opacity:1;}
.rec-card.rec-unpaid .rec-expand-btn{color:#000 !important;}
.rec-card.rec-unpaid .rec-dr{border-bottom-color:rgba(255,255,255,0.25);}
.rec-card.rec-unpaid .rec-dl{color:rgba(255,255,255,0.75) !important;}
.rec-card.rec-unpaid .rec-dv{color:#fff !important;}
.rec-card.rec-unpaid .btn-ghost{border-color:rgba(255,255,255,0.5);color:#fff;}
.rec-card.rec-unpaid .btn-ghost:hover{border-color:#fff;background:rgba(255,255,255,0.15);}
.rec-card.rec-unpaid .btn-danger{color:rgba(255,255,255,0.65);}
.rec-card.rec-unpaid .btn-danger:hover{color:#fff;background:rgba(255,255,255,0.15);}
.rec-hdr{display:flex;align-items:flex-start;justify-content:space-between;padding:11px 13px 9px;}
.rec-title{font-weight:700;font-size:0.86rem;margin-bottom:2px;}
.rec-meta{font-size:0.67rem;color:var(--muted);}
.rec-amount{font-size:0.96rem;font-weight:700;color:var(--rose);white-space:nowrap;text-align:right;}
.rec-amount small{display:block;font-size:0.6rem;color:var(--muted);font-weight:400;}
.rec-detail{padding:0 13px 11px;display:none;}
.rec-detail.open{display:block;}
.rec-dr{display:flex;justify-content:space-between;align-items:center;padding:5px 0;border-bottom:1px solid var(--border);font-size:0.77rem;}
.rec-dr:last-child{border-bottom:none;}
.rec-dl{color:var(--muted);}
.rec-dv{font-weight:600;}
.rec-dv.paid{color:var(--green);}
.rec-dv.unpaid{color:var(--danger);}
.rec-expand-btn{display:block;width:100%;padding:6px;text-align:center;background:var(--pink-lt);border:none;border-top:1px solid var(--border);font-size:0.69rem;color:var(--muted);cursor:pointer;font-family:inherit;}
.rec-expand-btn:hover{background:var(--peach);color:var(--rose);}

/* ── Misc ── */
.msg-preview{background:#f0f0f0;border-radius:10px;padding:13px 14px;font-size:0.8rem;line-height:1.8;white-space:pre-wrap;word-break:break-all;color:#333;margin-top:8px;border:1px solid #ddd;max-height:220px;overflow-y:auto;}
.modal-bg{position:fixed;inset:0;background:rgba(60,30,35,0.35);backdrop-filter:blur(4px);z-index:500;display:flex;align-items:flex-end;justify-content:center;opacity:0;pointer-events:none;transition:opacity 0.25s;}
.modal-bg.open{opacity:1;pointer-events:all;}
.modal{background:#fff;border-radius:22px 22px 0 0;padding:22px 18px 40px;width:100%;max-width:560px;transform:translateY(60px);transition:transform 0.3s cubic-bezier(0.34,1.56,0.4,1);max-height:88vh;overflow-y:auto;}
.modal-bg.open .modal{transform:translateY(0);}
.modal-title{font-family:'PingFang TC','Noto Sans TC',-apple-system,BlinkMacSystemFont,'Helvetica Neue',sans-serif;font-size:1rem;color:var(--rose);margin-bottom:16px;display:flex;align-items:center;justify-content:space-between;}
.modal-close{background:none;border:none;font-size:1.2rem;color:var(--muted);cursor:pointer;}
.form-row{margin-bottom:10px;}
.form-row label{display:block;font-size:0.71rem;color:var(--muted);font-weight:600;margin-bottom:4px;letter-spacing:0.04em;}
.form-actions{display:flex;gap:9px;margin-top:14px;}
.cq-type-bar{display:flex;border:1.5px solid var(--border);border-radius:20px;overflow:hidden;margin-bottom:14px;}
.cq-tab{flex:1;padding:7px 0;font-size:0.83rem;border:none;background:none;cursor:pointer;font-family:inherit;color:var(--muted);font-weight:500;transition:background 0.15s,color 0.15s;}
.cq-tab.active{background:var(--rose);color:#fff;font-weight:700;}
.cq-result{display:flex;justify-content:space-between;align-items:center;padding:9px 13px;background:var(--pink-lt);border-radius:10px;font-size:0.8rem;margin-top:4px;margin-bottom:6px;}
.cq-cb-row{display:flex;align-items:center;gap:8px;padding:5px 0;margin-bottom:6px;font-size:0.82rem;cursor:pointer;}
.cq-cb-row input[type=checkbox]{accent-color:var(--rose);width:15px;height:15px;flex-shrink:0;cursor:pointer;}
.btn-save-form{flex:1;padding:11px;background:linear-gradient(135deg,var(--pink),var(--rose));color:#fff;border:none;border-radius:var(--rad-sm);font-family:inherit;font-size:0.83rem;font-weight:700;cursor:pointer;}
.btn-cancel-form{padding:11px 15px;background:none;border:1.5px solid var(--border);border-radius:var(--rad-sm);font-family:inherit;font-size:0.83rem;color:var(--muted);cursor:pointer;}
@media(min-width:560px){.modal-bg{align-items:center;}.modal{border-radius:22px;max-height:82vh;}.modal>div:first-child{border-radius:22px 22px 0 0;}}
@media(min-width:700px){.container{padding:20px 24px 0;}.card{max-width:none;}}
.empty{text-align:center;padding:40px 20px;color:var(--muted);font-size:0.83rem;}
.empty .icon{font-size:2.2rem;margin-bottom:10px;}
/* ── Edit record modal ── */
.er-info{font-size:0.79rem;color:var(--muted);padding:6px 0 12px;border-bottom:1px solid var(--border);margin-bottom:14px;line-height:1.6;}
.er-reason-row{background:#fff8f0;border:1.5px solid #ffd0a0;border-radius:8px;padding:10px;margin-top:4px;}
.er-reason-row label{color:#b06020;}
.required-hint{font-weight:400;color:var(--muted);font-size:0.7rem;}

/* ── Edit record log（紀錄展開區內的編輯歷史） ── */
.rec-edit-log{background:#f9f5ff;border:1px solid #e0d5f5;border-radius:8px;padding:7px 10px;margin-top:6px;font-size:0.73rem;}
.rec-edit-label{font-size:0.65rem;font-weight:700;color:var(--rose);letter-spacing:0.05em;margin-bottom:3px;}
.rec-edit-entry{padding:4px 0;border-bottom:1px solid #e8e0f5;}
.rec-edit-entry:last-child{border-bottom:none;}
.rec-edit-info{color:var(--muted);line-height:1.6;}
.rec-edit-change{color:var(--text);font-size:0.7rem;margin:1px 0;}
.rec-edit-reason{color:var(--text);font-style:italic;margin-top:2px;}

/* ── Service type badge (備忘 checklist) ── */
.svc-badge{display:inline-block;font-size:0.68rem;padding:3px 10px;border-radius:20px;font-weight:600;}
.svc-badge-stay{background:#fdf0e8;color:#b45520;border:1px solid #e0a070;}
.svc-badge-visit{background:#e8f5fd;color:#1e7ab4;border:1px solid #70b0e0;}
.svc-badge-both{background:var(--pink-lt);color:var(--rose);border:1px solid var(--pink-md);}

/* ── Step service type tags ── */
.step-tag.svc-visit{border-color:#3ea9e0;background:#e8f5fd;color:#1e7ab4;}
.step-tag.svc-stay{border-color:#e07a3e;background:#fdf0e8;color:#b45520;}
.step-tag.svc-all{border-color:var(--green);background:#e8f5ee;color:#4a8a68;}

/* ── Care checklist section header (到府／住宿／通用) ── */
.care-section-hdr{font-size:0.67rem;font-weight:700;letter-spacing:0.08em;text-transform:uppercase;color:var(--muted);padding:7px 14px 5px;background:var(--pink-lt);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:6px;}
.care-section-hdr+.care-section-hdr,.check-item+.care-section-hdr{border-top:2px solid var(--border);}

/* ── Checklist inline edit ── */
.check-edit-btn{background:none;border:none;color:#ccc;font-size:0.78rem;cursor:pointer;padding:2px 5px;border-radius:6px;transition:all 0.15s;flex-shrink:0;align-self:center;line-height:1;}
.check-edit-btn:hover{color:var(--rose);background:var(--pink-lt);}
.check-item.editing{background:var(--pink-lt);padding:12px 14px;align-items:flex-start;}
.check-edit-form{flex:1;}
.check-edit-form input{width:100%;border:1px solid var(--border);border-radius:7px;padding:6px 10px;font-size:0.82rem;font-family:inherit;color:var(--text);background:#fff;outline:none;margin-bottom:6px;}
.check-edit-form input:focus{border-color:var(--pink);}
.check-edit-form textarea{width:100%;border:1px solid var(--border);border-radius:7px;padding:5px 10px;font-size:0.77rem;font-family:inherit;color:var(--text);background:#fff;outline:none;resize:none;height:52px;line-height:1.5;margin-bottom:6px;}
.check-edit-form textarea:focus{border-color:var(--pink);}
.check-edit-actions{display:flex;gap:6px;}

.toast{position:fixed;bottom:26px;left:50%;transform:translateX(-50%) translateY(80px);background:var(--rose);color:#fff;padding:10px 20px;border-radius:40px;font-size:0.81rem;font-weight:600;z-index:999;pointer-events:none;transition:transform 0.3s cubic-bezier(0.34,1.56,0.64,1);white-space:nowrap;box-shadow:0 4px 20px rgba(212,95,122,0.35);}
.toast.show{transform:translateX(-50%) translateY(0);}
/* ── Records Calendar ── */
.cal-card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);border:1.5px solid var(--border);margin-bottom:12px;padding:14px 12px 8px;overflow:hidden;}
@keyframes calOutL{from{transform:translateX(0)}to{transform:translateX(-110%)}}
@keyframes calOutR{from{transform:translateX(0)}to{transform:translateX(110%)}}
@keyframes calInL {from{transform:translateX(-110%)}to{transform:translateX(0)}}
@keyframes calInR {from{transform:translateX(110%)}to{transform:translateX(0)}}
.cal-out-l{animation:calOutL 0.22s ease forwards;}
.cal-out-r{animation:calOutR 0.22s ease forwards;}
.cal-in-l {animation:calInL  0.22s ease forwards;}
.cal-in-r {animation:calInR  0.22s ease forwards;}
.cal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px;}
.cal-title{font-family:'Noto Serif TC',serif;font-size:1rem;font-weight:600;color:var(--text);letter-spacing:0.02em;}
.cal-nav-btn{background:none;border:none;font-size:1.3rem;color:var(--muted);cursor:pointer;padding:2px 10px;border-radius:8px;transition:all 0.15s;line-height:1;font-family:inherit;}
.cal-nav-btn:hover{background:var(--pink-lt);color:var(--rose);}
.cal-ext-btn{background:none;border:none;font-size:1rem;cursor:pointer;padding:2px 6px;border-radius:8px;line-height:1;transition:background 0.15s;}
.cal-ext-btn:hover{background:var(--pink-lt);}
.cal-sitter-filter{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:8px;}
.cal-sitter-pill{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:20px;font-size:0.68rem;cursor:pointer;border:1.5px solid transparent;transition:all 0.15s;font-family:inherit;background:var(--pink-lt);color:var(--muted);font-weight:500;}
.cal-sitter-pill.all-pill{background:var(--pink-lt);color:var(--muted);}
.cal-sitter-pill.active{border-color:var(--rose);box-shadow:0 0 0 2px rgba(212,95,122,0.18);}
.cal-sitter-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0;border:1px solid rgba(0,0,0,0.1);}
.cal-weekdays{display:grid;grid-template-columns:repeat(7,1fr);margin-bottom:1px;}
.cal-weekdays span{text-align:center;font-size:0.63rem;color:var(--muted);font-weight:700;padding:2px 0;letter-spacing:0.04em;}
.cal-week{margin-bottom:0;}
.cal-week-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:1px 0;margin-bottom:3px;}
.cal-day-row{display:grid;grid-template-columns:repeat(7,1fr);}
.cal-day-cell{display:flex;align-items:center;justify-content:center;height:30px;cursor:pointer;border-radius:6px;transition:background 0.1s;}
.cal-day-cell:hover:not(.empty){background:var(--pink-lt);}
.cal-day-cell.empty{cursor:default;}
.cal-day-num{font-size:0.78rem;color:var(--text);width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:50%;font-weight:400;}
.cal-day-cell.today .cal-day-num{background:var(--rose);color:#fff;font-weight:700;}
.cal-event-bar{height:17px;line-height:17px;padding:0 3px;border-radius:4px;overflow:hidden;cursor:pointer;font-weight:600;outline:2px solid transparent;outline-offset:-2px;transition:opacity 0.12s,filter 0.12s,outline-color 0.12s;display:flex;align-items:center;}
.cal-event-bar.cal-merged-slots{height:auto;flex-direction:column;align-items:stretch;justify-content:space-around;padding:0;line-height:1;}
.cal-merged-row{display:flex;align-items:center;flex:1;overflow:hidden;padding:0 3px;min-height:0;}
.cal-event-bar:hover,.cal-event-bar.evt-hover{opacity:0.88;filter:brightness(1.12);outline-color:rgba(255,255,255,0.75);}
.cal-event-bar.no-left{border-top-left-radius:0;border-bottom-left-radius:0;padding-left:1px;}
.cal-event-bar.no-right{border-top-right-radius:0;border-bottom-right-radius:0;padding-right:1px;}
.cel-fill{flex:1;overflow:hidden;font-size:0.48rem;font-weight:400;opacity:0.55;white-space:nowrap;min-width:0;line-height:1;}
.cel-name{flex-shrink:0;white-space:nowrap;font-size:0.6rem;font-weight:600;padding:0 1px;}
.cal-selected-hint{font-size:0.7rem;color:var(--rose);text-align:center;padding:5px 0 1px;font-weight:600;cursor:pointer;}
.cal-legend{display:flex;flex-wrap:wrap;gap:5px 12px;padding:8px 2px 2px;border-top:1px solid var(--border);margin-top:6px;}
.cal-legend-item{display:flex;align-items:center;gap:5px;font-size:0.67rem;color:var(--muted);}
.cal-legend-dot{width:22px;height:9px;border-radius:3px;flex-shrink:0;}
.spt-btn{padding:4px 10px;border:1.5px solid var(--border);border-radius:20px;font-size:0.74rem;font-family:inherit;cursor:pointer;background:#fff;color:var(--muted);transition:all 0.15s;}
.spt-btn.active{background:var(--rose);color:#fff;border-color:var(--rose);}

.login-loading{font-size:0.8rem;color:var(--muted);text-align:center;padding:16px 0;}
#sitterModal{z-index:10000;}

/* ── Share view (public care manual) ── */
.share-step{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);border:1.5px solid var(--border);padding:14px 16px;margin-bottom:12px;}
.share-step-title{font-weight:700;font-size:1rem;color:var(--text);margin-bottom:4px;}
.share-step-desc{font-size:0.82rem;color:var(--muted);white-space:pre-wrap;line-height:1.7;margin-top:4px;}
.share-chip{display:inline-block;font-size:0.7rem;padding:2px 9px;border-radius:20px;background:#fdf0f5;color:var(--rose);border:1px solid var(--pink-md);margin-top:6px;}
.share-photos{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px;}
.share-photo{width:80px;height:80px;object-fit:cover;border-radius:8px;cursor:pointer;}
