:root{--bg:#f3f5f8;--card:#fff;--ink:#17202b;--mute:#5d6b7a;--line:#e1e6ec;--red:#c62828;--redbg:#fdecec;--amber:#b26a00;--amberbg:#fff4e0;--ok:#2e7d32;--okbg:#e8f5e9;--brand:#1f3a5f}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.4 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;-webkit-text-size-adjust:100%}
.top{position:sticky;top:0;z-index:5;display:flex;justify-content:space-between;align-items:center;gap:8px;padding:calc(env(safe-area-inset-top) + 10px) 14px 10px;background:#000;color:#fff}
.top h1{font-size:19px;margin:0}
.sub{font-size:13px;opacity:.85}
button{font:inherit;cursor:pointer}
.ghost{background:rgba(255,255,255,.15);color:#fff;border:1px solid rgba(255,255,255,.4);border-radius:18px;padding:6px 12px;font-size:14px}
.summary{display:flex;gap:8px;padding:10px 14px 0;flex-wrap:wrap}
.pill{border-radius:14px;padding:4px 10px;font-size:13px;font-weight:600}
.pill.red{background:var(--redbg);color:var(--red)}.pill.amber{background:var(--amberbg);color:var(--amber)}.pill.normal{background:#e9eef5;color:var(--mute)}
.tabs{display:flex;gap:4px;padding:10px 10px 0;overflow-x:auto;position:sticky;top:58px;z-index:4;background:var(--bg)}
.tabs button{flex:1 0 auto;border:0;background:#e3e8ef;color:var(--ink);border-radius:10px 10px 0 0;padding:9px 12px;font-size:14px}
.tabs button.active{background:var(--card);font-weight:700;box-shadow:0 -2px 0 var(--brand) inset}
main{padding:10px 10px 90px;max-width:760px;margin:0 auto}
.card{background:var(--card);border:1px solid var(--line);border-left:6px solid #c8d1dc;border-radius:12px;margin:0 0 10px;overflow:hidden}
.card.red{border-left-color:var(--red)}.card.amber{border-left-color:var(--amber)}.card.done{opacity:.55}
.card-head{display:flex;align-items:flex-start;gap:10px;padding:12px;width:100%;background:none;border:0;text-align:left;color:inherit}
.card-head .t{flex:1;min-width:0}
.title{font-weight:700;font-size:16px}
.meta{font-size:13px;color:var(--mute);margin-top:2px}
.badge{display:inline-block;font-size:11px;font-weight:700;border-radius:6px;padding:2px 6px;margin:4px 4px 0 0;text-transform:uppercase;letter-spacing:.02em}
.badge.red{background:var(--redbg);color:var(--red)}.badge.amber{background:var(--amberbg);color:var(--amber)}.badge.gray{background:#eef1f5;color:var(--mute)}.badge.ok{background:var(--okbg);color:var(--ok)}
.chev{color:var(--mute);font-size:18px;transition:transform .15s}
.card.open .chev{transform:rotate(90deg)}
.details{display:none;padding:0 12px 12px;border-top:1px solid var(--line)}
.card.open .details{display:block}
.kv{font-size:14px;margin:8px 0 0}.kv b{color:var(--mute);font-weight:600}
.task{display:flex;gap:10px;align-items:flex-start;padding:10px 0;border-bottom:1px solid var(--line)}
.task:last-child{border-bottom:0}
.task input{width:22px;height:22px;margin-top:1px;flex:0 0 auto;accent-color:var(--brand)}
.task .tt{flex:1}
.task.done .ttl{text-decoration:line-through;color:var(--mute)}
.ttl{font-size:15px}
.note{font-size:13px;color:var(--mute);margin-top:2px}
.dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:6px;background:#b8c2ce}
.dot.red{background:var(--red)}.dot.amber{background:var(--amber)}
h2.day{font-size:15px;margin:16px 4px 8px;color:var(--brand)}
h2.day.red{color:var(--red)}
.empty{color:var(--mute);font-size:14px;padding:6px 4px}
.foot{position:fixed;bottom:0;left:0;right:0;display:flex;justify-content:space-between;gap:8px;align-items:center;padding:10px 14px calc(env(safe-area-inset-bottom) + 10px);background:#fff;border-top:1px solid var(--line);font-size:12px;color:var(--mute)}
.toggle{display:flex;gap:6px;align-items:center;font-size:14px;color:var(--ink)}
.banner{background:var(--amberbg);color:#6b4200;border-radius:10px;padding:10px 12px;font-size:13px;margin:0 0 10px}

.sync{font-size:12px;margin-left:6px}.sync.ok{color:#2e7d32}.sync.off{color:#c62828;font-weight:600}
.mynote{display:block;width:100%;box-sizing:border-box;margin-top:6px;padding:6px 8px;font:inherit;font-size:14px;border:1px solid #ccc;border-radius:6px;resize:vertical;background:#fffef5}
.mynote:placeholder-shown{background:transparent;border-style:dashed;color:#888}

.notepad{margin:10px 12px;padding:10px 12px}
.np-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:6px}.np-hint{font-size:12px;color:#888}
#npForm{display:flex;gap:8px;align-items:flex-end}
#npText{flex:1;box-sizing:border-box;padding:8px;font:inherit;font-size:16px;border:1px solid #ccc;border-radius:6px;resize:vertical;min-height:44px}
#npSave{padding:10px 14px;border:0;border-radius:6px;background:#1f3a5f;color:#fff;font-weight:600;font-size:15px}
.np-item{border-top:1px solid #eee;padding:8px 0}.np-text{white-space:normal;word-break:break-word}
.np-meta{font-size:12px;color:#888;margin-top:2px}.np-del{border:0;background:none;color:#c62828;font-size:12px;padding:0 0 0 8px}

.np-who{display:flex;align-items:center;gap:8px;margin-bottom:6px;font-size:14px}
#npName{flex:1;max-width:220px;padding:6px 8px;font:inherit;font-size:16px;border:1px solid #ccc;border-radius:6px}
#npName.need{border-color:#c62828;background:#fff3f3}
.np-author{display:inline-block;font-size:12px;font-weight:700;color:#fff;background:#1f3a5f;border-radius:10px;padding:1px 8px;margin-bottom:3px}
.ph-strip{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 2px;align-items:center}
.ph-thumb{padding:0;border:1px solid #ddd;border-radius:6px;overflow:hidden;width:64px;height:64px;background:#eee}
.ph-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.ph-add{border:1px dashed #999;background:#fafafa;border-radius:6px;padding:8px 10px;font-size:13px;color:#1f3a5f}
.ph-msg{display:none;position:fixed;left:50%;bottom:20px;transform:translateX(-50%);background:#1f3a5f;color:#fff;padding:10px 14px;border-radius:8px;z-index:50;font-size:14px}
.lightbox{display:none;position:fixed;inset:0;background:rgba(0,0,0,.92);z-index:100;flex-direction:column;align-items:center;justify-content:center;padding:env(safe-area-inset-top) 8px env(safe-area-inset-bottom)}
.lightbox img{max-width:100%;max-height:82vh;object-fit:contain}
.lb-bar{display:flex;justify-content:space-between;gap:12px;width:100%;max-width:900px;color:#ddd;font-size:14px;padding:10px 4px;align-items:center}
.lb-bar button{background:#333;color:#fff;border:0;border-radius:6px;padding:8px 12px;font-size:14px}#lbDel{background:#8b1e1e}

.ai-rec{margin:0 12px 10px;padding:8px 10px;background:#eef4ff;border-left:3px solid #3b6fd8;border-radius:6px;font-size:14px;line-height:1.35}
.ai-rec b{font-size:12px;color:#2a4f9e;text-transform:uppercase;letter-spacing:.02em}.ai-auto{font-size:11px;color:#7a8bb0}
.review{padding:10px 12px;margin-bottom:10px;border-left:4px solid #3b6fd8}.rv-head{display:flex;justify-content:space-between}
.rv-sum{margin:6px 0}.rv-sec ul{margin:4px 0 8px 18px;padding:0}.rv-sec li{margin:2px 0}
.np-ack{font-size:12px;color:#2a4f9e;background:#eef4ff;border-radius:8px;padding:4px 8px;margin-top:4px;display:inline-block}

/* manual projects + completed */
.pj-bar{display:flex;justify-content:space-between;align-items:center;gap:8px;margin:2px 2px 10px}
.pj-add{border:0;border-radius:20px;background:var(--brand);color:#fff;font-weight:700;font-size:15px;padding:10px 16px;box-shadow:0 1px 3px rgba(0,0,0,.2)}
.pj-actions{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0 2px}
.pj-btn{border:1px solid #c8d1dc;background:#fff;border-radius:8px;padding:7px 10px;font-size:13px;color:var(--brand)}
.pj-btn.ok{border-color:#9ccc9f;background:var(--okbg);color:var(--ok);font-weight:600}.pj-btn.del{color:var(--red);border-color:#f0b9b9}
.badge.added{background:#1f3a5f;color:#fff;text-transform:none}.badge.sch{background:#e8f0fe;color:#2a4f9e;text-transform:none}
.sched-btn{border:0;background:none;color:#2a4f9e;font-size:12px;padding:2px 4px;margin-top:4px}
.done-sec{border-left-color:var(--ok);margin-top:18px}.cp-item{border-top:1px solid var(--line);padding:10px 0}.cp-name{font-weight:600}
.card.flash{box-shadow:0 0 0 3px #3b6fd8}
/* modals */
body.modal-open{overflow:hidden}
.modal{display:none;position:fixed;inset:0;z-index:120;background:rgba(15,25,40,.55);align-items:flex-start;justify-content:center;overflow-y:auto;padding:calc(env(safe-area-inset-top) + 12px) 10px 20px}
.modal-box{background:#fff;border-radius:14px;width:100%;max-width:560px;padding:14px 16px;box-shadow:0 8px 30px rgba(0,0,0,.3)}
.modal-box.small{max-width:420px}.modal-box h2{margin:0 0 8px;font-size:18px;color:var(--brand)}
.fl{display:block;font-size:13px;font-weight:600;color:var(--mute);margin:8px 0 0;flex:1}
.fl input[type=text],.fl input[type=date],.fl input[type=time],.fl textarea,.fl select{display:block;width:100%;margin-top:3px;padding:9px 10px;font:inherit;font-size:16px;color:var(--ink);border:1px solid #c8d1dc;border-radius:8px;background:#fff}
.fl.chk{display:flex;align-items:center;gap:6px;padding-top:22px;flex:0 0 auto}.fl.chk input{width:20px;height:20px}
.fl-row{display:flex;gap:10px}.fl-hint{font-size:12px;color:var(--mute);margin-top:6px}.fl-err{color:var(--red);font-size:14px;font-weight:600;min-height:4px;margin-top:6px}
.modal-btns{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}
.btn1{border:0;border-radius:8px;background:var(--brand);color:#fff;font-weight:700;padding:10px 16px}.btn2{border:1px solid #c8d1dc;border-radius:8px;background:#fff;padding:10px 14px}.btn2.danger{color:var(--red);border-color:#f0b9b9;margin-right:auto}
/* calendar */
body.wide main{max-width:1280px}
.cal-bar{display:flex;justify-content:space-between;align-items:center;gap:8px;margin:0 0 8px;flex-wrap:wrap}
.seg{display:inline-flex;border:1px solid #c8d1dc;border-radius:10px;overflow:hidden}.seg button{border:0;background:#fff;padding:8px 14px;font-size:14px}.seg button.on{background:var(--brand);color:#fff;font-weight:700}
.cal-nav{display:inline-flex;gap:4px}.cal-nav button{border:1px solid #c8d1dc;background:#fff;border-radius:8px;padding:7px 12px;font-size:15px;min-width:40px}
.cal-bar input[type=date]{padding:7px 8px;font:inherit;font-size:15px;border:1px solid #c8d1dc;border-radius:8px}
.cal-filters{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center;font-size:13px;margin:0 0 6px}.cal-filters select{max-width:220px;padding:6px;font:inherit;font-size:14px;border:1px solid #c8d1dc;border-radius:8px}
.cal-filters label{display:flex;gap:4px;align-items:center}
.cal-head{font-size:17px;margin:8px 2px;color:var(--brand)}.cal-count{font-size:13px;font-weight:600;color:var(--mute);margin-left:4px}
.cal-chips{display:flex;gap:6px;align-items:center;margin:0 0 8px;flex-wrap:wrap}.chip{border:1px dashed #9aa8b8;background:#fff;border-radius:16px;padding:5px 10px;font-size:13px;color:var(--brand)}
.cal-group{background:#fff;border:1px solid var(--line);border-radius:10px;margin:0 0 8px;overflow:hidden}
.cal-gh{background:#eef2f7;padding:5px 10px;font-size:13px;font-weight:700;color:var(--brand)}.cal-gc{float:right;color:var(--mute);font-weight:600}
.cal-row{display:flex;align-items:flex-start;gap:8px;padding:7px 10px;border-top:1px solid #eef1f5;border-left:4px solid transparent;cursor:pointer;min-height:44px}
.cal-row:first-of-type{border-top:0}.cal-row.tk.red{border-left-color:var(--red)}.cal-row.tk.amber{border-left-color:var(--amber)}
.cal-row input{width:20px;height:20px;margin:1px 0 0;flex:0 0 auto;accent-color:var(--brand)}
.cal-time{flex:0 0 64px;font-size:12px;font-weight:700;color:var(--mute);padding-top:2px;white-space:nowrap}
.cal-main{flex:1;min-width:0}.cal-title{font-size:14px;line-height:1.3}.cal-sub{font-size:12px;color:var(--mute);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cal-row.done .cal-title{text-decoration:line-through;color:var(--mute)}.cal-sched{border:0;background:none;font-size:16px;padding:0 2px}
.cal-row.ev{border-left-color:#e07b00;background:#fff8ef}.ev-label{color:#b25f00;font-weight:700}
.cal-row.gc{border-left-color:var(--gc,#7986cb);background:#f7f8fc}.gc-label{color:#4a5a8a;font-weight:700}
.gc-desc{display:none;font-size:12px;color:var(--mute);margin-top:3px;white-space:pre-wrap}.cal-row.gc.open .gc-desc{display:block}
.cal-row .np-author{flex:0 0 auto;margin:0}.sch{color:#2a4f9e}
.cal-over{border-left-color:var(--red)}.cal-over .details{padding:0}
.cal-week{display:grid;grid-template-columns:1fr;gap:8px}
.wk-day{background:#fff;border:1px solid var(--line);border-radius:10px;overflow:hidden;min-width:0}.wk-day.today{border-color:#3b6fd8;box-shadow:0 0 0 1px #3b6fd8}
.wk-head{display:flex;align-items:center;gap:6px;background:#eef2f7;padding:4px 6px}.wk-open{flex:1;text-align:left;border:0;background:none;font-weight:700;color:var(--brand);font-size:14px;padding:4px}
.cnt{font-size:12px;font-weight:700;background:#dbe3ee;border-radius:10px;padding:1px 7px;color:var(--brand)}.cnt:empty{display:none}.cnt.red{background:var(--redbg);color:var(--red)}
.wk-plus,.mo-plus{border:1px solid #c8d1dc;background:#fff;border-radius:6px;width:28px;height:26px;padding:0;font-size:16px;line-height:1;color:var(--brand)}
.wk-day .cal-row{padding:5px 6px;min-height:0;gap:5px}.wk-day .cal-time{flex-basis:auto;font-size:11px}.wk-day .cal-title{font-size:13px;white-space:normal;overflow-wrap:anywhere;word-break:break-word}.wk-day .cal-row .np-author{display:none}
.wk-day .cal-row input{width:16px;height:16px}
@media (min-width:900px){.cal-week{grid-template-columns:repeat(7,minmax(0,1fr))}.wk-day .cal-row{flex-wrap:wrap}.wk-day .cal-main{flex-basis:100%}.wk-day .cal-time{order:-1}}
.mo-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px}
.mo-dow{font-size:11px;font-weight:700;color:var(--mute);text-align:center;padding:2px 0}
.mo-cell{background:#fff;border:1px solid var(--line);border-radius:8px;min-height:64px;padding:3px;cursor:pointer;display:flex;flex-direction:column}
.mo-cell.other{opacity:.45}.mo-cell.today{border-color:#3b6fd8;box-shadow:0 0 0 1px #3b6fd8}
.mo-top{display:flex;justify-content:space-between;align-items:center}.mo-num{font-size:13px;font-weight:700}.mo-plus{width:22px;height:20px;font-size:14px;opacity:.7}
.mo-badges{display:flex;flex-wrap:wrap;gap:2px;margin-top:3px}
.cb{display:inline-block;font-size:11px;font-weight:700;border-radius:8px;padding:1px 6px;background:#dbe3ee;color:var(--brand)}.cb.red{background:var(--red);color:#fff}.cb.ok{background:var(--okbg);color:var(--ok)}.cb.ev{background:#ffe2bf;color:#9a4f00}.cb.gc{background:#e3e6f5;color:#4a5a8a}
.mo-legend{font-size:12px;color:var(--mute);margin:8px 2px;line-height:1.9}
@media (min-width:700px){.mo-cell{min-height:90px}.mo-num{font-size:14px}}

/* fetch email + info notes */
.fetch-box{margin:10px 12px 0}
.fetch-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.fetch-btn{border:0;border-radius:20px;background:#0b6b3a;color:#fff;font-weight:700;font-size:15px;padding:9px 16px;display:inline-flex;align-items:center;gap:8px}
.fetch-btn:disabled{background:#4f7f66;cursor:default}
.spin{width:14px;height:14px;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;display:inline-block;animation:sp 0.9s linear infinite}@keyframes sp{to{transform:rotate(360deg)}}
.ai-info{font-size:12px;color:var(--mute);margin:6px 2px 0;line-height:1.35}
.fetch-panel{background:#fff;border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin-top:8px;font-size:14px}
.fetch-panel ul{margin:4px 0 0 18px;padding:0}.fetch-panel li{margin:3px 0}.fp-head{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap}.fp-head .np-del{margin-left:auto}
.fp-err{color:var(--red);font-weight:600;margin-bottom:6px}.fp-warn{color:#6b4200}
.badge.email{background:#e6f4ea;color:#0b6b3a;text-transform:none}
.np-jump{font-size:12px;color:var(--mute);margin:4px 0 6px}.np-jump button{border:0;background:#eef2f7;border-radius:10px;padding:3px 9px;font-size:12px;color:var(--brand)}
#npList{max-height:40vh;overflow-y:auto}#npList.np-all{max-height:50vh;border:1px solid var(--line);border-radius:8px;padding:0 8px}
.nl-more{border:0;background:none;color:#2a4f9e;font-size:13px;font-weight:600;padding:6px 0}
/* notes lists */
.nl{margin-top:6px;background:#fffef7;border:1px solid #eee6c8;border-radius:8px;padding:6px 8px}
.nl-head{font-size:12px;font-weight:700;color:#6b5a1e}.nl-info{font-weight:400;color:var(--mute);font-size:11px}
.nl-item{border-top:1px solid #f0ead2;padding:5px 0;font-size:14px}.nl-item:first-of-type{border-top:0}.nl-text{word-break:break-word}
.nl-meta{font-size:11px;color:#888}
.nl-add{display:flex;gap:6px;margin-top:4px}.nl-add input{flex:1;min-width:0;padding:7px 8px;font:inherit;font-size:16px;border:1px solid #ccc;border-radius:6px}.nl-add button{border:0;border-radius:6px;background:var(--brand);color:#fff;font-weight:600;padding:0 14px}

.sync-b{flex:0 0 auto;font-size:11px;font-weight:700;border-radius:8px;padding:2px 6px;align-self:center;white-space:nowrap}
.sync-b.ok{background:var(--okbg);color:var(--ok)}.sync-b.pend{background:#eef2f7;color:var(--mute)}
.sync-b.err{background:var(--redbg);color:var(--red);white-space:normal;max-width:220px}.sync-b.err button{border:0;background:var(--red);color:#fff;border-radius:6px;font-size:11px;padding:2px 6px;margin-left:4px}
.sync-b.off{border:1px dashed #9aa8b8;background:#fff;color:var(--brand)}

.cal-sub{overflow-wrap:anywhere}
.wk-day .cal-sub{white-space:normal;word-break:break-word;font-size:11px}
.wk-day.past{background:#eceef1}.wk-day.past .wk-head{background:#e2e5ea}.wk-day.past .wk-open{color:#8a94a1}.wk-day.past .cal-row,.wk-day.past .empty{opacity:.5}
.wk-day.today{border:2px solid #3b6fd8;box-shadow:none}.today-lbl{display:inline-block;background:#3b6fd8;color:#fff;font-size:10px;font-weight:700;border-radius:8px;padding:1px 6px;margin-left:4px;vertical-align:middle}
.mo-cell.past{background:#eceef1}.mo-cell.past .mo-num,.mo-cell.past .mo-badges{opacity:.5}

.fetch-cost{font-size:12px;color:#8a5a00;margin:4px 2px 0;font-weight:600}

.np-route{font-size:13px;margin-top:4px;color:var(--ink)}.np-route button{border:1px solid #c8d1dc;background:#fff;border-radius:8px;padding:3px 12px;font-size:13px;margin-left:4px;color:var(--brand);font-weight:600}
.np-route.ok{color:var(--ok);font-weight:600;font-size:12px}.np-route.off{color:var(--mute);font-size:12px}

.app-ver{margin-left:6px;font-size:11px;font-weight:400;color:#9ca3af;white-space:nowrap}

.bc-banner{position:sticky;top:58px;z-index:6;margin:8px 10px 0;display:flex;flex-direction:column;gap:6px}
.bc-item{background:#fff7d6;border:2px solid #f0b400;border-radius:12px;padding:10px 12px;box-shadow:0 4px 14px rgba(0,0,0,.18)}
.bc-item.note{background:#e8f1ff;border-color:#3b6fd8}
.bc-text{font-weight:600;white-space:pre-wrap;word-break:break-word}
.bc-meta{font-size:12px;color:#555;margin-top:2px}
.bc-btns{display:flex;gap:8px;margin-top:8px}
.bc-btns button,.bc-all,.bc-perm{border:1px solid #bbb;background:#fff;border-radius:8px;padding:6px 12px;font-size:14px}
.bc-btns button[data-bc-ok]{background:#111;color:#fff;border-color:#111}
.bc-all,.bc-perm{align-self:flex-start}

#npProj,.nl-add select{font:inherit;font-size:16px;padding:6px 8px;border:1px solid #ccc;border-radius:6px;max-width:100%;flex:1;min-height:40px;background:#fff}
.nl-add-row{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}
.nl-name{flex:0 1 160px;min-width:110px;font:inherit;font-size:16px;padding:6px 8px;border:1px solid #ccc;border-radius:6px}
.nl-name.need{border-color:#c62828;background:#fff3f3}
.np-edit{border:1px solid #cfd8e3;background:#f5f8fc;border-radius:8px;padding:6px 10px;font-size:14px;min-height:36px;cursor:pointer}
[data-ed-open].np-text,[data-ed-open].nl-text{cursor:text}
.ed-tag{display:inline-block;font-size:11px;color:#666;background:#eef1f5;border-radius:6px;padding:1px 6px;margin-left:4px;vertical-align:middle}
.np-item,.nl-item{position:relative}
.ned{margin-top:6px;transform-origin:top center}
.ned.pop{animation:nedPop .32s cubic-bezier(.34,1.56,.64,1)}
@keyframes nedPop{0%{transform:scale(.94) rotateX(18deg);opacity:0}70%{transform:scale(1.02) rotateX(0);opacity:1}100%{transform:scale(1)}}
.ned textarea{width:100%;box-sizing:border-box;min-height:64px;font:inherit;font-size:16px;line-height:1.4;padding:10px;border:2px solid #3b6fd8;border-radius:10px;resize:none;overflow:hidden;box-shadow:0 0 0 4px rgba(59,111,216,.12)}
.ned-err{color:#c62828;font-size:14px;font-weight:600;min-height:2px;margin-top:4px}
.ned-btns{display:flex;justify-content:flex-end;gap:10px;margin-top:8px}
.ned-btns button{min-height:44px;min-width:96px;font-size:16px;border-radius:10px;padding:8px 16px;cursor:pointer}
.ned-cancel{background:#fff;border:1px solid #bbb;color:#333}
.ned-save{background:#16a34a;border:1px solid #15803d;color:#fff;font-weight:700}
.ned-save:active,.ned-cancel:active{transform:scale(.96)}
.saved{animation:nedFlash 1s ease-out}
@keyframes nedFlash{0%{background:#dcfce7}100%{background:transparent}}
.ned-burst{position:fixed;z-index:200;width:0;height:0;pointer-events:none}
.ned-check{position:absolute;left:-14px;top:-14px;width:28px;height:28px;border-radius:50%;background:#16a34a;color:#fff;font-weight:700;display:flex;align-items:center;justify-content:center;animation:nedCheck .9s ease-out forwards}
@keyframes nedCheck{0%{transform:scale(0)}30%{transform:scale(1.25)}60%{transform:scale(1)}100%{transform:scale(1);opacity:0}}
.ned-burst i{position:absolute;left:-3px;top:-3px;width:6px;height:6px;border-radius:50%;background:#f59e0b;animation:nedPuff .8s ease-out forwards}
.ned-burst i:nth-child(odd){background:#3b6fd8}.ned-burst i:nth-child(3n){background:#16a34a}
.ned-burst i:nth-child(2){--dx:26px;--dy:-18px}.ned-burst i:nth-child(3){--dx:-26px;--dy:-16px}.ned-burst i:nth-child(4){--dx:20px;--dy:22px}.ned-burst i:nth-child(5){--dx:-22px;--dy:20px}
.ned-burst i:nth-child(6){--dx:0;--dy:-30px}.ned-burst i:nth-child(7){--dx:32px;--dy:2px}.ned-burst i:nth-child(8){--dx:-32px;--dy:0}.ned-burst i:nth-child(9){--dx:4px;--dy:30px}
@keyframes nedPuff{0%{transform:translate(0,0) scale(1);opacity:1}100%{transform:translate(var(--dx),var(--dy)) scale(.3);opacity:0}}
@media (prefers-reduced-motion: reduce){.ned.pop,.saved,.ned-check,.ned-burst i{animation:none}}
#notifyBtn{white-space:nowrap;min-height:40px}
@media (max-width:420px){.top h1{font-size:17px}}

.snack{position:fixed;left:50%;bottom:calc(env(safe-area-inset-bottom) + 16px);transform:translateX(-50%);z-index:300;display:flex;align-items:center;gap:6px;background:#111;color:#fff;border-radius:12px;padding:6px 6px 6px 16px;box-shadow:0 6px 24px rgba(0,0,0,.35);font-size:16px;max-width:calc(100vw - 24px)}
.snack.show{animation:snackIn .25s ease-out}
@keyframes snackIn{from{transform:translate(-50%,20px);opacity:0}to{transform:translate(-50%,0);opacity:1}}
#snackUndo{background:transparent;color:#facc15;border:0;font-weight:800;font-size:16px;letter-spacing:.5px;min-height:48px;min-width:88px;padding:0 14px;border-radius:10px;cursor:pointer}
#snackUndo:active{background:rgba(255,255,255,.12)}
.undo-link{background:none;border:0;color:#2563eb;text-decoration:underline;font-size:14px;padding:6px 8px;min-height:32px;cursor:pointer;position:relative;z-index:1}
.ord-cal-row{margin-top:8px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.ord-cal{border:1px solid #cfd8e3;background:#f5f8fc;border-radius:10px;padding:8px 14px;font-size:15px;min-height:44px;cursor:pointer}
.ord-on{font-size:14px;font-weight:600;color:#0b8043}
.card.done .ord-cal-row,.card.done .undo-link{opacity:1}

.sue-hint{font-size:13px;color:#555;margin:4px 0 6px}
.sue-thread{margin:6px 0 2px 18px;border-left:3px solid #a78bfa;padding-left:10px;display:flex;flex-direction:column;gap:6px}
.sue-bubble{background:#f3efff;border:1px solid #ddd3ff;border-radius:4px 14px 14px 14px;padding:8px 10px}
.sue-who{font-size:12px;font-weight:700;color:#6d28d9}.sue-at{font-weight:400;color:#7c6aa8;margin-left:4px}
.sue-text{font-size:15px;white-space:normal;word-break:break-word;margin-top:2px}
.sue-wait{font-size:14px;color:#6d28d9;font-style:italic;animation:suePulse 1.4s ease-in-out infinite}
@keyframes suePulse{50%{opacity:.45}}
.sue-err{font-size:13px;color:#c62828}
.bc-item.sue{background:#f3efff;border-color:#8b5cf6}
.snack[hidden]{display:none!important}

.fin-note{margin:8px 10px 0}
.fin-toggle{width:100%;text-align:left;background:#f1f5f9;border:1px solid #dbe3ec;border-radius:10px;padding:8px 12px;font-size:14px;color:#334155;line-height:1.35;cursor:pointer;min-height:40px}
.fin-note.collapsed .fin-toggle{font-size:13px;padding:6px 12px}

/* Schedule tab */
.sch-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:6px 0 8px}
.sch-arrow{border:1px solid var(--line);background:var(--card);border-radius:12px;font-size:22px;min-width:52px;min-height:52px;color:var(--brand)}
.sch-date{text-align:center;flex:1}.sch-dow{font-size:22px;font-weight:800;color:var(--brand)}.sch-md{font-size:15px;color:var(--mute)}
.sch-tools{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:8px}.sch-tools input[type=date]{font-size:15px;padding:7px;border:1px solid var(--line);border-radius:8px}
.sch-tools [data-schcopyall]{margin-left:auto}
.sch-toggle{display:flex;gap:6px;margin:0 0 10px}.sch-toggle button{flex:1;border:1px solid var(--line);background:#e9eef5;border-radius:10px;padding:10px 6px;font-size:14px;color:var(--ink)}
.sch-toggle button.active{background:var(--brand);color:#fff;font-weight:700;border-color:var(--brand)}
.sch-person{padding:10px 12px}.sch-ph{display:flex;justify-content:space-between;align-items:center;gap:8px}.sch-name{font-size:18px}
.sch-pbtns{display:flex;gap:6px}.sch-pbtns .btn2,.sch-tools .btn2{padding:7px 10px;font-size:14px}.btn2.ok{background:var(--okbg);color:var(--ok)}
.sch-jobs{margin:8px 0 0;padding-left:24px}.sch-jobs li{padding:6px 0;border-bottom:1px solid var(--line)}.sch-jobs li:last-child{border-bottom:0}.sch-jobs li.nonum{list-style:disc}
.sch-addr b{font-size:16px}.sch-task{font-size:15px}.sch-instr{font-size:13px;color:var(--mute);margin-top:2px}
.sch-notes{font-size:13px;color:var(--mute);margin-top:6px;border-top:1px dashed var(--line);padding-top:6px}
.sch-flag{background:#ffe08a;color:#7a1b00;font-weight:700;padding:0 2px;border-radius:3px}
.sch-gen{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:8px 10px;font-size:14px;margin-bottom:10px}
.sch-foot{font-size:13px;color:var(--mute);margin:12px 4px 20px}.sch-raw summary{cursor:pointer;margin-top:6px;color:var(--brand)}
.sch-raw pre{white-space:pre-wrap;word-break:break-word;background:var(--card);border:1px solid var(--line);border-radius:8px;padding:8px;font-size:12px;max-height:60vh;overflow:auto}
.sch-wo{padding:12px}.sch-wo-btns{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}
.sch-open{flex:1;display:block;text-align:center;background:var(--brand);color:#fff;font-weight:700;font-size:17px;padding:14px;border-radius:12px;text-decoration:none}
.sch-dl{display:flex;align-items:center;text-decoration:none;padding:0 16px}
.sch-pdf{width:100%;height:75vh;border:1px solid var(--line);border-radius:8px;margin-top:10px;background:#fff}
a.btn2{color:var(--ink)}.sch .empty{font-size:16px;padding:18px 6px;text-align:center}
.wo-tab .wo-title{font-size:18px;margin-top:6px}.wo-count{margin:6px 4px 0}.wo-more{display:block;width:100%;margin:14px 0 6px;padding:14px;font-size:16px}

.notify-wrap{display:flex;flex-direction:column;align-items:flex-end;flex-shrink:0}
.notify-hint{font-size:11px;color:#9ca3af;margin-top:3px;max-width:150px;text-align:right;line-height:1.2}

.sms-chips{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:8px;width:100%}
.sms-chip{font-size:13px;padding:5px 11px;border-radius:999px;border:1px solid #cbd5e1;background:#fff;color:#1e293b}
.sms-chip.on{background:#1e3a5f;color:#fff;border-color:#1e3a5f}
.sms-to{font-size:11px;color:#6b7280;flex-basis:100%}
.sch-pbtns{flex-wrap:wrap}
a.btn2[data-schtext]{text-decoration:none;color:inherit}

/* notes entry: stack rows so the note box is always full width */
.nl-add{flex-direction:column;align-items:stretch}
.nl-add-row{display:flex;gap:6px;width:100%;min-width:0}
.nl-add-row>input,.nl-add-row>select{flex:1 1 0;min-width:0;box-sizing:border-box;padding:7px 8px;font:inherit;font-size:16px;border:1px solid #ccc;border-radius:6px}
.nl-add-row>button{flex:0 0 auto;min-height:38px}
/* phone width: let task text column and dashboard note project picker shrink instead of overflowing */
.tt{min-width:0}
#npProj,.nl-add select{min-width:0}
.np-who>*{min-width:0}

/* V4: wide screens (iPad portrait/landscape, phone landscape). Phone portrait (<768px) unchanged. */
@media (min-width:768px){
  main,body.wide main{max-width:1180px;padding-left:20px;padding-right:20px}
  .top{padding-left:max(24px,env(safe-area-inset-left));padding-right:max(24px,env(safe-area-inset-right))}
  .summary,.tabs,.fin-note,.fetch-box,.notepad,.bc-banner{box-sizing:border-box;max-width:1140px;margin-left:auto;margin-right:auto}
  .summary,.tabs{padding-left:20px;padding-right:20px}
  .fin-note,.fetch-box,.notepad{width:calc(100% - 40px)}
  .tabs{overflow-x:visible;flex-wrap:nowrap}
  .tabs button{flex:1 1 0;min-width:0;padding:9px 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  main:has(> .card){display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-items:start}
  main:has(> .card) > *{min-width:0;margin-bottom:0}
  main:has(> .card) > :not(.card),main:has(> .card) > .card.open{grid-column:1/-1}
  .cal-week{grid-template-columns:repeat(2,minmax(0,1fr))}
  .mo-cell{min-height:90px}
  .nl,.notepad textarea,#npText{font-size:16px}
  .sch-pdf{height:80vh}
}
@media (min-width:1024px){
  .tabs button{font-size:15px;padding:10px 8px}
  .cal-week{grid-template-columns:repeat(7,minmax(0,1fr))}
}
/* short landscape screens (phone sideways): compact header, tabs not sticky-stacked */
@media (min-width:768px) and (max-height:500px){
  .top{position:static;padding-top:calc(env(safe-area-inset-top) + 4px);padding-bottom:4px}
  .top h1{font-size:16px}.top .sub,.notify-hint{font-size:11px}
  .tabs{top:0}
  .tabs button{font-size:13px;padding:6px 4px}
}

/* V5: Daily review and any other non-project card span the full width in the 2-column layout */
@media (min-width:768px){main:has(> .card) > .card.review,main:has(> .card) > .card:not([id^="card-"]):not([id^="pcard-"]){grid-column:1/-1}}

/* V6: tabs stick right under the header (height measured in app.js as --hdr-h) */
.tabs{top:var(--hdr-h,58px)}
@media (min-width:768px) and (max-height:500px){.tabs{top:0}}

/* V7: calendar note button + inline note editor */
.cal-nb{flex:0 0 auto;position:relative;border:1px solid #c8d1dc;background:#fff;border-radius:6px;font-size:14px;line-height:1;padding:3px 5px;margin:0 2px;min-width:30px;min-height:28px}
.cal-nb.on{background:#fff7d6;border-color:#f0b400}
.cal-nbc{position:absolute;top:-6px;right:-6px;background:var(--brand);color:#fff;border-radius:8px;font-size:10px;font-weight:700;padding:1px 4px;line-height:1.2}
.cal-nl{margin:2px 4px 8px;min-width:0}
.cal-nl .nl-add-row textarea{flex:1 1 0;min-width:0;box-sizing:border-box;padding:8px;font:inherit;font-size:16px;border:1px solid #ccc;border-radius:6px;resize:vertical;min-height:70px}
.cal-nl-cancel{margin-top:6px;border:1px solid #c8d1dc;background:#fff;border-radius:6px;padding:7px 14px;font-size:14px}

/* V8: calendar note editor as a centered overlay */
body.cal-ov-open{overflow:hidden}
.cal-ov{position:fixed;inset:0;z-index:50;background:rgba(0,0,0,.45);display:flex;align-items:flex-start;justify-content:center;padding:calc(env(safe-area-inset-top) + 24px) 12px 12px;box-sizing:border-box}
.cal-ovbox{width:90%;max-width:640px;max-height:calc(100dvh - 48px);overflow:auto;-webkit-overflow-scrolling:touch;background:#fff;border-radius:14px;box-shadow:0 10px 40px rgba(0,0,0,.35);padding:12px 14px 14px;box-sizing:border-box}
.cal-ovhead{display:flex;align-items:flex-start;gap:8px;margin-bottom:6px}
.cal-ovt{flex:1;min-width:0}.cal-ovt b{display:block;font-size:17px;overflow-wrap:anywhere}.cal-ovt span{font-size:13px;color:var(--mute)}
.cal-ovx{flex:0 0 auto;border:0;background:#eef2f7;border-radius:50%;width:36px;height:36px;font-size:18px}
.cal-ov .cal-nl{margin:0}
.cal-ov .nl-add-row{flex-wrap:wrap}
.cal-ov .nl-add-row>select{flex:1 1 100%}
.cal-ov .nl-add-row textarea{flex:1 1 100%;min-height:150px}
.cal-ov .nl-add-row>button{flex:1 1 auto;min-height:44px;font-size:16px}
.cal-ov .cal-nl-cancel{width:100%;min-height:44px;font-size:16px}
@media (max-width:767px){.cal-ov{padding:calc(env(safe-area-inset-top) + 6px) 6px 6px}.cal-ovbox{width:100%;max-width:none;max-height:calc(100dvh - 12px);min-height:70dvh}}

/* V10: calendar email pop-up (reuses the V8 overlay look) */
.cal-mailbtn{border:1px solid #c8d1dc;background:#fff;border-radius:18px;padding:7px 12px;font-size:14px;color:var(--brand);font-weight:600;margin-right:6px}
.cm-l{display:block;font-size:13px;font-weight:600;color:var(--mute);margin-top:8px}
.cm-l input,.cm-l textarea{display:block;width:100%;box-sizing:border-box;margin-top:3px;padding:8px;font:inherit;font-size:16px;color:var(--ink);border:1px solid #ccc;border-radius:6px}
.cm-l textarea{min-height:170px;resize:vertical}
.cm-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.cm-chips button{border:1px solid #c8d1dc;background:#eef2f7;border-radius:14px;padding:4px 10px;font-size:13px;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.cm-err{color:var(--red);font-size:13px;min-height:16px;margin-top:4px}
.cm-open{display:block;width:100%;min-height:46px;margin-top:4px;border:0;border-radius:8px;background:var(--brand);color:#fff;font-weight:700;font-size:16px}
.cm-hint{font-size:12px;color:var(--mute);margin-top:6px;text-align:center}

/* V11: email groups, CC/BCC, test toggle */
.cm-chips .cm-g{background:#e8f1ff;border-color:#3b6fd8;color:#1e3a8a;font-weight:600}
.cm-gon{margin-top:6px}.cm-gtag{display:inline-block;background:var(--okbg);color:var(--ok);font-size:12px;font-weight:700;border-radius:10px;padding:2px 8px}
.cm-test{display:flex;align-items:center;gap:8px;margin-top:10px;font-size:14px;font-weight:600;color:#8a5a00}.cm-test input{width:20px;height:20px}
.dash-mb{white-space:nowrap}
/* V14: Open in Mail + Send through Gmail side by side */
.cm-btns{display:flex;gap:8px}.cm-btns .cm-open{flex:1;min-width:0}
.cm-open.cm-gmail{background:#fff;color:var(--brand);border:2px solid var(--brand)}
.cm-open.cm-gmail:disabled{opacity:.6}
