:root{--bg:#060a11;--s1:#0c121c;--s2:#121b29;--ln:#1c2d42;--ln2:#2c4866;--tx:#f1f6fd;--tx2:#9db0c8;--acc:#2fc4ff;--on:#03111d;--glow:0 0 16px color-mix(in srgb,var(--acc) 50%,transparent);--soft:color-mix(in srgb,var(--acc) 16%,transparent);box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}
:root[data-theme=light]{--bg:#edf5fe;--s1:#fff;--s2:#e1eefb;--ln:#c2d7ee;--ln2:#97b8dc;--tx:#08121f;--tx2:#46607e;--acc:#0a86ff;--on:#fff;--glow:0 0 14px color-mix(in srgb,var(--acc) 35%,transparent)}
[hidden]{display:none!important}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{font:14px/1.45 Figtree,system-ui,sans-serif;background:var(--bg);color:var(--tx);overflow:hidden}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
button:focus-visible,input:focus-visible,[contenteditable]:focus-visible{outline:2px solid var(--acc);outline-offset:2px}
#app{display:flex;height:100%}
#rail{width:60px;background:var(--s1);border-right:1px solid var(--ln);display:flex;flex-direction:column;align-items:center;padding:12px 0;gap:6px;flex:none;z-index:30}
.rb{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;color:var(--tx2)}
.rb:hover{background:var(--s2)}.rb.on{background:var(--soft);color:var(--acc)}
.rb svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
#av{margin-top:auto;width:38px;height:38px;border-radius:50%;background:var(--acc);color:var(--on);font-weight:600}
#side{width:320px;background:var(--s1);border-right:1px solid var(--ln);display:flex;flex-direction:column;flex:none;overflow:hidden;transition:width .3s ease}
#side>*{min-width:319px}
#side.hide{width:0;border-right-width:0;box-shadow:none}
.lh{padding:16px 16px 12px;border-bottom:1px solid var(--ln)}
.lh h2{font:italic 400 20px Newsreader,Georgia,serif}
.bar{height:8px;border-radius:4px;background:var(--s2);margin:10px 0 8px;overflow:hidden}
.bar i{display:block;height:100%;background:var(--acc)}
.meta{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--tx2);gap:8px}
.meta input{width:48px;background:var(--s2);border:1px solid var(--ln);color:var(--tx);border-radius:6px;padding:2px 4px;text-align:center}
.pct{float:right;color:var(--acc);font-weight:600}
#tls{flex:1;overflow-y:auto;position:relative;padding-bottom:40px}
#axis{position:relative;padding:22px 0 0}
#axis::before{content:"";position:absolute;left:89px;top:30px;bottom:24px;width:2px;background:var(--ln2)}
.r{display:flex;align-items:center;min-height:30px;position:relative;cursor:pointer}
.r:hover{background:var(--s2)}
.l{width:84px;padding-right:18px;text-align:right;display:flex;flex-direction:column;line-height:1.15}
.l small{font-size:10px;color:var(--tx2)}
.rt{flex:1;padding-left:16px;color:var(--tx2);font-size:12px;display:flex;align-items:center;gap:6px}
.r::before{content:"";position:absolute;left:84px;top:50%;height:2px;width:12px;margin-top:-1px;background:var(--ln2)}
.r.y.op::before,.r.y:hover::before{background:var(--acc)}
.r.y .l b{font-size:14px}
.r.m,.r.w{min-height:28px}.r.m .l{font-size:12px}
.r.m::before{width:8px;left:86px}
.r.w{cursor:default}.r.w:hover{background:none}
.r.w::before{width:5px;height:5px;border-radius:50%;left:87px;margin-top:-2px}
.r.w .l{font-size:11px;color:var(--tx2)}
.chev{display:inline-block;transition:transform .2s}.op>.rt .chev{transform:rotate(90deg)}
.cnt{background:var(--soft);color:var(--acc);border-radius:9px;padding:0 6px;font-size:11px}
.fut{opacity:.38}
.days{display:grid;grid-template-columns:repeat(7,24px);gap:2px}
.d{height:24px;border-radius:6px;font-size:11px;display:grid;place-items:center;cursor:pointer;color:var(--tx2);position:relative}
.d.e{visibility:hidden}.d:hover{background:var(--s2);color:var(--tx)}
.d.t{border:1px solid var(--acc);color:var(--tx)}.d.h::after{content:"";position:absolute;bottom:2px;width:4px;height:4px;border-radius:50%;background:var(--acc)}
.d.s{background:var(--acc);color:var(--on)}.d.s::after{background:var(--on)}
.tl-top{display:flex;align-items:center;height:16px;margin-bottom:6px}
.tl-top .l{font:600 12px Figtree;color:var(--acc);flex-direction:row;justify-content:flex-end;padding-right:12px}
.dot{width:12px;height:12px;border-radius:50%;background:var(--acc);margin-left:0;box-shadow:0 0 0 4px var(--soft);position:relative;left:0}
.tl-top .dot{margin-left:0}
.tl-end{height:24px;position:relative}
.tl-end .arr{position:absolute;left:83px;top:0;border:7px solid transparent;border-top:10px solid var(--ln2);border-bottom:0}
.tl-end span{position:absolute;left:0;width:72px;text-align:right;top:2px;font-size:11px;color:var(--tx2)}
#main{flex:1;position:relative;display:flex;flex-direction:column;min-width:0}
#hd{padding:22px 32px 10px;display:flex;align-items:flex-end;gap:14px;flex-wrap:wrap}
#title{font:italic 400 38px/1.1 Newsreader,Georgia,serif;outline:none;min-width:120px;border-bottom:1px dashed transparent;cursor:text}
#title:hover{border-color:var(--ln2)}
.chip{font-size:12px;color:var(--tx2);display:flex;align-items:center;gap:6px;padding:3px 10px;border:1px solid var(--ln);border-radius:14px}
.chip i{width:7px;height:7px;border-radius:50%;background:var(--tx2)}
.chip.ok i{background:#4cc38a}.chip.pe i{background:#f0b24a}
#sc{flex:1;overflow-y:auto;padding:8px 24px 190px}
#st{position:relative;padding:28px 0 36px;max-width:760px}
#st::before{content:"";position:absolute;left:88px;top:12px;bottom:8px;width:2px;background:var(--ln2)}
.top{position:absolute;left:83px;top:6px;width:12px;height:12px;border-radius:50%;background:var(--acc);box-shadow:0 0 0 4px var(--soft)}
.bot{position:absolute;left:82px;bottom:0;border:7px solid transparent;border-top:10px solid var(--ln2);border-bottom:0}
.day{margin:14px 0 4px 112px;font-size:12px;color:var(--tx2)}
.note{display:grid;grid-template-columns:78px 22px 1fr;padding:9px 0;align-items:start}
.note .t{text-align:right;font-size:12px;color:var(--tx2);padding-top:6px;font-variant-numeric:tabular-nums}
.nd{width:10px;height:10px;border-radius:50%;background:var(--s1);border:2px solid var(--acc);margin:7px 0 0 6px;position:relative}
.body{padding-left:10px;min-width:0}
.wave{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.pl{width:30px;height:30px;border-radius:50%;background:var(--soft);color:var(--acc);font-size:11px;flex:none}
.bars{display:flex;align-items:center;gap:2px;height:34px;cursor:pointer}
.bars b{width:3px;border-radius:2px;background:var(--ln2);flex:none}.bars b.on{background:var(--acc)}
.wave small{color:var(--tx2);font-size:11px}
.tx{margin-top:2px;padding:6px 12px;background:var(--s1);border:1px solid var(--ln);border-radius:10px;max-width:520px;opacity:0;max-height:0;overflow:hidden;transition:opacity .15s,max-height .2s;font-size:13.5px}
.note:hover .tx,.note.show .tx{opacity:1;max-height:300px}
.txt{padding:7px 12px;background:var(--s1);border:1px solid var(--ln);border-radius:10px;max-width:520px;white-space:pre-wrap}
.empty{margin:40px 0 0 112px;color:var(--tx2);max-width:320px}
#dock{position:absolute;left:0;right:0;bottom:0;height:170px;display:flex;justify-content:center;align-items:flex-end;padding-bottom:26px;background:linear-gradient(transparent,var(--bg) 60%);pointer-events:none}
#dock>*{pointer-events:auto}
#mic{width:84px;height:84px;border-radius:50%;background:var(--acc);color:var(--on);display:grid;place-items:center;box-shadow:0 0 0 1px var(--acc),var(--glow),0 12px 36px color-mix(in srgb,var(--acc) 35%,transparent);touch-action:none;user-select:none;-webkit-user-select:none}
#mic svg{width:34px;height:34px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;pointer-events:none}
#mic.rec{animation:pulse 1.2s infinite}
@keyframes pulse{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--acc) 55%,transparent)}100%{box-shadow:0 0 0 26px transparent}}
#kb{position:absolute;margin-left:150px;width:46px;height:46px;border-radius:50%;background:var(--s1);border:1px solid var(--ln);color:var(--tx2);display:grid;place-items:center;bottom:45px}
#kb svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8}
#pop{position:absolute;left:50%;bottom:128px;transform:translateX(-50%);width:min(440px,calc(100% - 32px));background:var(--s1);border:1px solid var(--ln2);border-radius:16px;padding:14px 16px;box-shadow:0 18px 50px rgba(0,0,0,.35);display:none;z-index:20}
#pop.v{display:block}
.ph{display:flex;justify-content:space-between;font-size:12px;color:var(--tx2);margin-bottom:8px}
#lv{display:flex;gap:2px;align-items:center;height:30px;margin-bottom:8px}
#lv b{width:3px;background:var(--acc);border-radius:2px}
#ptx{min-height:44px;max-height:120px;overflow-y:auto}#ptx em{color:var(--tx2);font-style:normal}
#pop textarea{width:100%;min-height:90px;resize:vertical;background:var(--s2);border:1px solid var(--ln);border-radius:10px;color:var(--tx);padding:8px;font:inherit}
.pb{display:flex;justify-content:flex-end;gap:8px;margin-top:8px}
.btn{padding:7px 14px;border-radius:9px;border:1px solid var(--ln2)}.btn.p{background:var(--acc);color:var(--on);border-color:var(--acc);font-weight:600}
#menu{position:fixed;left:68px;bottom:12px;width:268px;background:var(--s1);border:1px solid var(--ln2);border-radius:14px;padding:14px;box-shadow:0 18px 50px rgba(0,0,0,.35);display:none;z-index:40}
#menu.v{display:block}
#menu h4{font-size:13px;margin-bottom:10px}
.mr{display:flex;justify-content:space-between;align-items:center;padding:7px 0;gap:8px;font-size:13px}
.sw{display:flex;gap:8px}.sw button{width:26px;height:26px;border-radius:50%;border:2px solid transparent}.sw button.on{border-color:var(--tx)}
.tg{width:40px;height:22px;border-radius:11px;background:var(--s2);border:1px solid var(--ln2);position:relative;flex:none}
.tg::after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:var(--tx2);transition:transform .2s}
.tg.on{background:var(--acc)}.tg.on::after{transform:translateX(18px);background:var(--on)}
#menu input[type=date]{background:var(--s2);border:1px solid var(--ln);color:var(--tx);border-radius:6px;padding:3px 6px;font:inherit;color-scheme:inherit}
#toast{position:fixed;top:16px;left:50%;transform:translateX(-50%);background:var(--s2);border:1px solid var(--ln2);padding:8px 14px;border-radius:10px;display:none;z-index:99}
#auth{position:fixed;inset:0;background:var(--bg);display:grid;place-items:center;z-index:90;padding:16px;overflow:auto}
#auth form{width:min(380px,100%);background:var(--s1);border:1px solid var(--ln);border-radius:18px;padding:26px;display:flex;flex-direction:column;gap:10px}
#auth h1{font:italic 400 34px Newsreader,Georgia,serif}
#auth p.s{color:var(--tx2);margin-bottom:6px}
#auth label{font-size:12px;color:var(--tx2);display:flex;flex-direction:column;gap:4px}
#auth input{background:var(--s2);border:1px solid var(--ln);border-radius:9px;padding:9px 10px;color:var(--tx);font:inherit;color-scheme:inherit}
.tabs{display:flex;gap:4px;background:var(--s2);border-radius:10px;padding:3px}.tabs button{flex:1;padding:6px;border-radius:8px;color:var(--tx2)}.tabs button.on{background:var(--s1);color:var(--tx)}
#err{color:#ff7b7b;font-size:12px;min-height:16px}
@media(max-width:820px){#side{position:fixed;left:60px;top:0;bottom:0;z-index:25;box-shadow:0 0 40px rgba(0,0,0,.4)}#hd{padding:16px}#title{font-size:30px}#kb{margin-left:130px}}
.brand{font:600 19px Figtree,system-ui,sans-serif;letter-spacing:.4px;display:flex;align-items:center;gap:9px}
.brand i{width:11px;height:11px;border-radius:50%;background:var(--acc);box-shadow:var(--glow)}
h1.brand{font-size:30px}
.bars b.on{box-shadow:0 0 6px var(--acc)}
#auth form,#obf{border-color:var(--ln2);box-shadow:0 0 0 1px var(--ln),0 0 70px color-mix(in srgb,var(--acc) 14%,transparent)}
#auth input:focus,#obf input:focus{border-color:var(--acc);box-shadow:var(--glow);outline:none}
.btn.p{box-shadow:var(--glow)}
.btn.g{width:100%;border-color:var(--acc);color:var(--acc);padding:10px}.btn.g:hover{background:var(--soft)}
.or{text-align:center;color:var(--tx2);font-size:12px}
#thm{margin-left:auto;width:38px;height:38px;border-radius:50%;border:1px solid var(--ln2);color:var(--tx2);font-size:17px;display:grid;place-items:center}
#thm:hover{border-color:var(--acc);color:var(--acc);box-shadow:var(--glow)}
#ob{position:fixed;inset:0;background:color-mix(in srgb,var(--bg) 80%,transparent);backdrop-filter:blur(10px);display:grid;place-items:center;z-index:95;padding:16px;opacity:0;pointer-events:none;transition:opacity .4s}
#ob.v{opacity:1;pointer-events:auto}
#obf{width:min(390px,100%);background:var(--s1);border:1px solid var(--ln2);border-radius:18px;padding:26px;display:flex;flex-direction:column;gap:10px;transform:translateY(10px);transition:transform .4s}
#ob.v #obf{transform:none}
#obf h2{font:italic 400 28px Newsreader,Georgia,serif}
#obf p{color:var(--tx2)}
#obf label{font-size:12px;color:var(--tx2);display:flex;flex-direction:column;gap:4px}
#obf input{background:var(--s2);border:1px solid var(--ln);border-radius:9px;padding:9px 10px;color:var(--tx);font:inherit;color-scheme:inherit}
#oerr{color:#ff7b7b;font-size:12px;min-height:16px}
.r.wh{min-height:20px;cursor:default}.r.wh:hover{background:none}.r.wh::before{display:none}
.dh{font-size:9px;text-align:center;color:var(--tx2);letter-spacing:.2px}
#col{position:absolute;left:-1px;top:50%;transform:translateY(-50%);width:20px;height:56px;border:1px solid var(--ln2);border-left:0;border-radius:0 10px 10px 0;background:var(--s1);color:var(--tx2);z-index:15;font-size:18px;line-height:1}
#col:hover{color:var(--acc);box-shadow:var(--glow)}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
/* v0.3 additions */
#err.ok,#rerr.ok{color:#4cc38a}
.lnk{font-size:12px;color:var(--tx2);text-decoration:underline;align-self:flex-start;padding:0}
.lnk:hover{color:var(--acc)}
.na{display:none;gap:4px;margin-left:8px;vertical-align:middle}
.note:hover .na,.note:focus-within .na{display:inline-flex}
.na button{font-size:12px;color:var(--tx2);border:1px solid var(--ln);border-radius:6px;padding:0 6px;line-height:18px;background:var(--s1)}
.na button:hover{color:var(--acc);border-color:var(--acc)}
.note .t .na{display:none}
.ed{outline:1px solid var(--acc);opacity:1!important;max-height:none!important}
.sy{font-size:10px;color:var(--tx2);margin-left:6px}
#cfg{position:fixed;inset:0;background:var(--bg);display:grid;place-items:center;z-index:99;padding:24px;text-align:center;color:var(--tx2)}
#rp{position:fixed;inset:0;background:color-mix(in srgb,var(--bg) 80%,transparent);backdrop-filter:blur(10px);display:grid;place-items:center;z-index:96;padding:16px}
#rpf{width:min(390px,100%);background:var(--s1);border:1px solid var(--ln2);border-radius:18px;padding:26px;display:flex;flex-direction:column;gap:10px}
#rpf h2{font:italic 400 28px Newsreader,Georgia,serif}#rpf p{color:var(--tx2)}
#rpf label{font-size:12px;color:var(--tx2);display:flex;flex-direction:column;gap:4px}
#rpf input{background:var(--s2);border:1px solid var(--ln);border-radius:9px;padding:9px 10px;color:var(--tx);font:inherit}
#rerr{color:#ff7b7b;font-size:12px;min-height:16px}
@media(hover:none){.na{display:inline-flex}}
.txp{color:var(--acc)!important;animation:blink 1.4s infinite}@keyframes blink{50%{opacity:.4}}
.txe{color:#ff7b7b!important}.txe .lnk{font-size:11px;color:inherit}
.txl{border:1px solid var(--ln);border-radius:5px;padding:0 4px;font-size:10px!important}
/* ---------- v0.5 Mini Programs ---------- */
#side[data-mode=mp]>:not(#mp){display:none!important}
#side:not([data-mode=mp]) #mp{display:none}
.mpl{display:flex;flex-direction:column;gap:4px;padding:12px}
.mpl button{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:12px;text-align:left;border:1px solid transparent}
.mpl button:hover{background:var(--s2)}.mpl button.on{background:var(--soft);border-color:color-mix(in srgb,var(--acc) 35%,transparent)}
.mpl b{display:block;font-weight:600}.mpl small{color:var(--tx2);font-size:12px}
.mi{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;background:var(--s2);color:var(--acc);flex:none}
.mpl button.on .mi{background:var(--acc);color:var(--on)}
.mi svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
#main[data-view=coin]>:not(#coin):not(#col),#main[data-view=calendar]>:not(#calv):not(#col){display:none!important}
.mpv{display:none;position:absolute;inset:0;flex-direction:column;padding:20px 32px 24px;overflow:auto}
#main[data-view=coin] #coin,#main[data-view=calendar] #calv{display:flex}
#calv{overflow:hidden}
.mp-hd{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:14px}
.mp-t{font:italic 400 38px/1.1 Newsreader,Georgia,serif;margin-right:8px}
.seg{display:flex;background:var(--s2);border-radius:10px;padding:3px;gap:2px}
.seg button{padding:5px 14px;border-radius:8px;color:var(--tx2);font-size:13px}.seg button.on{background:var(--s1);color:var(--tx);box-shadow:0 1px 3px rgba(0,0,0,.15)}
.per{display:flex;align-items:center;gap:4px;font-size:14px;font-weight:500}
.per button{width:28px;height:28px;border-radius:8px;font-size:18px;color:var(--tx2)}.per button:hover:not(:disabled){background:var(--s2);color:var(--tx)}.per button:disabled{opacity:.25;cursor:default}
.per span{min-width:110px;text-align:center}
#c-cur,.mdf select,.mdf input,.mdf textarea{background:var(--s2);border:1px solid var(--ln);border-radius:9px;padding:7px 9px;color:var(--tx);font:inherit;color-scheme:inherit;width:100%}
#c-cur{width:auto;margin-left:auto}
.c-total{display:flex;align-items:baseline;gap:12px;margin:4px 0 8px}.c-total b{font:600 30px Figtree,system-ui;font-variant-numeric:tabular-nums}.c-total small{color:var(--tx2)}
.c-chart{overflow-x:auto;overflow-y:hidden;background:var(--s1);border:1px solid var(--ln);border-radius:14px;padding:10px 6px 2px;flex:none}
.c-chart svg{display:block}
.c-chart .gl{stroke:var(--ln);stroke-dasharray:3 4}.c-chart .gt{fill:var(--tx2);font-size:10px}
.c-chart .bar{cursor:pointer;outline:none}.c-chart .hit{fill:transparent}.c-chart .bar:hover .hit,.c-chart .bar:focus .hit{fill:var(--s2)}
.c-chart .bv{fill:color-mix(in srgb,var(--acc) 55%,transparent)}.c-chart .bar.on .bv,.c-chart .bar:hover .bv{fill:var(--acc)}
.c-chart .bt{fill:var(--tx);font-size:10.5px;font-weight:600}.c-chart .xl{fill:var(--tx2);font-size:11px}.c-chart .bar.on .xl{fill:var(--acc);font-weight:600}
.c-list{margin-top:14px;display:flex;flex-direction:column;gap:6px;padding-bottom:90px;max-width:760px}
.ci{display:grid;grid-template-columns:62px 1fr auto;gap:12px;align-items:center;text-align:left;padding:10px 14px;background:var(--s1);border:1px solid var(--ln);border-radius:12px}
.ci:hover{border-color:var(--ln2)}.cd{color:var(--tx2);font-size:12px}.cm b{display:block;font-weight:500}.cm small{color:var(--tx2);font-size:12px}
.ca{font-weight:600;font-variant-numeric:tabular-nums}
.ai{color:var(--acc);cursor:pointer}.ai:hover{text-decoration:underline}
.empty2{color:var(--tx2);padding:24px 4px;max-width:420px}
.fab{position:fixed;right:28px;bottom:28px;width:58px;height:58px;border-radius:50%;background:var(--acc);color:var(--on);font-size:30px;line-height:1;box-shadow:var(--glow),0 10px 30px rgba(0,0,0,.3);z-index:12}
#fc{flex:1;min-height:0}
.mdl{position:fixed;inset:0;background:color-mix(in srgb,var(--bg) 70%,transparent);backdrop-filter:blur(8px);display:grid;place-items:center;z-index:97;padding:16px}
.mdf{width:min(440px,100%);max-height:calc(100vh - 32px);overflow:auto;background:var(--s1);border:1px solid var(--ln2);border-radius:18px;padding:22px;display:flex;flex-direction:column;gap:12px;box-shadow:0 20px 60px rgba(0,0,0,.35)}
.mdf h3{font:italic 400 26px Newsreader,Georgia,serif}
.mfs{display:flex;flex-wrap:wrap;gap:10px}.mfs label{flex:1 1 100%;display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--tx2)}
.mfs label.half{flex:1 1 calc(50% - 5px)}.mfs label.ck{flex-direction:row;align-items:center;gap:8px;font-size:13px;color:var(--tx)}.mfs label.ck input{width:auto}
.mfs label.dim input{opacity:.55}
.merr{color:#ff7b7b;font-size:12px;min-height:14px}.btn.del{color:#ff7b7b;border-color:color-mix(in srgb,#ff7b7b 50%,transparent)}
.msrc{font-size:12px;color:var(--tx2)}
.note.flash .body{animation:flash 1.6s}@keyframes flash{0%,60%{background:var(--soft);border-radius:10px}}
/* FullCalendar theme */
.fc{--fc-border-color:var(--ln);--fc-page-bg-color:var(--bg);--fc-neutral-bg-color:var(--s2);--fc-today-bg-color:color-mix(in srgb,var(--acc) 9%,transparent);
 --fc-event-bg-color:var(--acc);--fc-event-border-color:var(--acc);--fc-event-text-color:var(--on);--fc-button-bg-color:var(--s1);--fc-button-border-color:var(--ln2);
 --fc-button-text-color:var(--tx);--fc-button-hover-bg-color:var(--s2);--fc-button-hover-border-color:var(--ln2);--fc-button-active-bg-color:var(--soft);
 --fc-button-active-border-color:var(--acc);--fc-list-event-hover-bg-color:var(--s2);--fc-now-indicator-color:var(--acc);--fc-highlight-color:var(--soft);font-size:13px}
.fc .fc-button{font-size:12.5px;padding:5px 10px;border-radius:8px;box-shadow:none!important;text-transform:none}
.fc .fc-button-primary:not(:disabled).fc-button-active{color:var(--acc)}
.fc .fc-toolbar-title{font:italic 400 22px Newsreader,Georgia,serif}
.fc a{color:inherit}.fc .fc-col-header-cell-cushion,.fc .fc-daygrid-day-number{color:var(--tx2)}
.fc .fc-event.ai{background:color-mix(in srgb,var(--acc) 22%,var(--s1));color:var(--tx);border-style:dashed}
.fc .fc-event.ai .fc-event-title::before{content:"✦ "}
.fc .fc-list-day-cushion{background:var(--s2)}
@media(max-width:820px){.mpv{padding:16px}.mp-t{font-size:30px}.fc .fc-toolbar{flex-wrap:wrap;gap:6px}.fc .fc-toolbar-title{font-size:18px}.fab{right:18px;bottom:18px}}
/* ---------- v0.6 ---------- */
#agenda{display:flex;gap:6px;flex-wrap:wrap;padding:0 32px 6px}
.ag{font-size:12px;padding:4px 10px;border-radius:14px;background:var(--soft);color:var(--tx);border:1px solid color-mix(in srgb,var(--acc) 30%,transparent);max-width:280px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ag:hover{border-color:var(--acc)}.ag.sp{background:var(--s1);border-color:var(--ln2)}
.c-cats{margin-top:14px;max-width:760px;display:flex;flex-direction:column;gap:4px}
.cc-h{font-size:13px;font-weight:600;margin-bottom:4px}.cc-h small{color:var(--tx2);font-weight:400;margin-left:6px}
.cc{display:grid;grid-template-columns:130px 1fr auto;gap:12px;align-items:center;padding:6px 10px;border-radius:10px;text-align:left;border:1px solid transparent}
.cc:hover{background:var(--s1)}.cc.on{background:var(--soft);border-color:color-mix(in srgb,var(--acc) 35%,transparent)}
.cn{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cb{position:relative;height:10px;background:var(--s2);border-radius:5px}
.cb i{position:absolute;left:0;top:0;bottom:0;border-radius:5px;background:var(--acc);opacity:.75}
.cb s{position:absolute;top:-3px;bottom:-3px;width:2px;background:var(--tx2);text-decoration:none}
.cc.warn .cb i{background:#f0b24a;opacity:1}.cc.over .cb i{background:#ff7b7b;opacity:1}
.cv{font-size:13px;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}.cv small{color:var(--tx2);font-weight:400}
.cc.over .cv{color:#ff7b7b}
.c-tools{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px;max-width:760px}
.c-tools input,.c-tools select{background:var(--s2);border:1px solid var(--ln);border-radius:9px;padding:7px 10px;color:var(--tx);font:inherit;color-scheme:inherit}
.c-tools input{flex:1 1 200px;min-width:0}
.ck2{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--tx2);cursor:pointer}
.fc .fc-event.spend{background:var(--s2);border-color:var(--ln2);color:var(--tx2);font-size:11px;cursor:pointer}
.keys{display:grid;grid-template-columns:auto 1fr;gap:8px 16px;align-items:center;font-size:13px}.keys dd{color:var(--tx2)}
kbd{font:600 11px Figtree,system-ui;border:1px solid var(--ln2);border-bottom-width:2px;border-radius:5px;padding:1px 6px;background:var(--s2)}
@media(max-width:820px){#agenda{padding:0 16px 6px}.cc{grid-template-columns:96px 1fr auto;gap:8px}}
.fc .fc-event.spend .fc-event-main,.fc .fc-event.spend .fc-event-title{color:var(--tx2)}
.fc .fc-event.ai .fc-event-main,.fc .fc-event.ai .fc-event-time,.fc .fc-event.ai .fc-event-title{color:var(--tx)}
.fc .fc-daygrid-event.ai{border-style:dashed;border-color:color-mix(in srgb,var(--acc) 60%,transparent)}
/* ---------- v0.7 rich-text notes ---------- */
#main.editing #dock{display:none}
#pop.ed{width:min(620px,calc(100% - 32px));bottom:24px}
.ph{align-items:center;gap:8px}.ph #pt{margin-left:auto}
#rt-x{width:28px;height:28px;border-radius:8px;display:grid;place-items:center;color:var(--tx2);flex:none}
#rt-x:hover{background:var(--s2);color:var(--acc)}
#rt-x svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
#rt-x .c,#pop.xl #rt-x .o{display:none}#pop.xl #rt-x .c{display:inline}
.rt-bar{display:flex;flex-wrap:wrap;align-items:center;gap:2px;margin-bottom:8px}
.rt-bar.sub{background:var(--s2);border-radius:9px;padding:3px 6px;gap:4px}
.rt-tl{font-size:11px;color:var(--tx2);margin-right:4px}
.rt-b{min-width:30px;height:30px;padding:0 6px;border-radius:8px;display:grid;place-items:center;color:var(--tx2);font-size:13px;font-weight:600;position:relative}
.rt-b.w{min-width:0;height:24px;font-weight:500;font-size:12px}
.rt-b:hover{background:var(--s2);color:var(--tx)}.rt-bar.sub .rt-b:hover{background:var(--s1)}
.rt-b.on{background:var(--soft);color:var(--acc)}
.rt-b b,.rt-b i,.rt-b u,.rt-b s{font-family:Georgia,serif;font-size:15px}
.rt-b svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.rt-b svg .sw{fill:var(--sw,transparent);stroke:var(--ln2);stroke-width:.6}
.rt-b.rec{color:#ff7b7b;background:color-mix(in srgb,#ff7b7b 15%,transparent);animation:blink 1.4s infinite}
.rt-sep{width:1px;height:18px;background:var(--ln);margin:0 4px}
.rt-ed{background:var(--s2);border:1px solid var(--ln);border-radius:10px;min-height:120px;max-height:min(320px,45vh);overflow:auto;cursor:text;display:flex;flex-direction:column}
.rt-ed>.rt-doc{flex:1}
.rt-ed:focus-within{border-color:var(--acc)}
.rt-load{padding:12px;color:var(--tx2)}
.rt-doc{outline:none;padding:10px 12px;min-height:118px;font-size:14px;color:var(--tx)}
.rt-doc:focus-visible{outline:none}
.rt-doc p.is-editor-empty:first-child::before{content:attr(data-placeholder);color:var(--tx2);float:left;height:0;pointer-events:none}
.rt-st{flex:1;font-size:12px;color:var(--tx2);align-self:center;text-align:left}
#pop .pb{align-items:center}
/* shared look: editor + timeline */
.txt.rich{white-space:normal;max-width:620px}
.rt-doc>*+*,.txt.rich>*+*{margin-top:.45em}
.rt-doc h1,.txt.rich .rh1{font:600 22px/1.25 Figtree,system-ui,sans-serif}
.rt-doc h2,.txt.rich .rh2{font:600 18px/1.3 Figtree,system-ui,sans-serif}
.rt-doc h3,.txt.rich .rh3{font:600 15px/1.35 Figtree,system-ui,sans-serif}
.rt-doc ul,.rt-doc ol,.txt.rich ul,.txt.rich ol{padding-left:1.5em}
.rt-doc li>p,.txt.rich li>p{margin:0}
.rt-doc mark,.txt.rich mark{background:rgba(250,204,21,.4);color:inherit;border-radius:2px;padding:0 1px}
.rt-doc a,.txt.rich a:not(.att){color:var(--acc)}
.rt-doc blockquote,.txt.rich blockquote{border-left:3px solid var(--ln2);padding-left:10px;color:var(--tx2)}
.rt-doc code,.txt.rich code{font:12.5px ui-monospace,Menlo,monospace;background:var(--s2);border-radius:4px;padding:1px 4px}
.rt-doc pre,.txt.rich pre{background:var(--s2);border-radius:8px;padding:8px 10px;overflow:auto}
.rt-doc hr,.txt.rich hr{border:0;border-top:1px solid var(--ln2)}
.rt-doc table,.txt.rich table{border-collapse:collapse;table-layout:fixed;width:100%;margin:2px 0}
.rt-doc td,.rt-doc th,.txt.rich td,.txt.rich th{border:1px solid var(--ln2);padding:4px 8px;vertical-align:top;text-align:left;min-width:48px;position:relative}
.rt-doc th,.txt.rich th{background:color-mix(in srgb,var(--ln) 60%,transparent);font-weight:600}
.rt-doc td>p,.rt-doc th>p,.txt.rich td>p,.txt.rich th>p{margin:0}
.rt-doc .selectedCell::after{content:"";position:absolute;inset:0;background:var(--soft);pointer-events:none}
.rt-doc .tableWrapper,.txt.rich .rtw{overflow-x:auto}
/* attachments */
.att{display:block;margin:6px 0;max-width:100%}
.att.im img,.att.vd video{display:block;max-width:100%;max-height:360px;border-radius:10px;background:var(--s2)}
.att.im.miss img{width:220px;height:140px}.att.vd.miss video{width:320px;height:180px}
.att.au{display:flex;flex-direction:column;gap:4px}.att.au audio{width:100%;max-width:360px;height:36px}
.aul{font-size:12px;color:var(--tx2)}
.att.fl{display:inline-flex;align-items:center;gap:10px;padding:8px 12px;border:1px solid var(--ln);border-radius:10px;background:var(--s2);color:var(--tx);text-decoration:none;max-width:360px}
.att.fl:hover{border-color:var(--acc)}
.att.fl b{display:block;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:260px}.att.fl small{color:var(--tx2);font-size:11px}
.ai2{width:32px;height:32px;border-radius:8px;background:var(--soft);color:var(--acc);display:grid;place-items:center;flex:none}
.ai2 svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.att.miss{opacity:.6}
.att-nv{position:relative;display:block;width:fit-content;max-width:100%}
.att-nv.ProseMirror-selectednode{outline:2px solid var(--acc);outline-offset:2px;border-radius:10px}
.att-x{position:absolute;top:4px;right:4px;width:24px;height:24px;border-radius:50%;background:var(--s1);border:1px solid var(--ln2);color:var(--tx2);font-size:15px;line-height:1;opacity:0;transition:opacity .15s}
.att-nv:hover .att-x,.att-x:focus-visible,.att-nv.ProseMirror-selectednode .att-x{opacity:1}
@media(hover:none){.att-x{opacity:1}}
/* popovers */
.rt-pp{position:absolute;z-index:30;background:var(--s1);border:1px solid var(--ln2);border-radius:12px;padding:8px;box-shadow:0 14px 40px rgba(0,0,0,.35)}
.rt-grid{display:grid;grid-template-columns:repeat(8,18px);gap:3px}
.rt-grid button{width:18px;height:18px;border-radius:4px;border:1px solid var(--ln2);background:var(--s2)}
.rt-grid button.on{background:var(--soft);border-color:var(--acc)}
.rt-gl{font-size:12px;color:var(--tx2);text-align:center;margin-top:6px}
.rt-sws{display:grid;grid-template-columns:repeat(5,28px);gap:6px}
.rt-swb{width:28px;height:28px;border-radius:8px;border:1px solid var(--ln2);font:700 15px Georgia,serif;color:var(--c,var(--tx));display:grid;place-items:center}
.rt-swb.none{color:var(--tx2);font:400 16px Figtree,system-ui}
.rt-swb.on{outline:2px solid var(--acc);outline-offset:1px}
/* focused overlay: 3/4 of the main canvas */
#rt-bd{display:none}
#main.rt-xl #rt-bd{display:block;position:absolute;inset:0;z-index:19;background:color-mix(in srgb,var(--bg) 62%,transparent);backdrop-filter:blur(4px)}
#pop.xl{width:75%;top:24px;bottom:24px;display:flex;flex-direction:column}
#pop.xl #v-type{flex:1;display:flex;flex-direction:column;min-height:0}
#pop.xl .rt-ed{flex:1;max-height:none}
#pop.xl .rt-doc{padding:18px 24px;font-size:15px;max-width:860px;margin:0 auto}
@media(max-width:820px){#pop.xl{width:calc(100% - 24px);top:12px;bottom:12px}#pop.ed{bottom:16px}}
