:root{--navy:#262B40;--navyDeep:#1C2032;--navyCard:#30364F;--line:#454C69;--brick:#D2363A;--brickDeep:#A82A2E;--purple:#5E3A8C;--pink:#F06A8F;--cream:#FBEFD9;--creamSoft:#D9CDB8;--creamDim:#A9A08F;--gold:#FFD98A;--blue:#7BB3FF}
*{box-sizing:border-box}
html,body{margin:0;background:var(--navy);color:var(--cream);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;-webkit-text-size-adjust:100%;min-height:100vh}
button{font-family:inherit}
[hidden]{display:none!important}
a{color:var(--gold)}
/* layout: mobile-first */
.topbar{position:sticky;top:0;z-index:5;background:var(--navyDeep);border-bottom:1px solid var(--line);padding:calc(12px + env(safe-area-inset-top)) 12px 8px}
.topbar .brand{margin:0 4px 10px}
.tabs{display:flex;flex-wrap:wrap;gap:4px}
main{padding:20px 16px calc(32px + env(safe-area-inset-bottom))}
.side{display:none}
.brand{display:flex;align-items:center;gap:10px}
.brand-title{font-size:17px;font-weight:600;color:var(--cream)}
.brand-sub{font-size:13px;color:var(--pink)}
.tab{position:relative;min-height:48px;border-radius:14px;cursor:pointer;background:transparent;border:1px solid transparent;color:var(--creamSoft);display:flex;align-items:center;flex:1 1 0;min-width:64px;justify-content:center;padding:0 6px;font-size:14px;flex-direction:column;gap:2px;font-weight:400}
.tab.on{font-weight:600;background:rgba(240,106,143,.16);border-color:var(--pink);color:var(--cream)}
.tab .long{display:none}
.legend{margin-top:20px;display:flex;flex-direction:column;gap:8px}
.legend span{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--creamSoft)}
@media (min-width:760px){
  .topbar{display:none}
  .shell{display:grid;grid-template-columns:240px 1fr;min-height:100vh}
  .side{display:block;background:var(--navyDeep);border-right:1px solid var(--line);padding:20px}
  .side .brand{margin-bottom:22px}
  .side .brand-title{font-size:20px}
  .side .tab{width:100%;justify-content:flex-start;padding:0 14px;margin-bottom:6px;font-size:16px;flex-direction:row;gap:8px;flex:none}
  .tab .long{display:inline}.tab .short{display:none}
  main{padding:28px 32px;max-width:820px}
  h1{font-size:28px!important}
  .wx-grid{grid-template-columns:1fr 1fr!important}
}
/* type */
.label{font-size:13px;color:var(--gold);letter-spacing:.05em;text-transform:uppercase;font-weight:500}
h1{font-size:24px;font-weight:600;color:var(--cream);margin:4px 0 6px}
.lead{font-size:16px;color:var(--creamSoft);margin:0 0 18px}
h2{font-size:18px;font-weight:600;color:var(--cream);margin:0 0 12px}
.sub{font-size:15px;color:var(--creamSoft);margin:0;line-height:1.5}
.card{background:var(--navyCard);border:1px solid var(--line);border-radius:18px;padding:20px;margin-bottom:16px}
.dot{display:inline-block;width:10px;height:10px;border-radius:999px;flex-shrink:0}
.tag{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--cream);border:1px solid;border-radius:999px;padding:3px 10px}
.c-penelope{background:var(--pink)}.c-family{background:var(--blue)}.c-birthday{background:var(--gold)}
.b-penelope{border-color:var(--pink)}.b-family{border-color:var(--blue)}.b-birthday{border-color:var(--gold)}
.chip{display:inline-flex;align-items:center;gap:10px;min-height:48px;padding:0 18px;border-radius:999px;border:1px solid var(--line);background:var(--navyCard);color:var(--cream);font-size:16px;cursor:pointer}
.sun{width:14px;height:14px;border-radius:999px;background:var(--gold);box-shadow:0 0 10px var(--gold)}
.row{display:flex;gap:14px;padding:14px 0;border-top:1px solid var(--line);align-items:flex-start}
.bar{width:4px;align-self:stretch;border-radius:4px;flex-shrink:0}
.ev-head{display:flex;flex-wrap:wrap;gap:8px;align-items:baseline;justify-content:space-between}
.ev-title{font-size:17px;font-weight:600;color:var(--cream)}
.ev-when{font-size:15px;color:var(--creamSoft);margin-top:4px}
.ev-detail{font-size:14px;color:var(--creamDim);margin-top:6px;line-height:1.5}
.filters{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}
.filter{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 16px;border-radius:999px;cursor:pointer;font-size:15px;font-weight:500;border:1px solid var(--line);background:var(--navyCard);color:var(--cream)}
.filter.on{border-color:var(--pink);background:rgba(240,106,143,.18)}
.wx-grid{display:grid;grid-template-columns:1fr;gap:12px}
.wx{margin-bottom:0;display:flex;justify-content:space-between;align-items:center;gap:12px}
.prep-item{display:flex;width:100%;align-items:center;gap:14px;min-height:60px;padding:10px 12px;background:transparent;border:none;border-top:1px solid var(--line);cursor:pointer;text-align:left}
.prep-item:first-child{border-top:none}
.box{width:26px;height:26px;border-radius:8px;flex-shrink:0;border:2px solid var(--creamDim);color:var(--navyDeep);display:inline-flex;align-items:center;justify-content:center;font-size:16px;font-weight:700}
.on .box{border-color:var(--pink);background:var(--pink)}
.prep-task{display:block;font-size:16px;color:var(--cream)}
.on .prep-task{color:var(--creamDim);text-decoration:line-through}
.prep-when{display:block;font-size:13px;color:var(--creamDim);margin-top:2px}
.footer{font-size:13px;color:var(--creamDim);margin-top:24px;text-align:center}
/* gate */
.gate{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}
.gate-card{width:100%;max-width:360px;background:var(--navyCard);border:1px solid var(--line);border-radius:18px;padding:28px 22px;text-align:center}
.gate-house{display:flex;justify-content:center;margin-bottom:8px}
.gate-card .brand-title{font-size:20px;margin-bottom:4px}
.gate-card .sub{margin-bottom:16px}
.gate-card input{width:100%;min-height:50px;border-radius:14px;border:1px solid var(--line);background:var(--navyDeep);color:var(--cream);font-size:17px;padding:0 14px;margin-bottom:12px}
.gate-card input:focus{outline:none;border-color:var(--pink)}
.gate-btn{width:100%;min-height:50px;border-radius:14px;border:1px solid var(--pink);background:rgba(240,106,143,.22);color:var(--cream);font-size:17px;font-weight:600;cursor:pointer}
.gate-err{color:var(--pink);font-size:14px;min-height:20px;margin:12px 0 0}
.lock{background:none;border:none;color:var(--creamDim);font-size:13px;text-decoration:underline;cursor:pointer;margin-top:6px}

/* ===== v2: warmer look ===== */
body{background:radial-gradient(120% 60% at 50% -10%,rgba(210,54,58,.18),transparent 60%),radial-gradient(90% 50% at 100% 0,rgba(94,58,140,.22),transparent 60%),var(--navy);background-attachment:fixed}
.topbar{background:linear-gradient(180deg,#241d33,var(--navyDeep))}
.card{border-radius:22px;background:linear-gradient(160deg,#363553 0%,var(--navyCard) 60%);box-shadow:0 6px 18px rgba(0,0,0,.18)}
h1{letter-spacing:-.01em}
.tabs{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;margin:0 -4px;padding:0 4px}
.tabs::-webkit-scrollbar{display:none}
.tabs .tab{flex:0 0 auto;min-width:72px}
.tab-pen:not(.on) .short,.tab-pen:not(.on) .long{color:#F7A8C0}
.ico{display:inline-flex;flex-shrink:0}.ico svg{width:100%;height:100%}
.ev-ico{width:40px;height:40px;border-radius:12px;background:rgba(251,239,217,.07);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.chips{display:inline-flex;gap:6px;flex-wrap:wrap;align-items:center}
.driver{display:inline-flex;align-items:center;gap:4px;font-size:12px;color:var(--navyDeep);background:var(--gold);border-radius:999px;padding:2px 9px;font-weight:600}
.brief{font-size:16px;padding:8px 0;border-top:1px solid var(--line)}.brief.first{border-top:none;color:var(--cream)}
.hero{margin:-4px 0 18px;border-radius:22px;overflow:hidden;aspect-ratio:16/7;box-shadow:0 8px 24px rgba(0,0,0,.3)}
.hero img{width:100%;height:100%;object-fit:cover;display:block}
/* at a glance */
.glance{border-color:var(--brick);background:linear-gradient(150deg,#4a2f45 0%,#3a3252 55%,var(--navyCard) 100%)}
.gl-row{display:flex;gap:14px;align-items:center;margin-bottom:12px}
.gl-ico{width:56px;height:56px;border-radius:16px;background:rgba(251,239,217,.1);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.gl-kicker{font-size:14px;color:var(--pink);font-weight:600}
.gl-title{font-size:20px;font-weight:600;color:var(--cream);margin-top:2px}
.gl-when{font-size:15px;color:var(--creamSoft);margin-top:3px;display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.gl-line{display:flex;gap:12px;align-items:baseline;padding:10px 0 2px;border-top:1px solid var(--line);font-size:15px;color:var(--cream);width:100%;background:none;border-left:0;border-right:0;border-bottom:0;text-align:left;cursor:pointer}
.gl-k{font-size:12px;color:var(--gold);text-transform:uppercase;letter-spacing:.06em;font-weight:600;min-width:64px}
.gl-wx .sun{display:inline-block;width:10px;height:10px;vertical-align:middle;margin-right:2px}
/* Penelope */
.pen{--p1:#FCE4EE;--p2:#EBDDF8;--pink2:#E5608A;--lav:#8E5CC4;--ink:#3A2645}
.pen-hero{display:flex;gap:14px;align-items:center;padding:18px;border-radius:24px;background:linear-gradient(135deg,#FFD6E5,#E3D2F7);color:var(--ink);margin-bottom:16px}
.pen-art{display:flex;flex-direction:column;gap:2px}
.pen-art .ico:last-child{margin-top:-14px;margin-left:16px}
.pen-kicker{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--lav);font-weight:700}
.pen-h1{color:var(--ink)!important;margin:2px 0 4px!important}
.pen-lead{margin:0;font-size:15px;color:#5a4466}
.pen-card{background:linear-gradient(160deg,var(--p1),var(--p2));color:var(--ink);border-radius:24px;padding:18px;margin-bottom:16px;box-shadow:0 6px 18px rgba(0,0,0,.18)}
.pen-label{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--lav);font-weight:700;margin-bottom:10px}
.pen-big-title{display:flex;align-items:center;gap:10px;font-size:21px;font-weight:700}
.pen-when{font-size:15px;color:#5a4466;margin:4px 0 14px}
.pen-nums{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.pen-num{background:#fff;border-radius:18px;padding:12px 4px;text-align:center;box-shadow:0 2px 0 rgba(229,96,138,.25)}
.pen-num b{display:block;font-size:34px;line-height:1.1;color:var(--pink2)}
.pen-num span{font-size:12px;color:#7a6386;text-transform:uppercase;letter-spacing:.06em}
.pen-detail{font-size:14px;color:#5a4466;margin-top:12px;line-height:1.5}
.pen-item{display:flex;align-items:center;gap:12px;width:100%;min-height:52px;padding:8px 4px;background:none;border:none;border-top:1px solid rgba(142,92,196,.2);font-size:17px;color:var(--ink);text-align:left;cursor:pointer}
.pen-item:first-of-type{border-top:none}
.pen-box{width:28px;height:28px;border-radius:999px;border:2px solid var(--lav);display:inline-flex;align-items:center;justify-content:center;color:#fff;font-weight:700;flex-shrink:0;background:#fff}
.pen-item.on{color:#8a7795;text-decoration:line-through}.pen-item.on .pen-box{background:var(--pink2);border-color:var(--pink2)}
.pen-star{display:flex;gap:12px;align-items:center;margin-top:12px;padding:12px;border-radius:18px;background:#FFF4D6;animation:pop .5s ease}
.pen-star span{font-size:14px;color:#6b5a2a}
.pen-reset{margin-top:10px;background:none;border:none;color:var(--lav);text-decoration:underline;font-size:14px;cursor:pointer}
.pen-ev{display:flex;gap:12px;align-items:center;padding:10px 0;border-top:1px solid rgba(142,92,196,.2)}
.pen-ev:nth-child(2){border-top:none}
.pen-ev-title{font-size:16px;font-weight:600}
.pen-ev-when{font-size:14px;color:#5a4466;margin-top:2px}
.pen .cd{color:var(--pink2);font-weight:600}
@keyframes pop{0%{transform:scale(.8);opacity:0}70%{transform:scale(1.05)}100%{transform:scale(1);opacity:1}}
/* chat placeholder */
.chat-ph{text-align:center;padding:36px 20px;display:flex;flex-direction:column;align-items:center;gap:10px}
.chat-ph-title{font-size:20px;font-weight:600;color:var(--cream)}
@media (prefers-reduced-motion:reduce){.pen-star{animation:none}}

/* ===== v3: family chat ===== */
.tab.badge::after{content:"";position:absolute;top:7px;right:9px;width:9px;height:9px;border-radius:99px;background:var(--brick);box-shadow:0 0 0 2px var(--navyDeep)}
main[data-v="chat"]{padding-bottom:12px}
.chat{display:flex;flex-direction:column;height:calc(100dvh - 190px);min-height:380px}
@media (min-width:760px){.chat{height:calc(100dvh - 120px)}}
.chat-head{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:6px}
.chat-me{background:var(--navyCard);border:1px solid var(--line);color:var(--creamSoft);border-radius:999px;min-height:36px;padding:0 12px;font-size:13px;cursor:pointer}
.chat-status{font-size:13px;color:var(--gold);min-height:18px}
.chat-list{flex:1;overflow-y:auto;padding:6px 2px 10px;display:flex;flex-direction:column;gap:10px;-webkit-overflow-scrolling:touch}
.chat-empty{text-align:center;margin-top:30px}
.msg{display:flex;gap:8px;align-items:flex-end;max-width:85%}
.msg.mine{align-self:flex-end;flex-direction:row-reverse}
.bub{border-radius:18px;padding:9px 13px;background:var(--navyCard);border:1px solid var(--line)}
.msg.mine .bub{border-bottom-right-radius:6px}.msg:not(.mine) .bub{border-bottom-left-radius:6px}
.who{font-size:12px;font-weight:700;margin-bottom:2px}
.txt{font-size:16px;line-height:1.4;color:var(--cream);word-wrap:break-word;overflow-wrap:anywhere}
.ts{font-size:11px;color:var(--creamDim);margin-top:4px;text-align:right}
.a-penelope .bub{background:linear-gradient(160deg,#FCE4EE,#F3D6F0);border-color:#F7A8C0}.a-penelope .txt{color:#3A2645}.a-penelope .who{color:#D84E76}.a-penelope .ts{color:#7a6386}
.a-rachel .bub{background:linear-gradient(160deg,#2f4f86,#284374);border-color:var(--blue)}.a-rachel .who{color:var(--blue)}
.a-nick .bub{background:#1C2032;border-color:#5a6390}.a-nick .who{color:#AEB8E6}
.a-anna .bub{background:linear-gradient(160deg,#4a2f45,#3a3252);border-color:var(--brick)}.a-anna .who{color:var(--gold)}
.anna-av{width:30px;height:30px;border-radius:999px;border:2px solid var(--pink);flex-shrink:0}
.at{color:var(--gold)}.a-penelope .at{color:#8E5CC4}
.chat-form{display:flex;gap:8px;align-items:flex-end;padding-top:8px;border-top:1px solid var(--line)}
.chat-form textarea{flex:1;min-height:46px;max-height:140px;resize:none;border-radius:16px;border:1px solid var(--line);background:var(--navyDeep);color:var(--cream);font:inherit;font-size:16px;padding:11px 14px}
.chat-form textarea:focus{outline:none;border-color:var(--pink)}
.at-chip{min-height:46px;border-radius:16px;border:1px solid var(--gold);background:rgba(255,217,138,.12);color:var(--gold);font-weight:600;padding:0 12px;cursor:pointer}
.send{min-height:46px;border-radius:16px;border:1px solid var(--pink);background:var(--pink);color:#fff;font-weight:700;padding:0 16px;cursor:pointer}
.send:disabled{opacity:.5}
.chat-pick .pick-row{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}
.pick{flex:1 1 90px;min-height:56px;border-radius:16px;font-size:17px;font-weight:600;cursor:pointer;border:2px solid;color:var(--cream);background:var(--navyDeep)}
.p-penelope{border-color:var(--pink)}.p-rachel{border-color:var(--blue)}.p-nick{border-color:#AEB8E6}

/* ===== v4: Nick tab (navy accent) ===== */
.tab-nick:not(.on) .short,.tab-nick:not(.on) .long{color:#AEB8E6}
.nick{--nk:#3B4A86;--nk2:#AEB8E6}
.nick-hero{display:flex;gap:14px;align-items:center;padding:18px;border-radius:24px;background:linear-gradient(135deg,#2c3766,#1C2032);border:1px solid #4b5a99;margin-bottom:16px}
.nick-card{border-color:#4b5a99}
.nick-glance{background:linear-gradient(150deg,#2f3b6e 0%,#2a2f4d 60%,var(--navyCard) 100%)}
.nick-next-title{font-size:20px;font-weight:600;color:var(--cream)}
.nick-next-when{font-size:15px;color:var(--creamSoft);margin-top:3px}
.nick .cd{color:var(--nk2);font-weight:600}
.nick-week{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;margin-top:14px}
.nick-wk{border-radius:14px;padding:8px 2px;text-align:center;background:rgba(174,184,230,.08);border:1px solid #4b5a99}
.nick-wk .wk-d{display:block;font-size:13px;color:var(--nk2);font-weight:700}
.nick-wk .wk-t{display:block;font-size:13px;color:var(--cream);margin-top:2px}
.nick-wk.past{opacity:.45}.nick-wk.next{background:#3B4A86;border-color:var(--nk2)}
.nick-date{display:flex;gap:14px;align-items:center;background:linear-gradient(150deg,#4a2f45,#2f3b6e)}
.nick-date-ico{width:48px;height:48px;border-radius:14px;background:rgba(240,106,143,.2);color:var(--pink);font-size:26px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.bill{display:flex;gap:12px;align-items:center;padding:10px 0}
.bill-dot{width:12px;height:12px;border-radius:99px;background:var(--gold);flex-shrink:0}
.bill-title{font-size:17px;font-weight:600}
.bill-meta{font-size:14px;color:var(--creamSoft)}.bill-meta .ph{color:var(--creamDim);font-style:italic}
.hd-head{display:flex;justify-content:space-between;align-items:center}
.hd-count{font-size:13px;color:var(--nk2)}
.hd-form{display:flex;gap:8px;margin:12px 0 4px}
.hd-form input{flex:1;min-height:46px;border-radius:14px;border:1px solid var(--line);background:var(--navyDeep);color:var(--cream);font:inherit;font-size:16px;padding:0 14px}
.hd-form input:focus{outline:none;border-color:var(--nk2)}
.hd-form .send{background:#3B4A86;border-color:var(--nk2)}
.hd-status{font-size:13px;color:var(--gold);min-height:16px}
.hd-item{display:flex;align-items:center;gap:10px;padding:8px 0;border-top:1px solid var(--line)}
.hd-check{background:none;border:none;padding:6px;cursor:pointer}
.hd-item .box{border-color:var(--nk2)}.hd-item.on .box{background:var(--nk2);border-color:var(--nk2)}
.hd-text{flex:1;min-width:0;font-size:16px;overflow-wrap:anywhere}.hd-item.on .hd-text>div:first-child{text-decoration:line-through;color:var(--creamDim)}
.hd-by{font-size:12px;color:var(--creamDim);margin-top:2px}
.hd-del{background:none;border:none;color:var(--creamDim);font-size:22px;min-width:40px;min-height:40px;cursor:pointer}
.hd-toggle{background:none;border:none;color:var(--nk2);text-decoration:underline;font-size:14px;padding:10px 0;cursor:pointer}
.hd-empty{padding:8px 0}
.hd-names{display:flex;gap:8px;margin-bottom:4px}
.hd-name{flex:1;min-height:40px;border-radius:12px;border:1px solid #4b5a99;background:var(--navyDeep);color:var(--cream);cursor:pointer}

.nick-date-ico.pay{background:rgba(255,217,138,.16)}

/* ===== v5: Rachel tab (family blue + soft rose) + Ask Anna sheet ===== */
.tab-rachel:not(.on) .short,.tab-rachel:not(.on) .long{color:#F4B6C4}
.rachel{--rose:#F4B6C4;--rose2:#E88AA3}
.r-hero{padding:18px;border-radius:24px;background:linear-gradient(135deg,#2f4f86 0%,#5a3a5e 100%);border:1px solid rgba(244,182,196,.45);margin-bottom:14px}
.ask-big{display:flex;align-items:center;gap:14px;width:100%;min-height:78px;padding:14px 18px;margin-bottom:16px;border-radius:22px;border:2px solid var(--rose);background:linear-gradient(135deg,#E88AA3,#7BB3FF);color:#1C2032;text-align:left;cursor:pointer;box-shadow:0 8px 22px rgba(232,138,163,.35)}
.ask-big b{font-size:20px}.ask-big span span{font-size:14px;opacity:.85}
.ask-plus{width:48px;height:48px;border-radius:999px;background:#fff;color:#E5608A;font-size:32px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.r-card{border-color:rgba(123,179,255,.45)}
.r-row{display:flex;gap:12px;align-items:center;padding:10px 0;border-top:1px solid var(--line)}
.r-next .r-row{border-top:none}
.r-kicker{font-size:14px;color:var(--rose);font-weight:600}
.r-title{font-size:16px;font-weight:600;color:var(--cream)}
.r-when{font-size:14px;color:var(--creamSoft);margin-top:2px}
.rachel .cd{color:var(--blue);font-weight:600}
.r-empty{padding:6px 0}
.heads{display:inline-block;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;background:var(--rose2);color:#fff;border-radius:999px;padding:2px 8px;vertical-align:middle}
.r-check{display:flex;gap:12px;align-items:center;width:100%;min-height:64px;padding:10px 12px;margin-bottom:6px;border-radius:16px;border:1px solid var(--rose);background:rgba(244,182,196,.1);color:var(--cream);font-size:16px;text-align:left;cursor:pointer}
.r-check .box{border-color:var(--rose)}.r-check.on .box{background:var(--rose2);border-color:var(--rose2);color:#fff}
.r-check.on b{text-decoration:line-through;color:var(--creamDim)}
.r-item{display:flex;gap:12px;align-items:center;padding:10px 0;border-top:1px solid var(--line)}.r-item.done{opacity:.55}
.r-me{background:linear-gradient(150deg,#3a2f5c,#2f4f86)}
.r-me-head{display:flex;gap:12px;align-items:center;margin-bottom:8px}
.r-crown{width:44px;height:44px;display:inline-flex}.r-crown svg{width:100%;height:100%}
.r-royale{font-size:15px;font-weight:800;letter-spacing:.08em;background:linear-gradient(90deg,#FFD98A,#F06A8F,#7BB3FF);-webkit-background-clip:text;background-clip:text;color:transparent;font-style:italic}
/* floating + on Today */
.fab{position:fixed;right:16px;bottom:calc(18px + env(safe-area-inset-bottom));z-index:20;display:flex;align-items:center;gap:8px;min-height:60px;padding:0 20px 0 10px;border-radius:999px;border:2px solid #fff;background:linear-gradient(135deg,#E88AA3,#7BB3FF);color:#1C2032;font-size:17px;cursor:pointer;box-shadow:0 10px 28px rgba(0,0,0,.4)}
.fab span{width:42px;height:42px;border-radius:999px;background:#fff;color:#E5608A;font-size:30px;font-weight:700;display:flex;align-items:center;justify-content:center}
main[data-v="today"]{padding-bottom:110px}
/* sheet */
body.qa-open{overflow:hidden}
#qa-root{position:fixed;inset:0;z-index:50}
.qa-back{position:absolute;inset:0;background:rgba(10,12,22,.6)}
.qa-sheet{position:absolute;left:0;right:0;bottom:0;max-height:92dvh;overflow-y:auto;background:var(--navyDeep);border-top:2px solid var(--rose,#F4B6C4);border-radius:26px 26px 0 0;padding:8px 16px calc(18px + env(safe-area-inset-bottom));animation:up .22s ease}
@media (min-width:760px){.qa-sheet{left:50%;right:auto;width:560px;transform:translateX(-50%);bottom:24px;border-radius:26px;border:2px solid #F4B6C4;animation:none}}
@keyframes up{from{transform:translateY(40px);opacity:0}}
.qa-grab{width:44px;height:5px;border-radius:9px;background:var(--line);margin:4px auto 8px}
.qa-head{display:flex;justify-content:space-between;align-items:center;font-size:20px;color:var(--cream)}
.qa-x{background:none;border:none;color:var(--creamSoft);font-size:30px;min-width:48px;min-height:48px;cursor:pointer}
.qa-sec{font-size:12px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--gold);margin:12px 0 8px}
.qa-chips{display:flex;flex-wrap:wrap;gap:8px}
.qa-chip{position:relative;min-height:48px;padding:0 16px;border-radius:999px;border:1.5px solid var(--line);background:var(--navyCard);color:var(--cream);font-size:16px;cursor:pointer;display:inline-flex;align-items:center;gap:6px}
.qa-chip.on{border-color:#F4B6C4;background:linear-gradient(135deg,rgba(232,138,163,.35),rgba(123,179,255,.3));font-weight:600}
.qa-pick input{position:absolute;inset:0;opacity:0;width:100%;height:100%;cursor:pointer}
.qa-input{width:100%;min-height:50px;margin-top:10px;border-radius:14px;border:1px solid var(--line);background:var(--navy);color:var(--cream);font:inherit;font-size:16px;padding:0 14px}
.qa-input:focus{outline:none;border-color:#F4B6C4}
.qa-new{display:flex;gap:8px;align-items:center}.qa-new .qa-input{flex:1}.qa-new .qa-chip{margin-top:10px}
.qa-preview{margin:14px 0 10px;padding:12px 14px;border-radius:14px;background:rgba(255,217,138,.08);border:1px dashed rgba(255,217,138,.45);color:var(--creamSoft);font-size:15px}
.qa-send{width:100%;min-height:58px;border-radius:18px;border:none;background:linear-gradient(135deg,#E88AA3,#7BB3FF);color:#1C2032;font-size:19px;font-weight:800;cursor:pointer}
.qa-send:disabled{opacity:.45}
.qa-err{color:var(--pink);font-size:14px;min-height:18px;margin-top:8px}
.toast{position:fixed;left:50%;bottom:calc(96px + env(safe-area-inset-bottom));transform:translateX(-50%);z-index:60;background:#2fae6b;color:#fff;font-weight:700;font-size:17px;padding:14px 22px;border-radius:999px;box-shadow:0 10px 24px rgba(0,0,0,.35);transition:opacity .4s}
.toast.out{opacity:0}

/* ===== v7: Rachel — San Diego beach day (scoped to .rachel) ===== */
.rachel{--ocean:#1F7A8C;--teal:#2A9DAA;--sand:#FBF3E4;--sand2:#F3E6CC;--coral:#F28C6B;--sun:#F4C95D;--ink:#1E3A45;--inkSoft:#4A6470;--rose:#F28C6B;--rose2:#E07656;
  color:var(--ink);background:linear-gradient(180deg,#E6F4F5 0%,var(--sand) 55%);border-radius:24px;padding:12px;margin:-4px -4px 0}
.rachel .label{color:var(--ocean)}
.rachel h1,.rachel h2{color:var(--ink)}
.rachel .sub,.rachel .r-when{color:var(--inkSoft)}
.rachel .card,.rachel .r-card,.rachel .r-me{background:#FFFDF8;border:1px solid #E3D6BC;box-shadow:0 4px 14px rgba(31,122,140,.10);color:var(--ink)}
.rachel .r-title,.rachel .r-check{color:var(--ink)}
.rachel .r-kicker{color:var(--coral)}
.rachel .cd{color:var(--ocean)}
.rachel .r-row,.rachel .r-item{border-top-color:#EADFC8}
.rachel .r-check{background:rgba(42,157,170,.07);border-color:rgba(42,157,170,.45)}
.rachel .r-check .box{border-color:var(--teal);color:#fff}.rachel .r-check.on .box{background:var(--teal);border-color:var(--teal)}
.rachel .r-check.on b{color:#8aa0a8}
.rachel .r-royale{background:linear-gradient(90deg,#E0A526,#F28C6B,#1F7A8C);-webkit-background-clip:text;background-clip:text}
.rachel .driver{background:var(--sun);color:var(--ink)}
.rachel .ask-big{border-color:var(--teal);background:linear-gradient(135deg,#7FD1D8,#F6D99A);color:var(--ink)}
.rachel .ask-plus{color:var(--ocean)}
.r-hero{position:relative;overflow:hidden;display:flex;align-items:center;gap:12px;background:linear-gradient(180deg,#BFE6EE 0%,#E8F6F7 60%,#FBF3E4 100%)!important;border:1px solid #CFE6E9!important;padding-bottom:30px}
.r-hero-txt{position:relative;z-index:1;flex:1}
.r-hero h1{color:var(--ink)}
.r-cat{position:relative;z-index:1;width:58px;height:58px;flex-shrink:0;order:2;filter:drop-shadow(0 2px 3px rgba(0,0,0,.15))}
.r-sun{position:absolute;right:-18px;top:-18px;width:78px;height:78px;border-radius:50%;background:radial-gradient(circle,#FFE29A 0 45%,rgba(255,226,154,.35) 46% 62%,transparent 63%);opacity:.85}
.r-waves{position:absolute;left:0;right:0;bottom:0;width:100%;height:26px}

/* ===== v7: Nick — soft dark, easy on the eyes (scoped to .nick) ===== */
.nick{--nk:#3E4752;--nk2:#9FB0C2;--nkText:#E4E2DC;--nkSoft:#B9BBB8;--nkDim:#8A8F94;--nkBg:#22262C;--nkCard:#2A2F36;--nkLine:#3A4049;
  color:var(--nkText);background:var(--nkBg);border-radius:24px;padding:12px;margin:-4px -4px 0}
.nick h1,.nick h2,.nick .nick-next-title,.nick .hd-text{color:var(--nkText)}
.nick .label{color:var(--nk2)}
.nick .sub,.nick .nick-next-when{color:var(--nkSoft)}
.nick .card,.nick .nick-card,.nick .nick-glance,.nick .nick-date{background:var(--nkCard);border:1px solid var(--nkLine);box-shadow:none}
.nick .nick-hero{background:linear-gradient(135deg,#2D333B,#262A30);border-color:var(--nkLine)}
.nick .nick-hero svg{opacity:.85}
.nick .nick-wk{background:rgba(159,176,194,.06);border-color:var(--nkLine)}
.nick .nick-wk .wk-t{color:var(--nkText)}
.nick .nick-wk.next{background:#36404B;border-color:#6E8094}
.nick .nick-date-ico{background:rgba(196,150,160,.12);color:#C4A0A8}
.nick .nick-date-ico.pay{background:rgba(200,185,150,.10)}
.nick .hd-form input,.nick .hd-name{background:#1D2025;border-color:var(--nkLine);color:var(--nkText)}
.nick .hd-form .send{background:#3A4450;border-color:#6E8094;color:var(--nkText)}
.nick .hd-status{color:#C8B98F}
.nick .hd-item,.nick .row{border-top-color:var(--nkLine)}
.nick .hd-by,.nick .hd-del{color:var(--nkDim)}
.nick .hd-item.on .box{background:#6E8094;border-color:#6E8094;color:var(--nkBg)}
.nick .ask-big{border-color:#56636F;background:linear-gradient(135deg,#34404B,#2C333B);color:var(--nkText)}
.nick .ask-plus{background:#4A5664;color:var(--nkText)}
.nick .driver{background:#5C6670;color:var(--nkText)}

/* ===== v7: Chat — Anna's place (scoped to .chat) ===== */
.chat,.chat-pick{--sage:#9DBB97;--sageDeep:#3E4E3E;--amber:#E8B86B;--slate:#2C3138;--slateLine:#3E454E;--warmText:#ECE6DA}
.chat{background:radial-gradient(90% 40% at 85% 0,rgba(232,184,107,.10),transparent 70%),#22252A;border-radius:22px;padding:12px;border:1px solid #33383F}
.chat h1{color:var(--warmText)}
.chat .chat-status{color:var(--amber)}
.chat .chat-me{background:var(--slate);border-color:var(--slateLine);color:#C9C3B6}
.chat .bub,.chat .a-nick .bub,.chat .a-rachel .bub,.chat .a-penelope .bub{background:var(--slate);border-color:var(--slateLine)}
.chat .txt,.chat .a-penelope .txt{color:var(--warmText)}
.chat .ts,.chat .a-penelope .ts{color:#8E9096;font-size:11px}
.chat .a-nick .who{color:#A3B2C4}.chat .a-rachel .who{color:#6FC2C4}.chat .a-penelope .who{color:#BBA6DE}
.chat .msg.mine .bub{background:#323842}
.chat .a-anna .bub{background:linear-gradient(160deg,#3D4B3C,#343F34);border-color:#5E7559;box-shadow:0 0 18px rgba(232,184,107,.10)}
.chat .a-anna .who{color:var(--sage);display:inline-flex;align-items:center;gap:4px}
.chat .sprig{width:14px;height:14px}
.chat .at{color:var(--amber)}
.chat .chat-form{border-top-color:#33383F}
.chat .chat-form textarea{background:#1C1F23;border-color:var(--slateLine);color:var(--warmText)}
.chat .chat-form textarea:focus{border-color:var(--sage)}
.chat .chat-form button{background:#3D4B3C;border-color:var(--sage);color:var(--warmText)}
.nick .ask-big{box-shadow:none}.nick .nick-hero svg,.nick .nick-date-ico svg{filter:saturate(.35) brightness(.9)}

/* ===== v8: Day / Night mode (html[data-theme]) — app-wide palette; Rachel, Nick, Penelope tabs keep their own looks ===== */
.theme-toggle{margin-left:auto;display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:0 12px;border-radius:999px;border:1px solid var(--line);background:var(--navyCard);color:var(--creamSoft);font-size:13px;cursor:pointer;flex-shrink:0}
.theme-toggle svg{width:16px;height:16px}
/* Night = Nick's soft dark palette */
html[data-theme=night]{--navy:#22262C;--navyDeep:#1D2025;--navyCard:#2A2F36;--line:#3A4049;--cream:#E4E2DC;--creamSoft:#B9BBB8;--creamDim:#8A8F94;--gold:#C8B98F;--pink:#9FB0C2;--blue:#9FB0C2;--brick:#6E8094;--brickDeep:#56636F;--purple:#4A5664;color-scheme:dark}
html[data-theme=night] body{background:var(--navy)}
html[data-theme=night] .topbar{background:var(--navyDeep)}
html[data-theme=night] .card{background:var(--navyCard);box-shadow:none}
html[data-theme=night] .glance{background:linear-gradient(150deg,#2F363F,var(--navyCard));border-color:#4A5664}
html[data-theme=night] .tab.on{background:rgba(159,176,194,.14)}
html[data-theme=night] .filter.on{background:rgba(159,176,194,.16)}
html[data-theme=night] .gate-btn{background:rgba(159,176,194,.18)}
/* Day = Rachel's San Diego beach palette */
html[data-theme=day]{--navy:#FBF3E4;--navyDeep:#E6F4F5;--navyCard:#FFFDF8;--line:#E3D6BC;--cream:#1E3A45;--creamSoft:#4A6470;--creamDim:#7D8F96;--gold:#B7791F;--pink:#1F7A8C;--blue:#2A9DAA;--brick:#F28C6B;--brickDeep:#E07656;--purple:#E0A526;color-scheme:light}
html[data-theme=day] body{background:linear-gradient(180deg,#E6F4F5 0,var(--navy) 320px) fixed}
html[data-theme=day] .topbar{background:linear-gradient(180deg,#DDF0F2,#E9F5F4);border-bottom-color:#CFE6E9}
html[data-theme=day] .brand-sub{color:var(--brick)}
html[data-theme=day] .card{background:var(--navyCard);box-shadow:0 4px 14px rgba(31,122,140,.08)}
html[data-theme=day] .glance{background:linear-gradient(150deg,#FFF4E6,#FFFDF8 60%);border-color:#F2B9A0}
html[data-theme=day] .gl-kicker{color:var(--brickDeep)}
html[data-theme=day] .tab.on{background:rgba(42,157,170,.14)}
html[data-theme=day] .filter.on{background:rgba(42,157,170,.12)}
html[data-theme=day] .gate-btn{background:rgba(42,157,170,.15)}
html[data-theme=day] .driver,html[data-theme=day] .box{color:#fff}
html[data-theme=day] .sun{background:#F4C95D;box-shadow:0 0 8px #F4C95D}
html[data-theme=day] .side{background:#EEF7F6}
/* Chat — Anna's place, day variant (light sage / amber) */
html[data-theme=day] .chat,html[data-theme=day] .chat-pick{--warmText:#2F3A2E;--slate:#F4F1EA;--slateLine:#E0D9CA;--amber:#B7791F}
html[data-theme=day] .chat{background:radial-gradient(90% 40% at 85% 0,rgba(244,201,93,.18),transparent 70%),#FBF8F1;border-color:#E6DFCF}
html[data-theme=day] .chat .msg.mine .bub{background:#EEF2F4}
html[data-theme=day] .chat .a-anna .bub{background:linear-gradient(160deg,#E5EFDF,#DCE9D5);border-color:#B5CCAD;box-shadow:0 0 14px rgba(244,201,93,.18)}
html[data-theme=day] .chat .a-anna .who{color:#4F6E48}
html[data-theme=day] .chat .a-nick .who{color:#5A6B7D}html[data-theme=day] .chat .a-rachel .who{color:#1F7A8C}html[data-theme=day] .chat .a-penelope .who{color:#7D5BB5}
html[data-theme=day] .chat .ts{color:#8A8C86}
html[data-theme=day] .chat .chat-me{color:#4A6470}
html[data-theme=day] .chat .chat-form textarea{background:#fff}
html[data-theme=day] .chat .chat-form button{background:#DCE9D5;border-color:#9DBB97;color:#2F3A2E}
html[data-theme=day] .tab-pen:not(.on) .short,html[data-theme=day] .tab-pen:not(.on) .long{color:#B5487A}
html[data-theme=day] .tab-rachel:not(.on) .short,html[data-theme=day] .tab-rachel:not(.on) .long{color:#1F7A8C}
html[data-theme=day] .tab-nick:not(.on) .short,html[data-theme=day] .tab-nick:not(.on) .long{color:#4E5D6E}
html[data-theme=night] .tab-pen:not(.on) .short,html[data-theme=night] .tab-pen:not(.on) .long{color:#C9A6BC}
html[data-theme=night] .tab-rachel:not(.on) .short,html[data-theme=night] .tab-rachel:not(.on) .long{color:#8EC3C7}
html[data-theme=night] .tab-nick:not(.on) .short,html[data-theme=night] .tab-nick:not(.on) .long{color:#9FB0C2}
html[data-theme=day] .chat .chat-form{border-top-color:#E6DFCF}
html[data-theme=night] .fab{background:linear-gradient(135deg,#3E4A56,#34404B);border-color:#6E8094;color:#E4E2DC;box-shadow:0 6px 16px rgba(0,0,0,.35)}
html[data-theme=night] .fab span{background:#4A5664;color:#E4E2DC}
html[data-theme=day] .fab{background:linear-gradient(135deg,#7FD1D8,#F6D99A);border-color:#fff;color:#1E3A45;box-shadow:0 6px 16px rgba(31,122,140,.25)}
html[data-theme=day] .fab span{color:#1F7A8C}
/* keep Rachel's and Nick's own card looks in both modes */
html[data-theme] .rachel .card{background:#FFFDF8;border:1px solid #E3D6BC;box-shadow:0 4px 14px rgba(31,122,140,.10);color:#1E3A45}
html[data-theme] .nick .card{background:#2A2F36;border:1px solid #3A4049;box-shadow:none}
