/* Willow Village — "Soft Sage": calm, earthy, gen-z-timeless.
   Sage accent, oat-milk backgrounds, forest ink; Fraunces + Inter. */
:root{
  --s0:#EFEDE3; --s1:#E7E4D7; --s2:#FBFAF4; --tp:#2E322B; --ts:#5B6153; --tm:#8C9082;
  --b:rgba(46,50,43,0.11); --bs:rgba(46,50,43,0.22);
  --ba:#E4E8DA; --ta:#68785A; --bda:#CBD3BC;       /* accent = sage green */
  --bsu:#E4EBD6; --tsu:#4A6B2E; --fsu:#7C9A46;     /* green — done/good */
  --bw:#F6EBCF; --tw:#8a6a11;                       /* amber — pending/okay */
  --bd:#F5E2DA; --tdr:#a8492c; --bdr:#EAC6BA;      /* red — alert/hard */
  --gold:#A98B3D;
  /* aliases used across templates */
  --bg:#EFEDE3; --card:#FBFAF4; --ink:#2E322B; --muted:#8C9082;
  --accent:#68785A; --accent-soft:#E4E8DA; --line:rgba(46,50,43,0.11); --field:#ECEADF; --btn:#68785A;
}

html[data-theme="dark"]{
  --s0:#111310; --s1:#1c1e1a; --s2:#171814; --tp:#eff0ec; --ts:#c3c6bd; --tm:#989c8f;
  --b:rgba(255,255,255,0.11); --bs:rgba(255,255,255,0.22);
  --ba:#272a22; --ta:#a9b892; --bda:#39402f;       /* accent = light sage */
  --bsu:#222e18; --tsu:#a6d178; --fsu:#7cae35;
  --bw:#38290f; --tw:#e6b45f;
  --bd:#3a201c; --tdr:#ec9187; --bdr:#5c342e;
  --gold:#c2a24a;
  --bg:#111310; --card:#171814; --ink:#eff0ec; --muted:#989c8f;
  --accent:#a9b892; --accent-soft:#24271f; --line:rgba(255,255,255,0.11); --field:#20221c; --btn:#5f6f4e;
}
html[data-theme="dark"] .card.dark{background:#1f1f22;border-color:#33333a;}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
body{font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:var(--tp);min-height:100vh;line-height:1.55;-webkit-font-smoothing:antialiased;letter-spacing:-0.01em;
  background:radial-gradient(125% 85% at 50% -12%, rgba(255,255,255,.55), rgba(255,255,255,0) 58%), var(--s0);background-attachment:fixed;}
html[data-theme="dark"] body{background:radial-gradient(125% 85% at 50% -12%, rgba(169,184,146,.06), rgba(0,0,0,0) 55%), var(--s0);background-attachment:fixed;}
/* subtle paper grain over the whole app for warmth/texture */
body::after{content:"";position:fixed;inset:0;z-index:80;pointer-events:none;opacity:.05;mix-blend-mode:multiply;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='150' height='150'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");}
html[data-theme="dark"] body::after{opacity:.07;mix-blend-mode:screen;}
.wrap{max-width:440px;margin:0 auto;padding:24px 16px 92px;min-height:100vh;}

/* title bar + section headers */
.tbar{padding:6px 4px 14px;}
.tbar h1{font-size:24px;font-weight:600;letter-spacing:-.2px;}
.tbar p{font-size:13px;color:var(--tm);margin-top:2px;}
.sh{font-size:13px;font-weight:600;color:var(--tm);margin:18px 2px 8px;letter-spacing:.01em;}
.sh::before{content:"";display:inline-block;width:6px;height:6px;border-radius:0 60% 60% 60%;background:var(--accent);opacity:.6;margin-right:8px;transform:rotate(45deg);vertical-align:middle;}
/* handwriting for the things people write by hand — journal notes & to-dos.
   Patrick Hand = printed (not cursive) handwriting: soft but very legible. */
.hand,.jtext,.tn,.ltask-t{font-family:'Patrick Hand','Inter',cursive;font-weight:400;letter-spacing:.005em;}
.jtext{font-size:24px !important;line-height:1.5;}
.tn{font-size:21px;line-height:1.3;}
.ltask-t{font-size:28px;line-height:1.35;}
textarea.hand,input.hand{font-family:'Patrick Hand','Inter',cursive;font-weight:400;font-size:24px;line-height:1.5;}
h1{font-size:22px;font-weight:600;margin-bottom:6px;}
h2{font-size:16px;font-weight:600;margin-bottom:12px;}
p.sub{color:var(--tm);margin-bottom:18px;}

/* brand (auth pages) */
.brand{display:flex;align-items:center;gap:12px;margin-bottom:22px;}
.brand .mk{width:46px;height:46px;border-radius:13px;background:var(--gold);display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.brand b{font-size:23px;font-weight:600;letter-spacing:-.2px;}

/* cards */
.card{background:var(--s2);border:.5px solid var(--b);border-radius:20px;padding:17px 18px;margin-bottom:13px;box-shadow:0 1px 2px rgba(46,50,43,.05), 0 10px 24px -14px rgba(46,50,43,.14);}
.card.dark{background:#2F3529;border-color:#434c39;color:#fff;}
.ct{font-size:12px;font-weight:600;color:var(--tm);text-transform:uppercase;letter-spacing:.5px;margin-bottom:11px;}

/* metrics */
.mrow{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.met{background:var(--s1);border-radius:11px;padding:13px;}
.ml{font-size:11px;color:var(--tm);margin-bottom:4px;}
.mv{font-size:22px;font-weight:600;color:var(--tp);}
.mv.a{color:var(--ta);}.mv.w{color:var(--tw);}

/* tasks */
.tsk{display:flex;align-items:center;gap:11px;padding:11px 0;border-bottom:.5px solid var(--b);}
.tsk:last-child{border-bottom:none;}
.tc{width:22px;height:22px;border-radius:50%;border:1.5px solid var(--bs);display:flex;align-items:center;justify-content:center;flex-shrink:0;background:none;cursor:pointer;padding:0;margin:0;}
.tc.done{background:var(--fsu);border-color:var(--fsu);color:#fff;}
.tc i{font-size:12px;}
.tc.on{background:var(--ta);border-color:var(--ta);position:relative;}
.tc.on::after{content:"✓";color:#fff;font-size:13px;line-height:1;}
.tsk-done .tn{text-decoration:line-through;color:var(--tm);}
.tt{flex:1;}.tn{font-size:14px;color:var(--tp);}
.tn.done{text-decoration:line-through;color:var(--tm);}
.tsb{font-size:12px;color:var(--tm);margin-top:1px;}
.tbdg{font-size:11px;padding:2px 8px;border-radius:6px;font-weight:600;flex-shrink:0;}
.bm{background:var(--ba);color:var(--ta);}.bap{background:var(--bw);color:var(--tw);}.bfin{background:var(--bsu);color:var(--tsu);}

/* people rows + avatars */
.prow{display:flex;align-items:center;gap:11px;padding:11px 0;border-bottom:.5px solid var(--b);text-decoration:none;color:inherit;}
.prow:last-child{border-bottom:none;}
.av{width:37px;height:37px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600;flex-shrink:0;background:var(--ba);color:var(--ta);}
.avlg{width:44px;height:44px;font-size:15px;}
.avpu{background:#EEEDFE;color:#3C3489;}.avte{background:#E1F5EE;color:#085041;}
.avco{background:#FAECE7;color:#712B13;}.avbl{background:#E6F1FB;color:#0C447C;}
.avpk{background:#FBEAF0;color:#72243E;}.avgr{background:#EAF3DE;color:#27500A;}
.pi{flex:1;min-width:0;}.pn{font-size:14px;font-weight:600;color:var(--tp);}
.ps{font-size:12px;color:var(--tm);margin-top:1px;}
.pst{font-size:11px;padding:3px 8px;border-radius:6px;flex-shrink:0;}
.sok{background:var(--bsu);color:var(--tsu);}.swn{background:var(--bw);color:var(--tw);}

/* medications */
.mi{padding:11px 0;border-bottom:.5px solid var(--b);}
.mi:last-child{border-bottom:none;}
.mh{display:flex;align-items:center;justify-content:space-between;gap:8px;}
.mn{font-size:14px;font-weight:600;color:var(--tp);}
.mtk{font-size:11px;padding:3px 9px;border-radius:6px;background:var(--bsu);color:var(--tsu);display:inline-block;}
.mpd{font-size:11px;padding:3px 9px;border-radius:6px;background:var(--bw);color:var(--tw);border:none;cursor:pointer;font-family:inherit;width:auto;margin:0;display:inline-block;}
.ms{font-size:12px;color:var(--tm);margin-top:3px;}
.doses{display:flex;gap:6px;flex-wrap:wrap;margin-top:7px;}

/* appointments */
.appt{padding:11px 0;border-bottom:.5px solid var(--b);display:flex;gap:10px;}
.appt:last-child{border-bottom:none;}
.appt .dot{width:10px;height:10px;border-radius:50%;margin-top:5px;flex-shrink:0;background:var(--ta);}
.appt:nth-of-type(3n+2) .dot{background:#378ADD;}
.appt:nth-of-type(3n) .dot{background:#D4537E;}
.appt .an{font-size:14px;}
.appt .at{font-size:12px;color:var(--tm);margin-top:1px;}

/* providers / team (prv cards) */
.prv{padding:12px 0;border-bottom:.5px solid var(--b);}
.prv:last-child{border-bottom:none;}
.prvh{display:flex;align-items:center;gap:10px;}
.prvi{flex:1;min-width:0;}.prvn{font-size:14px;font-weight:600;color:var(--tp);}
.prvt{font-size:12px;color:var(--tm);margin-top:1px;}
.prvd{margin-top:8px;display:flex;gap:8px;flex-wrap:wrap;align-items:center;}
.ptag{font-size:11px;padding:2px 8px;border-radius:6px;background:var(--s1);color:var(--ts);border:.5px solid var(--b);}
.ptag.paid{background:var(--bsu);color:var(--tsu);}.ptag.due{background:var(--bw);color:var(--tw);}

/* pay rows */
.fi{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:11px 0;border-bottom:.5px solid var(--b);}
.fi:last-child{border-bottom:none;}
.fn{font-size:14px;color:var(--tp);font-weight:500;}.fsb{font-size:12px;color:var(--tm);margin-top:1px;}
.pay-btn{font-size:12px;font-weight:600;padding:6px 15px;border-radius:8px;background:var(--ta);color:#fff;cursor:pointer;border:none;flex-shrink:0;font-family:inherit;width:auto;margin:0;}
/* community calendar: category filter + compact single-line rows in a scroll box */
.catfilter{display:flex;flex-wrap:wrap;gap:0;margin-bottom:6px;}
.catfilter .chip{padding:7px 12px;font-size:13px;margin:0 6px 8px 0;}
.commlist{max-height:58vh;overflow-y:auto;-webkit-overflow-scrolling:touch;margin:0 -4px;padding:0 4px;}
.commrow{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:.5px solid var(--b);}
.commwhen{flex-shrink:0;display:flex;flex-direction:column;line-height:1.15;font-size:11px;color:var(--tm);min-width:52px;}
.commwhen b{font-size:12.5px;color:var(--tp);font-weight:700;}
.commtitle{flex:1;font-size:14px;color:var(--tp);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.commadd{padding:6px 12px;}
/* reimbursements */
.rmb{padding:12px 0;border-bottom:.5px solid var(--b);}
.rmb:last-child{border-bottom:none;}
.rmb-top{display:flex;align-items:center;gap:12px;}
.rmb-name{font-weight:700;font-size:15px;color:var(--tp);}
.rmb-amt{font-weight:800;font-size:19px;color:var(--tp);font-family:'Fraunces',serif;flex-shrink:0;}
.rmb-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:10px 0 0 54px;}
/* subscription toggles */
.sub-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 0;border-bottom:.5px solid var(--b);margin:0;cursor:pointer;}
.sub-row:last-of-type{border-bottom:none;}
.sub-txt{display:flex;flex-direction:column;}
.sub-l{font-size:15px;color:var(--tp);font-weight:600;}
.sub-d{font-size:12.5px;color:var(--tm);margin-top:1px;}
.sub-row input{width:20px;height:20px;flex-shrink:0;accent-color:var(--accent);}
/* calendar "+ Add" dropdown (Google-Calendar style) */
.addmenu{margin-bottom:14px;}
.addmenu>summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;background:var(--accent);color:#fff;border-radius:14px;padding:14px;font-size:16px;font-weight:700;box-shadow:0 2px 8px rgba(0,0,0,.10);}
.addmenu>summary::-webkit-details-marker{display:none;}
.addmenu>summary i{font-size:20px;}
.addmenu[open]>summary{border-radius:14px 14px 0 0;}
.addmenu-list{background:var(--s2);border:.5px solid var(--b);border-top:none;border-radius:0 0 14px 14px;padding:6px 14px 10px;}
.addmenu-list>.add{border-bottom:.5px solid var(--b);}
.addmenu-list>.add:last-child{border-bottom:none;}
/* chat */
/* multi dose-time picker (native scrolling clock) */
.timepick{margin-bottom:6px;}
.tp-row{display:flex;align-items:center;gap:8px;margin-bottom:8px;}
.tp-row input[type=time]{flex:1;font-size:16px;padding:10px 12px;border-radius:10px;border:1px solid var(--b);background:var(--field);color:var(--ink);}
.tp-x{width:38px;height:38px;flex-shrink:0;border:none;border-radius:10px;background:var(--field);color:var(--tm);font-size:16px;cursor:pointer;}
.tp-add{display:inline-flex;align-items:center;gap:5px;}
.notif-banner{display:flex;align-items:center;gap:11px;text-decoration:none;color:var(--tp);background:var(--accent-soft);border-color:transparent;font-size:14px;}
.notif-banner>i:first-child{font-size:22px;color:var(--accent);flex-shrink:0;}
.newchat-opt{display:flex;align-items:center;gap:12px;padding:12px 8px;text-decoration:none;color:var(--ink);border-bottom:.5px solid var(--b);}
.newchat-opt:last-child{border-bottom:none;}
.newchat-ic{width:42px;height:42px;border-radius:50%;background:var(--accent-soft);color:var(--accent);display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.newchat-ic i{font-size:21px;}
.newchat-t{font-weight:700;font-size:15.5px;}
.newchat-s{font-size:12.5px;color:var(--tm);margin-top:1px;}
.chatnew{position:relative;}
.chatnew>summary{list-style:none;cursor:pointer;width:34px;height:34px;border-radius:50%;background:var(--accent-soft);color:var(--accent);display:flex;align-items:center;justify-content:center;}
.chatnew>summary::-webkit-details-marker{display:none;}
.chatnew>summary i{font-size:20px;}
.chatnew-menu{position:absolute;right:0;top:40px;z-index:40;background:var(--s1);border:.5px solid var(--b);border-radius:14px;box-shadow:0 10px 30px rgba(0,0,0,.16);padding:8px;min-width:190px;display:flex;flex-direction:column;}
.chatnew-h{font-size:12px;color:var(--tm);font-weight:700;padding:4px 10px 6px;}
.chatnew-menu a,.chatnew-menu button{display:flex;align-items:center;gap:9px;padding:11px 10px;border-radius:9px;font-size:15px;color:var(--ink);text-decoration:none;cursor:pointer;}
.chatnew-menu a:active,.chatnew-menu button:active{background:var(--accent-soft);}
.chatrow{display:flex;align-items:center;gap:13px;padding:12px 0;border-bottom:.5px solid var(--b);text-decoration:none;color:inherit;}
.chatrow:last-child{border-bottom:none;}
.chatav{width:48px;height:48px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:17px;}
.chatav.village{background:#7FA9E8;}.chatav.village i{font-size:24px;}
.chatav i{font-size:22px;}
.chatrow-b{flex:1;min-width:0;}
.chatrow-n{font-weight:700;font-size:16px;color:var(--tp);}
.chatrow-p{font-size:13px;color:var(--tm);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:1px;}
.chatrow-t{font-size:12.5px;color:var(--tm);flex-shrink:0;align-self:flex-start;margin-top:3px;}
/* thread */
.chatmsgs{display:flex;flex-direction:column;gap:8px;padding:8px 2px 90px;max-height:none;}
.msg{max-width:80%;padding:9px 13px;border-radius:16px;font-size:15px;line-height:1.4;}
.msg-who{font-size:12px;font-weight:700;color:var(--accent);margin-bottom:2px;}
.msg-t{font-size:10.5px;opacity:.6;margin-top:3px;}
.msg.mine{align-self:flex-end;background:var(--accent);color:#fff;border-bottom-right-radius:5px;}
.msg.theirs{align-self:flex-start;background:var(--s1);color:var(--tp);border:.5px solid var(--b);border-bottom-left-radius:5px;}
.chatcompose{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:100%;max-width:440px;display:flex;gap:8px;align-items:flex-end;padding:10px 14px calc(10px + env(safe-area-inset-bottom));background:var(--s0);border-top:.5px solid var(--b);z-index:45;}
.chatcompose textarea{flex:1;font-family:inherit;font-size:16px;padding:10px 14px;border-radius:20px;border:1px solid var(--b);background:var(--field);color:var(--ink);resize:none;line-height:1.35;}
.chatcompose button{width:44px;height:44px;flex-shrink:0;border-radius:50%;border:none;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;}
.chatcompose button i{font-size:20px;}
@media (min-width:600px){.chatcompose{max-width:404px;border-radius:0;}}
/* suggestion board */
.sug{padding:12px 0;border-bottom:.5px solid var(--b);}
.sug:last-child{border-bottom:none;}
.sug-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px;}
.sug-badge{color:#fff;font-size:11px;font-weight:700;padding:3px 10px;border-radius:999px;}
.sug-body{font-size:14.5px;line-height:1.45;color:var(--tp);}
.sug-set{margin:8px 0 0;display:flex;align-items:center;gap:8px;}
.sug-set select{width:auto;padding:5px 9px;font-size:13px;}
.sug-love{display:inline-flex;align-items:center;gap:5px;background:var(--bd);border:1px solid var(--bd);color:var(--tp);
  font-size:13px;font-weight:700;padding:5px 12px;border-radius:999px;cursor:pointer;line-height:1;width:auto;}
.sug-love i{font-size:15px;}
.sug-love.on{background:#fbe6ec;border-color:#f3c2d1;color:#c23b63;}
.numpick{display:flex;gap:10px;margin-top:8px;}
.numpill{position:relative;flex:1;max-width:76px;}
.numpill input{position:absolute;opacity:0;pointer-events:none;}
.numpill span{display:flex;align-items:center;justify-content:center;height:52px;border:1.5px solid var(--bd);
  border-radius:14px;font-size:20px;font-weight:700;color:var(--tp);cursor:pointer;}
.numpill input:checked+span{background:var(--accent);border-color:var(--accent);color:#fff;}
.ot{padding:13px 0;border-top:1px solid var(--bd);}
.ot:first-of-type{border-top:0;}
.faq-card{padding-top:4px;padding-bottom:4px;}
.faq-item{border-top:1px solid var(--bd);}
.faq-item:first-child{border-top:0;}
.faq-item>summary{list-style:none;cursor:pointer;padding:13px 0;font-size:15.5px;font-weight:600;color:var(--ink);
  display:flex;justify-content:space-between;align-items:center;gap:10px;}
.faq-item>summary::-webkit-details-marker{display:none;}
.faq-item>summary::after{content:"+";font-size:20px;font-weight:400;color:var(--accent);flex-shrink:0;}
.faq-item[open]>summary::after{content:"–";}
.faq-a{padding:0 0 14px;font-size:14.5px;line-height:1.55;color:var(--tp);}
.pay-btn.sub{background:var(--bsu);color:var(--tsu);}

/* document / settings rows */
.row-r{display:flex;align-items:center;justify-content:space-between;padding:12px 0;border-bottom:.5px solid var(--b);cursor:pointer;text-decoration:none;color:inherit;}
.row-r:last-child{border-bottom:none;}
.row-ri{display:flex;align-items:center;gap:12px;}
.row-ric{width:37px;height:37px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0;background:var(--ba);color:var(--ta);}
.row-rn{font-size:14px;font-weight:600;color:var(--tp);}
.row-rs{font-size:12px;color:var(--tm);margin-top:1px;}

/* alert */
.gap-alert{background:var(--bd);border:.5px solid var(--bdr);border-radius:11px;padding:12px 14px;display:flex;gap:10px;align-items:flex-start;}
.gap-alert i{color:var(--tdr);font-size:18px;margin-top:1px;flex-shrink:0;}
.gap-txt{font-size:13px;color:var(--tdr);line-height:1.5;}

/* journal */
.jentry{padding:12px 0;border-bottom:.5px solid var(--b);}
.jentry:last-child{border-bottom:none;}
.jmeta{display:flex;align-items:center;justify-content:space-between;margin-bottom:5px;}
.jdate{font-size:12px;color:var(--tm);}
.jmood{font-size:11px;padding:2px 8px;border-radius:6px;}
.jmood.good{background:var(--bsu);color:var(--tsu);}
.jmood.okay{background:var(--bw);color:var(--tw);}
.jmood.hard{background:var(--bd);color:var(--tdr);}
.jperson{font-size:12px;font-weight:600;color:var(--ta);margin-bottom:4px;}
.jtext{font-size:14px;color:var(--tp);line-height:1.5;}
.jsym{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px;}
.jsymtag{font-size:11px;padding:2px 8px;border-radius:6px;background:var(--s1);color:var(--ts);border:.5px solid var(--b);}

/* forms */
label{display:block;font-size:13px;color:var(--tm);margin:12px 0 4px;}
input[type=text],input[type=email],input[type=password],input[type=time],input[type=date],input[type=datetime-local],select,textarea{
  width:100%;padding:12px 14px;border:.5px solid var(--bs);border-radius:10px;font-size:15px;font-family:inherit;background:var(--field);outline:none;color:var(--tp);}
select{appearance:none;}
button,.btn{display:block;width:100%;padding:13px;margin-top:16px;background:var(--btn);color:#fff;border:none;border-radius:11px;font-size:15px;font-weight:600;cursor:pointer;text-align:center;text-decoration:none;font-family:inherit;}
.btn.ghost{background:transparent;color:var(--ta);border:.5px solid var(--ta);}
.addrow{display:flex;align-items:center;gap:8px;padding:11px 12px;background:var(--field);border:.5px dashed var(--bs);border-radius:10px;color:var(--tm);font-size:14px;cursor:pointer;margin-top:10px;text-decoration:none;}
details.add>summary{list-style:none;cursor:pointer;}
details.add>summary::-webkit-details-marker{display:none;}
details.add[open]>summary .addrow{border-style:solid;color:var(--ta);}

/* questionnaire chips + wizard */
.chip{display:inline-block;padding:9px 15px;border-radius:20px;font-size:14px;font-weight:500;border:.5px solid var(--bs);background:var(--field);color:var(--ts);cursor:pointer;margin:0 6px 8px 0;}
.chip.sel{background:var(--ta);color:#fff;border-color:var(--ta);}
.wizbar{height:5px;background:var(--s1);border-radius:3px;margin-bottom:18px;overflow:hidden;}
.wizfill{height:100%;background:var(--ta);border-radius:3px;transition:width .3s;}
.wizstep{display:none;}
.wizstep.on{display:block;}

/* misc */
a{color:var(--ta);}
.muted{color:var(--tm);font-size:14px;}
.help{font-size:12px;color:var(--tm);margin-top:4px;}
.errors{background:var(--bd);color:var(--tdr);border-radius:10px;padding:10px 12px;font-size:13px;margin-bottom:14px;line-height:1.5;}
.item{padding:12px 0;border-bottom:.5px solid var(--b);}
.item:last-child{border-bottom:none;}
.badge{font-size:11px;padding:3px 8px;border-radius:6px;background:var(--ba);color:var(--ta);margin-left:6px;}
.badge.gold{background:var(--bw);color:var(--tw);}
.pill{display:inline-flex;align-items:center;gap:5px;padding:7px 12px;border-radius:20px;border:.5px solid var(--ta);background:transparent;color:var(--ta);font-size:13px;font-weight:600;cursor:pointer;text-decoration:none;font-family:inherit;width:auto;margin:0;}
.pill:active{background:var(--ba);}
.topbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;}
.topbar .brand{margin:0;}
.linkout{width:auto;margin:0;padding:8px 14px;background:transparent;color:var(--tm);border:.5px solid var(--line);border-radius:8px;font-size:13px;}

/* bottom tab bar */
.bnav{position:fixed;bottom:0;left:50%;transform:translateX(-50%) translateZ(0);width:100%;max-width:440px;height:60px;
  background:var(--s2);border-top:.5px solid var(--b);display:flex;align-items:center;justify-content:space-around;
  padding:0 4px;padding-bottom:env(safe-area-inset-bottom);z-index:50;
  will-change:transform;-webkit-backface-visibility:hidden;backface-visibility:hidden;}
.nb{display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 12px;border:none;background:none;cursor:pointer;color:var(--tm);border-radius:8px;text-decoration:none;}
.nb.active{color:var(--ta);}
.nb i{font-size:23px;}
.nb span{font-size:10px;font-weight:600;}

/* subtle device frame on wide screens */
@media (min-width:600px){
  body{padding:28px 0;}
  /* Grow with content and let the page scroll — a fixed-height clipped frame
     hid the bottom of tall pages like the calendar (CARE-21 / CARE-22). */
  .wrap{background:var(--s2);border:.5px solid var(--b);border-radius:30px;box-shadow:0 10px 44px rgba(0,0,0,.16);max-width:404px;min-height:calc(100vh - 56px);padding:26px 18px 88px;}
  .bnav{max-width:404px;border-radius:0 0 30px 30px;}
}

/* Larger, more legible text — users are older caregivers */
body{font-size:16px;}
.tbar h1{font-size:26px;}
.tn,.pn,.mn,.fn,.prvn,.row-rn{font-size:16px;}
.jtext{font-size:15.5px;}
.tsb,.ps,.ms,.fsb,.prvt,.row-rs,.jdate,.help{font-size:13.5px;}
label{font-size:14.5px;}
input[type=text],input[type=email],input[type=password],input[type=time],input[type=date],input[type=datetime-local],select,textarea{font-size:16.5px;}
button,.btn{font-size:16.5px;}
.mv{font-size:23px;}.ml{font-size:12px;}
.nb span{font-size:11px;}
p.sub{font-size:15px;}

/* big tappable option cards (guided setup) */
.opt{display:block;padding:15px 16px;border-radius:12px;border:1px solid var(--bs);background:var(--field);color:var(--tp);font-size:16px;font-weight:600;cursor:pointer;margin-bottom:10px;text-align:left;}
.opt.sel{background:var(--ta);color:#fff;border-color:var(--ta);}
.opt .os{display:block;font-size:13px;font-weight:400;color:var(--tm);margin-top:2px;}
.opt.sel .os{color:rgba(255,255,255,.88);}

/* month calendar grid */
.cal{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;}
.cal .cah{font-size:11px;color:var(--tm);text-align:center;font-weight:700;padding:2px 0 6px;text-transform:uppercase;}
.cal .cd{aspect-ratio:1;display:flex;flex-direction:column;align-items:center;padding-top:6px;border-radius:9px;font-size:14.5px;color:var(--tp);}
.cal .cd.out{color:var(--tm);opacity:.4;}
.cal .cd.today{background:var(--accent-soft);color:var(--accent);font-weight:800;}
.cal .cdots{display:flex;gap:2px;margin-top:3px;flex-wrap:wrap;justify-content:center;max-width:34px;}
.cal .cdot{width:6px;height:6px;border-radius:50%;box-shadow:0 0 0 .5px rgba(46,50,43,.15);}

/* Stylish, timeless serif headings (Fraunces) */
h1,h2,.tbar h1,.brand b{font-family:'Fraunces',Georgia,'Times New Roman',serif;letter-spacing:0;font-weight:600;}
.tbar h1{font-size:27px;line-height:1.15;}
.brand b{font-size:24px;}

/* jump-to-item from the calendar: brief highlight on the landing item */
.jt{scroll-margin-top:16px;border-radius:12px;transition:background .3s;}
.jt:target{background:var(--accent-soft);box-shadow:0 0 0 8px var(--accent-soft);}

/* keep content clear of the phone status bar (installed app) */
/* clear the floating View-as / dark-mode controls that live in the top band */
.wrap{padding-top:calc(50px + env(safe-area-inset-top));}

/* CARE-14: dark/light toggle pinned top-right on every page */
.themebtn{position:fixed;top:calc(8px + env(safe-area-inset-top));right:10px;z-index:60;width:36px;height:36px;padding:0;border-radius:50%;border:none;background:var(--s1);color:var(--tm);display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 1px 3px rgba(0,0,0,.06);}
.themebtn i{font-size:18px;}
.themebtn .tl{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);}  /* label kept for screen readers only */

/* CARE-18/19: organizer "View as" preview switcher */
.viewas{position:fixed;top:calc(9px + env(safe-area-inset-top));left:50%;transform:translateX(-50%);z-index:60;}
.viewas>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:6px;font-size:12.5px;font-weight:600;color:var(--tm);background:var(--s1);border:.5px solid var(--b);padding:5px 13px;border-radius:999px;box-shadow:0 1px 3px rgba(0,0,0,.06);}
.viewas>summary::-webkit-details-marker{display:none;}
.viewas-menu{position:absolute;top:38px;left:50%;transform:translateX(-50%);background:var(--s1);border:.5px solid var(--b);border-radius:14px;box-shadow:0 10px 30px rgba(0,0,0,.16);padding:8px;width:200px;display:flex;flex-direction:column;gap:3px;}
.viewas-lbl{font-size:11.5px;color:var(--tm);padding:4px 8px 3px;}
.viewas-menu button{display:flex;align-items:center;gap:9px;width:100%;text-align:left;background:none;border:none;padding:9px 10px;border-radius:9px;font-size:14px;color:var(--ink);cursor:pointer;}
.viewas-menu button i{font-size:17px;color:var(--tm);}
.viewas-menu button:active{background:var(--accent-soft);}
.preview-bar{position:fixed;top:0;left:50%;transform:translateX(-50%);width:100%;max-width:440px;z-index:61;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:calc(7px + env(safe-area-inset-top)) 14px 7px;font-size:13px;}
.preview-bar b{font-weight:700;}
.preview-bar button{background:rgba(255,255,255,.22);color:#fff;border:none;padding:5px 12px;border-radius:999px;font-size:12.5px;font-weight:600;cursor:pointer;}
.is-previewing .wrap{padding-top:calc(56px + env(safe-area-inset-top));}
.is-previewing .themebtn{display:none;}
@media (min-width:480px){.preview-bar{border-radius:30px 30px 0 0;}}

/* ── Loved one: big, calm, accessible screen ─────────────────────────────── */
.bnav-big{height:78px;}
.bnav-big .nb{padding:8px 26px;gap:5px;}
.bnav-big .nb i{font-size:30px;}
.bnav-big .nb span{font-size:14px;}
.lwrap{max-width:460px;margin:0 auto;padding:calc(50px + env(safe-area-inset-top)) 18px calc(104px + env(safe-area-inset-bottom));}
.is-previewing .lwrap{padding-top:calc(56px + env(safe-area-inset-top));}
.lhead{margin:6px 2px 20px;}
.lhi{font-size:22px;color:var(--tm);}
.lhn{font-family:'Fraunces',serif;font-size:36px;font-weight:600;line-height:1.1;color:var(--ink);}
.ltoday{display:flex;gap:14px;align-items:center;background:var(--accent-soft);border-radius:20px;padding:18px 20px;margin-bottom:24px;text-decoration:none;color:var(--ink);}
.ltoday i{font-size:32px;color:var(--accent);flex-shrink:0;}
.ltoday-l{font-size:15px;font-weight:700;color:var(--accent);text-transform:uppercase;letter-spacing:.04em;}
.ltoday-e{font-size:20px;margin-top:2px;}
.lsub{font-size:20px;font-weight:700;color:var(--ink);margin:0 2px 12px;}
.lcycle{}
.lmsg{background:var(--s1);border:1px solid var(--b);border-radius:24px;padding:22px 22px 18px;box-shadow:0 2px 10px rgba(0,0,0,.05);}
.lmsg-who{display:flex;align-items:center;gap:14px;margin-bottom:14px;}
.lav{width:58px;height:58px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-size:24px;font-weight:700;flex-shrink:0;}
.lmsg-name{font-size:23px;font-weight:700;color:var(--ink);}
.lmsg-media{width:100%;border-radius:18px;margin-bottom:14px;display:block;background:#000;max-height:60vh;object-fit:contain;}
.lmsg-body{font-size:27px;line-height:1.5;color:var(--ink);margin:0 0 12px;}
.lmsg-when{font-size:16px;color:var(--tm);}
.lnav{display:flex;align-items:center;justify-content:center;gap:20px;margin:18px 0 4px;}
.lnav-btn{width:70px;height:70px;border-radius:50%;border:none;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 3px 10px rgba(0,0,0,.14);}
.lnav-btn i{font-size:36px;}
.lnav-count{font-size:19px;font-weight:600;color:var(--tm);min-width:78px;text-align:center;}
.lempty{text-align:center;color:var(--tm);padding:34px 16px;font-size:21px;line-height:1.5;}
.lempty i{font-size:52px;display:block;margin-bottom:14px;color:var(--accent);}
.lreply-open{width:100%;margin-top:26px;background:var(--accent);color:#fff;border:none;border-radius:20px;padding:22px;font-size:23px;font-weight:700;font-family:inherit;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:10px;box-shadow:0 3px 12px rgba(0,0,0,.14);}
.lreply-open i{font-size:28px;}
.lreply{margin-top:16px;background:var(--s1);border:1px solid var(--b);border-radius:24px;padding:20px;}
.lreply textarea{width:100%;font-size:22px;font-family:inherit;line-height:1.5;padding:16px;border-radius:16px;border:1.5px solid var(--b);background:var(--field);color:var(--ink);box-sizing:border-box;resize:vertical;}
.lmstatus{font-size:17px;color:var(--accent);margin-top:10px;font-weight:600;min-height:4px;}
.lreply-tools{display:flex;gap:12px;margin-top:14px;}
.ltool{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;background:var(--accent-soft);color:var(--accent);border-radius:16px;padding:18px;font-size:19px;font-weight:700;cursor:pointer;}
.ltool i{font-size:24px;}
.lsend{width:100%;margin-top:16px;background:var(--accent);color:#fff;border:none;border-radius:16px;padding:20px;font-size:22px;font-weight:700;font-family:inherit;cursor:pointer;}
/* loved one calendar */
.lday{margin-bottom:22px;}
.lday-h{font-family:'Fraunces',serif;font-size:24px;font-weight:600;color:var(--ink);margin:0 2px 12px;display:flex;align-items:center;flex-wrap:wrap;gap:10px;}
.lday-d{font-size:19px;color:var(--tm);font-family:inherit;font-weight:400;}
.lday-tag{background:var(--accent);color:#fff;font-size:15px;font-weight:700;padding:4px 12px;border-radius:999px;font-family:'Open Sans',sans-serif;text-transform:uppercase;letter-spacing:.04em;}
.lday-today .lev{border-color:var(--accent);}
.lev{display:flex;gap:16px;align-items:center;background:var(--s1);border:1px solid var(--b);border-radius:20px;padding:18px 20px;margin-bottom:10px;}
.lev-ic{width:52px;height:52px;border-radius:14px;background:var(--accent-soft);color:var(--accent);display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.lev-ic i{font-size:26px;}
.lev-t{font-size:23px;font-weight:700;color:var(--ink);line-height:1.25;}
.lev-s{font-size:18px;color:var(--tm);margin-top:3px;}
/* loved one: meds / to-dos / notes (CARE-28) */
.lcard{background:var(--s1);border:1px solid var(--b);border-radius:22px;padding:8px 20px;}
.lmed{display:flex;align-items:center;gap:14px;padding:16px 0;border-bottom:.5px solid var(--b);}
.lmed:last-child{border-bottom:none;}
.lmed-n{font-size:22px;font-weight:700;color:var(--ink);}
.lmed-s{font-size:16px;color:var(--tm);margin-top:2px;}
.lmed-take{background:var(--accent);color:#fff;border:none;border-radius:14px;padding:14px 20px;font-size:18px;font-weight:700;font-family:inherit;cursor:pointer;flex-shrink:0;}
.lmed-done{color:var(--tsu);font-size:18px;font-weight:700;flex-shrink:0;}
.ltask{display:flex;align-items:center;gap:14px;padding:15px 0;border-bottom:.5px solid var(--b);margin:0;background:none;}
.ltask:last-of-type{border-bottom:none;}
.ltask-check{width:34px;height:34px;flex-shrink:0;border-radius:50%;border:2.5px solid var(--accent);background:none;cursor:pointer;}
.ltask-check.on{background:var(--accent);}
.ltask-t{font-size:21px;color:var(--ink);line-height:1.3;text-align:left;}
.ltask-done .ltask-t{text-decoration:line-through;color:var(--tm);}
.lnote-x{margin-left:auto;width:38px;height:38px;flex-shrink:0;border:none;background:none;color:var(--tm);font-size:18px;cursor:pointer;}
.lnote-add{display:flex;gap:10px;padding:14px 0 4px;}
.lnote-add input{flex:1;font-size:19px;font-family:inherit;padding:13px 15px;border-radius:14px;border:1.5px solid var(--b);background:var(--field);color:var(--ink);}
.lnote-add button{background:var(--accent);color:#fff;border:none;border-radius:14px;padding:0 20px;font-size:18px;font-weight:700;font-family:inherit;cursor:pointer;}
.lempty-sm{color:var(--tm);font-size:18px;padding:14px 0;}
.lovedtog{display:flex;align-items:center;gap:8px;font-size:13.5px;color:var(--ink);margin:4px 0;}
.lovedtog input{width:auto;}
