*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%;background:var(--paper);font-family:var(--sans);color:var(--ink);-webkit-font-smoothing:antialiased;overflow:hidden}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
.app{position:relative;width:100%;max-width:390px;height:100%;max-height:844px;margin:0 auto;background:var(--paper);overflow:hidden}

.status{position:absolute;left:0;top:0;width:100%;height:47px;display:flex;align-items:flex-end;justify-content:space-between;padding:0 30px 9px 34px;background:var(--paper-2)}
.status b{font:600 16px/20px var(--sans);color:var(--ink)}
.status .r{display:flex;align-items:center;gap:6px;color:var(--ink)}
.status .bars{display:flex;align-items:flex-end;gap:2px;height:12px}
.status .bars i{display:block;width:3px;border-radius:1px;background:var(--ink)}
.status .batt{display:flex;align-items:center;width:25px;height:12px;padding:1.5px;border:1px solid var(--ink-3);border-radius:4px}
.status .batt i{display:block;width:15px;height:100%;border-radius:2px;background:var(--ink)}

.ticker{position:absolute;left:0;top:47px;width:100%;height:38px;display:flex;align-items:center;gap:10px;padding:0 20px;background:var(--paper-2);border-bottom:1px solid var(--rule-2);color:var(--ox);cursor:pointer}
.ticker svg{width:20px;height:20px}
.ticker span{font:500 14px/20px var(--sans);color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}
.ticker em{font:600 12px/16px var(--sans);font-style:normal;color:var(--ox)}

.view{position:absolute;left:0;top:85px;width:100%;bottom:0;overflow-y:auto;padding:18px 20px 190px;display:flex;flex-direction:column;gap:18px;scrollbar-width:none;transition:opacity .22s ease}
.view::-webkit-scrollbar{display:none}
.view.out{opacity:0}
.view>*,.sheet>*{flex:none}
.go{width:20px;height:20px;color:var(--ink-3);flex:none}

.top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.top .tt{display:flex;flex-direction:column;gap:2px}
.acts{display:flex;align-items:center;gap:8px}
.datetile{display:flex;flex-direction:column;align-items:center;width:66px;border-radius:10px;border:1px solid var(--rule-2);background:var(--card);overflow:hidden;box-shadow:0 2px 0 var(--rule-2)}
.datetile .m{display:flex;align-items:center;justify-content:center;width:100%;height:22px;background:var(--ox);font:600 11px/16px var(--sans);letter-spacing:1.4px;color:var(--white)}
.datetile .d{font:600 36px/46px var(--serif);color:var(--ink)}
.row{display:flex;align-items:center;justify-content:space-between;gap:12px}
.avatar{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:18px;background:var(--ink);color:var(--paper);font:600 15px/20px var(--serif)}
.iconbtn{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:var(--r-s);border:1px solid var(--rule-2);background:var(--card);color:var(--ink);transition:background .18s ease}
.iconbtn:active{background:var(--paper-2)}
.iconbtn svg{width:20px;height:20px}
.sect{display:flex;flex-direction:column;gap:10px}
.tile{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:10px;flex:none}
.tile svg{width:22px;height:22px}

.weekhead{display:flex;align-items:center;justify-content:space-between}
.weekhead .mid{display:flex;align-items:center;gap:4px}
.mini{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:var(--r-s);color:var(--ink);transition:background .18s ease}
.mini:active{background:var(--paper-2)}
.mini svg{width:18px;height:18px}
.btn.sm.xs{height:30px;padding:0 8px}
.week{display:flex;justify-content:space-between}
.day{display:flex;flex-direction:column;align-items:center;gap:2px;width:46px;height:66px;padding-top:7px;border-radius:10px;border:1px solid var(--paper);cursor:pointer;transition:background .2s ease,border-color .2s ease}
.day span{font:500 12px/16px var(--sans);color:var(--ink-3);transition:color .2s ease}
.day b{font:600 19px/24px var(--serif);color:var(--ink);transition:color .2s ease}
.day i{display:block;width:5px;height:5px;border-radius:3px}
.day.on{background:var(--ink);border-color:var(--ink)}
.day.on span{color:#D9CFB8}.day.on b{color:var(--paper)}
.month{display:flex;flex-direction:column;gap:4px}
.month .wk{display:flex;justify-content:space-between}
.month .c{display:flex;align-items:center;justify-content:center;width:46px;height:36px;border-radius:8px;font:500 15px/20px var(--serif);color:var(--ink)}
.month .c.h{font:600 11px/16px var(--sans);letter-spacing:1px;color:var(--ink-3);height:22px}
.month .c.o{color:var(--off-ink)}
.month .c.on{background:var(--ink);color:var(--paper)}
.month .c.ev{background:var(--ox-tint);color:var(--ox)}

.slot{display:flex;align-items:stretch;gap:12px}
.slot .time{display:flex;flex-direction:column;align-items:flex-end;width:52px;padding-top:11px;flex:none}
.slot .time b{font:600 17px/22px var(--serif);color:var(--ink)}
.slot .time span{font:600 11px/16px var(--sans);letter-spacing:1px;color:var(--ink-3)}
.slot .card{flex:1;min-width:0}

.dock{position:absolute;left:20px;right:20px;bottom:98px;display:flex;justify-content:space-between;transition:opacity .22s ease}
.dock .btn{box-shadow:0 6px 16px rgba(27,42,65,.18)}
.dock.out{opacity:0;pointer-events:none}

.tabbar{position:absolute;left:0;bottom:0;width:100%;height:86px;display:flex;justify-content:space-between;padding:0 6px;background:var(--card);border-top:1px solid var(--rule-2)}
.tab{display:flex;flex-direction:column;align-items:center;gap:3px;width:74px;height:60px;color:var(--ink-3);cursor:pointer;transition:color .2s ease}
.tab .bar{display:block;width:28px;height:3px;border-radius:0 0 3px 3px;background:var(--card);margin-bottom:6px;transition:background .2s ease}
.tab span{font:500 11px/14px var(--sans);white-space:nowrap;text-align:center}
.tab.on{color:var(--ox)}
.tab.on .bar{background:var(--ox)}
.tab.on span{font-weight:600}
.homebar{position:absolute;left:50%;margin-left:-67px;bottom:8px;width:134px;height:5px;border-radius:3px;background:var(--ink)}

.chips{display:flex;gap:8px;flex-wrap:wrap}
.list{display:flex;flex-direction:column}
.task{display:flex;align-items:center;gap:12px;padding:13px 0;border-bottom:1px solid var(--rule);cursor:pointer}
.task .tx{display:flex;flex-direction:column;flex:1;min-width:0}
.task .tx b{font:600 16px/22px var(--sans);color:var(--ink);transition:color .2s ease}
.task .tx span{font:400 13px/18px var(--sans);color:var(--ink-2)}
.task .who{width:10px;height:10px;border-radius:5px;flex:none}
.task.done .tx b{color:var(--ink-3)}

.sums{display:flex;gap:12px}
.sum{display:flex;flex-direction:column;gap:4px;flex:1;padding:14px;border-radius:var(--r-m);border:1px solid var(--rule)}
.sum span{font:600 11px/16px var(--sans);letter-spacing:1.1px;text-transform:uppercase}
.sum b{font:600 26px/32px var(--serif)}
.sum small{font:400 13px/18px var(--sans);color:var(--ink-2)}
.sum.in{background:var(--green-tint)}.sum.in span,.sum.in b{color:var(--green)}
.sum.out{background:var(--ox-tint)}.sum.out span,.sum.out b{color:var(--ox)}
.ledger{display:flex;flex-direction:column;border-radius:var(--r-m);border:1px solid var(--rule);background:var(--card);overflow:hidden}
.ledger .lh{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;background:var(--paper-2);border-bottom:1px solid var(--rule-2)}
.ledger .lh b{font:600 17px/22px var(--serif);color:var(--ink)}
.entry{display:flex;align-items:center;gap:10px;padding:12px 14px;border-bottom:1px solid var(--rule);cursor:pointer}
.entry.last{border-bottom:0}
.entry .tx{display:flex;flex-direction:column;flex:1;min-width:0}
.entry .tx b{font:600 15px/20px var(--sans);color:var(--ink)}
.entry .tx span{font:400 13px/18px var(--sans);color:var(--ink-2)}
.entry .amt{font:600 17px/22px var(--serif);color:var(--ink)}
.entry .amt.in{color:var(--green)}
.empty{font:400 14px/20px var(--sans);color:var(--ink-3)}

.blank{display:flex;flex-direction:column;align-items:center;gap:12px;padding:34px 24px;border-radius:var(--r-l);border:1px dashed var(--rule-2);background:var(--card);text-align:center}
.blank .seal{display:flex;align-items:center;justify-content:center;width:76px;height:76px;border-radius:38px;border:1px solid var(--brass);color:var(--brass-ink);background:var(--paper)}
.blank .seal svg{width:34px;height:34px}
.blank p{font:400 15px/22px var(--sans);color:var(--ink-2);max-width:270px}

.scrim{position:absolute;inset:0;background:rgba(27,42,65,.42);opacity:0;pointer-events:none;transition:opacity .28s ease}
.scrim.on{opacity:1;pointer-events:auto}
.sheet{position:absolute;left:0;width:100%;bottom:0;display:flex;flex-direction:column;gap:18px;padding:10px 20px 40px;background:var(--paper);border-radius:22px 22px 0 0;overflow-y:auto;scrollbar-width:none;top:100%;transition:top .34s cubic-bezier(.2,.8,.2,1)}
.sheet::-webkit-scrollbar{display:none}
.sheet.on{top:58px}
.grab{display:block;width:40px;height:5px;border-radius:3px;background:var(--rule-2);margin:0 auto;flex:none}
.opts{display:flex;flex-direction:column}
.opt-row{display:flex;align-items:center;gap:12px;height:46px;border-bottom:1px solid var(--rule);cursor:pointer}
.opt-row svg.ic{width:20px;height:20px;color:var(--ink-3)}
.opt-row span{font:500 16px/22px var(--sans);color:var(--ink);flex:1}
.reveal{display:flex;flex-direction:column;gap:18px;overflow:hidden;transition:max-height .3s ease,opacity .3s ease;max-height:400px}
.reveal.off{max-height:0;opacity:0}
.stack{display:flex;flex-direction:column;gap:10px}
.note{display:flex;flex-direction:column;gap:10px;padding:14px 0;border-bottom:1px solid var(--rule)}
.note .meta{display:flex;align-items:center;justify-content:space-between}
.static .view,.static .sheet,.static .scrim,.static .dock{transition:none}
