:root{--paper: #f2f0e8;--card: #fbfaf5;--card2: #fffdf8;--ink: #16201c;--ink2: #465049;--ink3: #8b938e;--line: #d8d2c2;--line2: #bec5be;--red: #e64a36;--red-dark: #c93828;--blue: #167d83;--blue-soft: #e2efee;--rose: #c8556b;--rose-soft: #f9e7eb;--green: #497b33;--serif: "Noto Serif SC", "Source Han Serif SC", "Songti SC", STSong, SimSun, serif;--sans: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--mono: ui-monospace, "SF Mono", "DM Mono", Consolas, "Courier New", monospace}*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}html{-webkit-text-size-adjust:100%}body{font-family:var(--sans);color:var(--ink);background:var(--paper);background-image:radial-gradient(rgba(22,32,28,.055) .7px,transparent .7px);background-size:12px 12px;line-height:1.7;-webkit-font-smoothing:antialiased}button{font-family:inherit;cursor:pointer;border:0;background:none}input,textarea{font-family:inherit;outline:none}.boot{height:100%;display:grid;place-items:center}.app{min-height:100%;max-width:560px;margin:0 auto;padding:max(10px,env(safe-area-inset-top)) 16px calc(124px + env(safe-area-inset-bottom));display:flex;flex-direction:column}.app-inner{display:flex;flex-direction:column;flex:1;position:relative}.app-head{position:sticky;top:0;z-index:15;display:flex;align-items:center;gap:9px;padding:6px 2px;margin:0 -2px;background:#fbfaf5ed;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);border-bottom:1px solid var(--line)}.app-mark{width:28px;height:33px;background:var(--red);color:#fff;display:grid;place-items:center;font-family:var(--serif);font-weight:900;font-size:17px;clip-path:polygon(0 0,100% 0,100% 82%,76% 100%,0 100%);flex:none;box-shadow:2px 3px #16201c24}.app-head strong{font-family:var(--serif);font-size:18px;letter-spacing:1.5px}.app-head .head-date{margin-left:auto;text-align:right;font:10px var(--mono);color:var(--ink3);line-height:1.5;border:0;padding:4px 0 4px 8px}.app-head .head-date b{display:block;font-size:16px;color:var(--ink);font-family:var(--mono);letter-spacing:1px}button.head-date{cursor:pointer}button.head-date:active b{color:var(--red-dark)}.note{position:relative;margin-top:18px;background:var(--card2);border:1px solid var(--line);padding:24px 15px 11px;transform:rotate(-.5deg);box-shadow:3px 4px #16201c12;text-align:left;width:100%}.note.alt{transform:rotate(.4deg)}.note-label{position:absolute;top:-9px;left:50%;transform:translate(-50%);font:10px var(--mono);color:var(--ink3);letter-spacing:2px;background:var(--card);padding:0 8px}.note p{font-family:var(--serif);font-size:14px;line-height:1.9;color:var(--ink);white-space:pre-wrap;word-break:break-word}.note p.empty{color:var(--ink3)}.note .by{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-top:10px;font:10px var(--mono);color:var(--ink3)}.note .by .who{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pill{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;border:1px solid var(--ink);font:10px var(--mono);background:var(--card);flex:none}.pill b{color:var(--red-dark)}.pill.done{background:var(--ink);color:#fff;border-color:var(--ink)}.pill.done b{color:#9dcc62}.cols{position:relative;display:grid;grid-template-columns:1fr 1fr;margin-top:16px;align-items:start}.gutter{position:absolute;top:4px;bottom:6px;left:50%;border-left:1.5px dashed #cbc4b0}.col{padding:0 13px;min-width:0}.col:first-child{padding-left:2px}.col:last-child{padding-right:2px}.col-head{display:flex;align-items:center;gap:8px}.avatar{width:31px;height:31px;border-radius:50%;display:grid;place-items:center;font-family:var(--serif);font-weight:900;font-size:15px;color:#fff;flex:none;box-shadow:inset 0 0 0 1.5px #ffffff8c}.avatar.he{background:var(--blue)}.avatar.she{background:var(--rose)}.col-head strong{font-family:var(--serif);font-size:15px}.col-head em{margin-left:auto;font:11px var(--mono);font-style:normal;color:var(--ink3)}.bar{height:3px;margin:8px 0 4px;background:#e6e1d2;position:relative;overflow:hidden}.bar i{position:absolute;inset:0 auto 0 0;display:block;transition:width .35s ease}.bar i.he{background:var(--blue)}.bar i.she{background:var(--rose)}.todo{display:flex;align-items:flex-start;gap:8px;margin:7px 0;padding:8px 9px 8px 8px;background:var(--card2);border:1px solid var(--line);border-radius:6px;box-shadow:2px 2px #16201c0d;position:relative;transition:background-color .35s ease,border-color .35s ease,box-shadow .35s ease}.done-wrap{display:grid;grid-template-rows:0fr;transition:grid-template-rows .45s cubic-bezier(.22,1,.36,1)}.done-wrap.open{grid-template-rows:1fr}.done-inner{overflow:hidden;min-height:0}.check{width:18px;height:18px;flex:none;border:1.5px solid var(--ink2);border-radius:50%;margin-top:2px;display:grid;place-items:center;font-size:10px;color:#fff;background:transparent;padding:0;transition:transform .15s ease}button.check:active{transform:scale(.82)}.todo.done .check{border-color:var(--red);background:var(--red)}.todo.just-done .check{animation:m2-ring .32s ease-out}@keyframes m2-ring{0%{box-shadow:0 0 #c9382866}to{box-shadow:0 0 0 10px #c9382800}}.todo span{font-size:14px;line-height:1.6;color:var(--ink);word-break:break-word}.todo.done span{color:var(--ink3);text-decoration:line-through;text-decoration-color:#c9382899}.todo.done.he-card{background:var(--blue-soft);border-color:transparent;box-shadow:none}.todo.done.she-card{background:var(--rose-soft);border-color:transparent;box-shadow:none}.todo.carried:before{content:"";position:absolute;left:-1px;top:6px;bottom:6px;width:3px;border-radius:2px}.todo.carried.c-he:before{background:var(--blue);opacity:.45}.todo.carried.c-she:before{background:var(--rose);opacity:.45}.todo .del{margin-left:auto;color:#c4bdb0;font-size:14px;padding:0 2px;flex:none;line-height:1.4}.todo .del:active{color:var(--red-dark)}.fold{margin:7px 0;padding:6px 10px;border:1px dashed var(--line2);border-radius:6px;font:10px var(--mono);color:var(--ink3);background:#fffdf88c;display:flex;align-items:center;gap:5px;width:100%;text-align:left}.fold b{color:var(--red-dark);font-weight:400}.fold .tri{margin-left:auto}.fold:active{background:#16201c0d}.bottombox{position:fixed;left:0;right:0;bottom:0;z-index:30;max-width:560px;margin:0 auto;background:linear-gradient(to top,#f2f0e8fa 78%,#f2f0e800);padding-top:12px}.inputdock{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:9px;padding:0 14px 9px}.id-in{display:flex;align-items:center;gap:8px;padding:10px 13px;min-width:0;background:var(--card2);border:1.5px solid var(--line2);border-radius:10px;box-shadow:2px 3px #16201c12;transition:background .18s,border-color .18s,box-shadow .18s}.id-in .plus{font-weight:900;font-size:15px;color:var(--ink3);flex:none;transition:color .18s}.id-in input{flex:1;width:100%;min-width:0;border:0;background:transparent;font-size:16px;color:var(--ink)}.id-in input::placeholder{color:var(--ink3);font-size:13.5px}.id-in.focused.he{background:var(--blue-soft);border-color:var(--blue);box-shadow:2px 3px #167d8338}.id-in.focused.he .plus{color:var(--blue)}.id-in.focused.she{background:var(--rose-soft);border-color:var(--rose);box-shadow:2px 3px #c8556b38}.id-in.focused.she .plus{color:var(--rose)}.bottombar{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--line);background:#fbfaf5f7;padding:8px 16px calc(8px + env(safe-area-inset-bottom))}.bb-btn{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--ink2);border:1px solid var(--line2);border-radius:16px;padding:5px 15px;background:var(--card2)}.bb-btn:active{background:#16201c0f}.bb-btn.main{color:var(--red-dark);border-color:var(--red);font-weight:700;box-shadow:2px 2px #c938282e}.bb-btn .ic{font-size:12px}.bb-mid{font:9px var(--mono);color:#b8b1a0;letter-spacing:2px}.mi{display:flex;align-items:center;gap:12px;padding:13px 4px;border-bottom:1px dashed var(--line2);font-size:15px;color:var(--ink);width:100%;text-align:left}.mi:last-child{border-bottom:0}.mi:active{background:#16201c0d}.mi .ic{width:24px;text-align:center;font-size:14px;flex:none;color:var(--ink2)}.mi .mi-note{margin-left:auto;font:9px var(--mono);color:var(--ink3);letter-spacing:1px;flex:none}.mi.danger,.mi.danger .ic{color:var(--red-dark)}.mi .who-tag{font:10px var(--mono);color:#fff;border-radius:3px;padding:2px 7px;flex:none}.mi .who-tag.he{background:var(--blue)}.mi .who-tag.she{background:var(--rose)}.push-sec{margin:12px 0 4px;border:1px dashed var(--line2);border-radius:5px;padding:10px 12px 12px}.push-head{display:flex;align-items:baseline;gap:7px}.push-head .ic{font-size:13px}.push-head b{font-size:13px;color:var(--ink)}.push-head em{margin-left:auto;font:9px var(--mono);font-style:normal;color:var(--ink3);text-align:right}.push-head em.on{color:var(--green)}.push-opt{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12.5px;color:var(--ink);padding-top:9px;cursor:pointer}.push-opt input{-moz-appearance:none;appearance:none;-webkit-appearance:none;width:34px;height:20px;border-radius:10px;background:#c9c4b6;position:relative;transition:background .2s;cursor:pointer;flex:none;margin:0}.push-opt input:after{content:"";position:absolute;left:2px;top:2px;width:16px;height:16px;border-radius:50%;background:#fff;transition:transform .2s;box-shadow:0 1px 2px #00000040}.push-opt input:checked{background:var(--ink)}.push-opt input:checked:after{transform:translate(14px)}.push-btn{margin-top:11px;width:100%;min-height:34px;background:var(--ink);color:#fff;border:1px solid var(--ink);font:11px var(--mono);letter-spacing:2px}.push-btn.ghost{background:transparent;color:var(--ink2);border-color:var(--line2)}.push-btn:disabled{opacity:.5}.push-tip{font-size:11px;line-height:1.8;color:var(--ink2);margin-top:8px}.carry{margin-top:10px;width:100%;text-align:left;border:1px dashed var(--ink2);background:#16201c09;padding:7px 10px;font-size:11.5px;color:var(--ink2);display:flex;align-items:center;gap:6px;border-radius:3px}.carry b{font-family:var(--mono);color:var(--red-dark);font-weight:400}.carry:active{background:#16201c12}.footer-mark{text-align:center;font:9px var(--mono);color:#b8b1a0;letter-spacing:2px;margin-top:18px;padding-bottom:4px}.footer-mark.green{color:var(--green);animation:night-breathe 4s ease-in-out infinite}@keyframes night-breathe{0%,to{opacity:.5;text-shadow:none}50%{opacity:1;text-shadow:0 0 12px rgba(73,123,51,.5)}}.seal-done{position:absolute;top:205px;right:16px;width:108px;height:108px;z-index:5;border:3.5px solid var(--red-dark);color:var(--red-dark);border-radius:8px;transform:rotate(-12deg);display:grid;place-items:center;background:radial-gradient(rgba(201,56,40,.07) 1px,transparent 1.6px) 0 0 / 5px 5px;mix-blend-mode:multiply;opacity:.92;pointer-events:none;animation:stamp .45s cubic-bezier(.2,1.6,.4,1)}@keyframes stamp{0%{transform:rotate(-12deg) scale(1.9);opacity:0}70%{transform:rotate(-12deg) scale(.94);opacity:1}to{transform:rotate(-12deg) scale(1);opacity:.92}}.seal-done:after{content:"";position:absolute;top:6px;right:6px;bottom:6px;left:6px;border:1.5px solid var(--red-dark);border-radius:4px}.seal-done b{font-family:var(--serif);font-size:28px;letter-spacing:6px;text-indent:6px}.seal-done small{position:absolute;bottom:14px;font:8px var(--mono);letter-spacing:1px}.dim{position:fixed;top:0;right:0;bottom:0;left:0;background:#16201c73;z-index:40;animation:fade .2s ease}@keyframes fade{0%{opacity:0}to{opacity:1}}.sheet-pop{position:fixed;left:0;right:0;bottom:0;z-index:41;max-width:560px;margin:0 auto;background:var(--card);border-radius:22px 22px 0 0;border-top:2px solid var(--ink);padding:12px 20px calc(22px + env(safe-area-inset-bottom));display:flex;flex-direction:column;box-shadow:0 -14px 44px #16201c4d;animation:rise .28s cubic-bezier(.2,.9,.3,1)}@keyframes rise{0%{transform:translateY(60%);opacity:.4}to{transform:translateY(0);opacity:1}}.grip{width:40px;height:4px;border-radius:2px;background:var(--line2);margin:0 auto 12px}.sheet-pop h3{font-family:var(--serif);font-size:18px;letter-spacing:1px}.sheet-pop h3 small{font:10px var(--mono);color:var(--ink3);margin-left:10px;letter-spacing:1px;font-weight:400}.paper-input{margin-top:14px;min-height:120px;border:1px solid var(--line);background:repeating-linear-gradient(transparent 0 29px,#e3ddcc 29px,#e3ddcc 30px),var(--card2);padding:4px 12px;font-family:var(--serif);font-size:16px;line-height:30px;color:var(--ink);border-radius:2px;width:100%;resize:none;overflow-y:auto}.sheet-foot{display:flex;align-items:center;gap:10px;margin-top:14px}.sheet-foot small{font:10px var(--mono);color:var(--ink3)}.btn-seal{margin-left:auto;min-height:42px;padding:0 22px;background:var(--red);color:#fff;border:1px solid var(--ink);font-weight:700;font-size:14px;box-shadow:3px 3px 0 var(--ink)}.btn-seal:active{transform:translate(2px,2px);box-shadow:1px 1px 0 var(--ink)}.cal-card{margin-top:14px;background:var(--card2);border:1px solid var(--line);padding:12px 14px 10px;box-shadow:3px 4px #16201c12}.cal-nav{display:flex;align-items:center;justify-content:space-between}.cal-nav b{font-family:var(--serif);font-size:15px;letter-spacing:1px}.cal-nav span{font:10px var(--mono);color:var(--ink3)}.cal-nav button{font-size:17px;color:var(--ink2);padding:4px 12px}.cal-nav button:active{color:var(--red-dark)}table.cal{width:100%;border-collapse:collapse;margin-top:8px;text-align:center;table-layout:fixed}.cal th{font:9px var(--mono);color:var(--ink3);font-weight:400;padding:2px 0 6px}.cal td{font:11px var(--mono);color:var(--ink2);padding:1px 0;position:relative;height:30px}.cal td.blank{color:transparent}.cal td .d{display:inline-grid;place-items:center;width:23px;height:23px;border-radius:50%;font-family:inherit;font-size:inherit;color:inherit;padding:0}button.d{cursor:pointer}button.d:active{background:var(--blue-soft)}.cal td.fut button.d{color:#c9c3b4}.cal td.has:after{content:"";position:absolute;bottom:0;left:50%;transform:translate(-50%);width:3.5px;height:3.5px;border-radius:50%;background:var(--ink3)}.cal td.sel .d{background:var(--ink);color:#fff}.cal td.sel:after{background:var(--ink)}.cal td.today .d{box-shadow:inset 0 0 0 1.5px var(--red);color:var(--red-dark);font-weight:700}.cal-legend{display:flex;gap:14px;margin-top:8px;font:9px var(--mono);color:var(--ink3)}.cal-legend i{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:4px;vertical-align:-1px}.day-title{display:flex;align-items:baseline;gap:8px;margin-top:16px}.day-title b{font-family:var(--serif);font-size:16px}.day-title small{font:10px var(--mono);color:var(--ink3);letter-spacing:1px}.day-title .ro{margin-left:auto;font:9px var(--mono);color:var(--red-dark);border:1px solid var(--red);padding:2px 8px;letter-spacing:1px;flex:none}.old-note{margin-top:10px;background:#f6f4ec;border:1px dashed var(--line);padding:10px 13px}.old-note p{font-family:var(--serif);font-size:13px;line-height:1.8;color:var(--ink2);white-space:pre-wrap;word-break:break-word}.old-note .by{margin-top:6px;font:9px var(--mono);color:var(--ink3)}.mini-cols{display:grid;grid-template-columns:1fr 1fr;margin-top:12px}.mini-cols .col{padding:0 10px}.mini-cols .todo{margin:6px 0;padding:6px 8px}.mini-cols .todo span{font-size:12px;color:var(--ink2)}.mini-cols .todo.done span{color:var(--ink3)}.mini-cols .avatar{width:27px;height:27px;font-size:13px}.mini-cols .col-head strong{font-size:13px}.mini-cols .col-head em{font-size:10px}.mini-cols .bar{margin:6px 0 3px}.back-day{margin-top:14px;display:flex;align-items:center;gap:8px}.back-day .hint{font:9px var(--mono);color:var(--ink3)}.back-btn{position:fixed;right:max(16px,calc(50vw - 264px));bottom:calc(18px + env(safe-area-inset-bottom,0px));z-index:20;min-height:42px;padding:0 18px;background:var(--ink);color:#fff;border:1px solid var(--ink);border-radius:999px;font:11px var(--mono);letter-spacing:1px;box-shadow:3px 4px #16201c38}.back-btn:active{transform:translate(2px,2px);box-shadow:1px 1px #16201c38}.empty-day{margin:26px auto 10px;text-align:center;font-family:var(--serif);color:var(--ink3);font-size:14px;line-height:2}.empty-day .zh{font-size:15px;color:var(--ink2)}.login{min-height:100%;max-width:560px;margin:0 auto;padding:40px 26px 30px;display:flex;flex-direction:column}.login-mark{display:flex;flex-direction:column;align-items:center;gap:10px;margin-top:8vh}.login-mark .seal{width:62px;height:62px;background:var(--red);position:relative;clip-path:polygon(0 0,100% 0,100% 82%,78% 100%,0 100%);box-shadow:5px 5px #16201c29}.login-mark .seal:after{content:"雀";position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;font-family:var(--serif);font-size:30px;font-weight:900;color:#fff}.login-mark h1{font-family:var(--serif);font-size:26px;font-weight:900;letter-spacing:4px}.login-mark .edition{font:10px var(--mono);color:var(--ink3);letter-spacing:2px}.login-box{margin-top:34px}.login-box h3{font-family:var(--serif);font-size:19px;text-align:center;letter-spacing:3px}.login-box .sub{text-align:center;font:10px var(--mono);color:var(--ink3);letter-spacing:1px;margin-top:5px}.pick{display:flex;gap:12px;margin:26px 0 18px}.pick button{flex:1;border:1.5px solid var(--line2);background:var(--card2);border-radius:5px;padding:18px 8px;display:flex;flex-direction:column;align-items:center;gap:9px;font-family:var(--serif);font-weight:700;font-size:15px;color:var(--ink)}.pick button.on{border-width:2px;box-shadow:3px 3px #16201c1f}.pick button.on.he{border-color:var(--blue);background:var(--blue-soft)}.pick button.on.she{border-color:var(--rose);background:var(--rose-soft)}.pick .avatar{width:44px;height:44px;font-size:19px}.pw{width:100%;min-height:46px;border:1px solid var(--line2);background:var(--card2);border-radius:3px;padding:0 14px;font:16px var(--mono);letter-spacing:4px;color:var(--ink)}.pw:focus{border-color:var(--ink2)}.go{margin-top:16px;width:100%;min-height:48px;background:var(--ink);color:#fff;border:1px solid var(--ink);font-weight:700;font-size:15px;letter-spacing:4px;box-shadow:4px 4px 0 var(--red)}.go:active{transform:translate(2px,2px);box-shadow:2px 2px 0 var(--red)}.go:disabled{opacity:.55}.login-err{margin-top:12px;text-align:center;font-size:12.5px;color:var(--red-dark);min-height:20px}.login-tip{margin-top:auto;padding-top:30px;text-align:center;font-size:11px;color:var(--ink3)}.col.lit{outline:1.5px solid var(--blue);outline-offset:5px;border-radius:8px}.col.lit .col-head strong{color:var(--blue)}.col.lit .bar{height:4.5px}.col.lit.col-she{outline-color:var(--rose)}.col.lit.col-she .col-head strong{color:var(--rose)}.col.col-he,.col.col-she{transition:background .2s,box-shadow .2s,outline-color .2s}.toast{position:fixed;left:50%;bottom:132px;transform:translate(-50%);z-index:60;background:var(--ink);color:#f3f1e9;font-size:12.5px;padding:9px 18px;box-shadow:3px 3px #16201c40;white-space:nowrap;max-width:86vw;overflow:hidden;text-overflow:ellipsis;animation:toast-in .25s ease;display:flex;align-items:center;gap:12px}@keyframes toast-in{0%{transform:translate(-50%,12px);opacity:0}to{transform:translate(-50%);opacity:1}}.toast button{color:#9dcc62;font-weight:700;font-size:12.5px;flex:none;letter-spacing:1px}.seg{display:flex;border:1px solid var(--ink);background:var(--card);border-radius:4px;overflow:hidden}.seg button{flex:1;border:0;border-right:1px solid var(--line);background:transparent;padding:8px 0;font:11px var(--mono);letter-spacing:1px;color:var(--ink2)}.seg button:last-child{border-right:0}.seg button.on{background:var(--ink);color:#f3f1e9}.hero{margin-top:10px;border:1px solid var(--ink);background:var(--card);border-radius:4px;padding:14px 12px 12px;box-shadow:3px 3px #16201c12}.hero-nums{display:flex}.hero-nums>div{flex:1;text-align:center}.hero-nums>div+div{border-left:1px dashed var(--line2)}.hero-nums b{display:block;font-family:var(--serif);font-size:30px;line-height:1.1;color:var(--ink)}.hero-nums em{display:block;margin-top:4px;font:9px var(--mono);font-style:normal;color:var(--ink3);letter-spacing:1px}.mcards{display:flex;flex-direction:column;gap:8px;margin-top:10px}.mcard{display:flex;align-items:center;gap:10px;border:1px solid var(--ink);border-radius:4px;padding:10px 12px;background:var(--card)}.mcard.he-card{background:linear-gradient(0deg,#167d8314,#167d8314),var(--card)}.mcard.she-card{background:linear-gradient(0deg,#c8556b12,#c8556b12),var(--card)}.mcard .avatar{width:30px;height:30px;font-size:13px;flex:none}.mcard .txt{min-width:0}.mcard .txt b{display:block;font-size:13.5px;color:var(--ink)}.mcard .txt em{display:block;font:10px var(--mono);font-style:normal;color:var(--ink2);margin-top:2px}.mcard .txt small{display:block;font-size:10px;color:var(--ink3);margin-top:1px}.mcard .bar{margin-left:auto;width:72px;height:6px;background:#16201c12;border-radius:3px;overflow:hidden;flex:none}.mcard .bar i{display:block;height:100%;border-radius:3px;transition:width .5s ease}.mcard.he-card .bar i{background:var(--blue)}.mcard.she-card .bar i{background:var(--rose)}.chart-card{margin-top:10px;border:1px solid var(--ink);background:var(--card);border-radius:4px;padding:12px 14px 14px}.chart-card h4{font-family:var(--serif);font-size:14px;letter-spacing:1px;color:var(--ink)}.legend{display:flex;gap:12px;margin-top:3px;font:9px var(--mono);color:var(--ink3)}.legend i{display:inline-block;width:7px;height:7px;border-radius:2px;margin-right:4px}.legend i.he{background:var(--blue)}.legend i.she{background:var(--rose)}.legend i.both{background:linear-gradient(135deg,var(--blue) 50%,var(--rose) 50%)}.trend{display:flex;align-items:flex-end;gap:3px;height:84px;margin-top:12px}.trend .grp{flex:1;min-width:0;height:100%;display:flex;flex-direction:column;align-items:center;gap:4px}.trend .pair{flex:1;width:100%;display:flex;align-items:flex-end;justify-content:center;gap:2px}.trend .b{width:5px;min-height:2px;border-radius:2px 2px 0 0;transition:height .5s ease}.trend .b.he{background:var(--blue)}.trend .b.she{background:var(--rose)}.trend em{font:8px var(--mono);font-style:normal;color:var(--ink3);flex:none;line-height:1}.trend em.today{color:var(--ink);font-weight:700}.hours{display:grid;grid-template-columns:repeat(12,1fr);gap:3px;margin-top:12px}.hours .h{aspect-ratio:1;border-radius:2px;background:#16201c0f}.hours .h.he{background:var(--blue)}.hours .h.she{background:var(--rose)}.hours .h.both{background:linear-gradient(135deg,var(--blue) 50%,var(--rose) 50%)}.hour-axis{display:flex;justify-content:space-between;font:8px var(--mono);color:var(--ink3);margin-top:4px}.wk{display:flex;align-items:center;gap:8px;margin-top:6px}.wk .w{font:10px var(--mono);color:var(--ink2);width:30px;flex:none}.wk .track{flex:1;height:9px;background:#16201c14;border-radius:2px;overflow:hidden}.wk .track i{display:block;height:100%;border-radius:2px;transition:width .5s ease}.wk.he .track i{background:var(--blue);opacity:.85}.wk.she .track i{background:var(--rose);opacity:.85}.wk em{font:10px var(--mono);font-style:normal;color:var(--ink3);width:16px;text-align:right;flex:none}.wk-gap{height:9px}.carry-line{margin-top:12px;text-align:center;font-family:var(--serif);font-size:13px;color:var(--ink2)}.recent{margin-top:8px}.recent .r{display:flex;align-items:baseline;gap:8px;padding:7px 2px;border-bottom:1px dashed var(--line)}.recent .r:last-child{border-bottom:0;padding-bottom:0}.recent .dot{width:7px;height:7px;border-radius:50%;flex:none;align-self:center}.recent .r span{flex:1;font-size:13px;color:var(--ink);word-break:break-word}.recent .r em{font:9px var(--mono);font-style:normal;color:var(--ink3);flex:none}.empty-intro{margin-top:26px;border:1px dashed var(--ink2);border-radius:4px;background:#fffdf899;padding:26px 18px;text-align:center}.empty-intro .zh{font-family:var(--serif);font-size:15px;color:var(--ink2);line-height:2}.empty-intro .en{font:9px var(--mono);color:var(--ink3);letter-spacing:2px;margin-top:8px}.loading{text-align:center;color:var(--ink3);font:11px var(--mono);letter-spacing:2px;padding:30px 0}@media (min-width: 640px){.app{border-left:1px solid var(--line);border-right:1px solid var(--line)}}.todo{animation:todo-in .45s cubic-bezier(.22,1,.36,1)}@keyframes todo-in{0%{opacity:0;transform:translateY(-14px) scale(.96)}62%{opacity:1;transform:translateY(2px) scale(1.015)}82%{transform:translateY(-1px)}to{opacity:1;transform:translateY(0)}}.todo>span{position:relative}.todo.done>span{text-decoration:none}.todo.done>span:after{content:"";position:absolute;left:0;top:55%;height:2px;width:100%;background:linear-gradient(90deg,#c93828f2,#c938288c);transform:scaleX(1);transform-origin:left}.todo.just-done>span:after{animation:m2-ink .5s .15s cubic-bezier(.22,1,.36,1) backwards}@keyframes m2-ink{0%{transform:scaleX(0)}70%{transform:scaleX(1.02)}to{transform:scaleX(1)}}.todo.just-done>span{animation:m2-settle .3s .5s ease-out}@keyframes m2-settle{0%,to{transform:translateY(0)}40%{transform:translateY(1.5px)}}.check svg{width:10px;height:10px;stroke:#fff;stroke-width:1.8;fill:none;stroke-linecap:round;stroke-linejoin:round}.check svg path{stroke-dasharray:12;stroke-dashoffset:12}.todo.just-done .check svg path{animation:m2-tick .34s .05s cubic-bezier(.22,1,.36,1) forwards}@keyframes m2-tick{to{stroke-dashoffset:0}}.todo.leaving{overflow:hidden;animation:leave .28s cubic-bezier(.4,0,1,1) forwards}@keyframes leave{to{opacity:0;transform:translate(36px) rotate(8deg) scale(.92);max-height:0;margin:0;padding-top:0;padding-bottom:0}}.todo.leaving>span{opacity:.5}.pill b{display:inline-block}.pill b{animation:count-pop .2s ease}@keyframes count-pop{50%{transform:scale(1.3)}}.note.thud{animation:thud .16s ease-out}@keyframes thud{40%{transform:rotate(.4deg) translateY(3px)}to{transform:rotate(.4deg) translateY(0)}}.grip-zone{padding:6px 0 4px;margin:-6px 0 -4px;touch-action:none;cursor:grab}.edit-input{flex:1;border:0;border-bottom:1.5px solid var(--red);background:transparent;font-size:13.5px;line-height:1.55;color:var(--ink);padding:0 0 1px;min-width:0}.check.dimmed{opacity:.35}.skel{background:linear-gradient(100deg,#e9e5d8 40%,#f0ede1,#e9e5d8 60%);background-size:200% 100%;animation:breathe 1.4s ease-in-out infinite;border:1px solid var(--line)}@keyframes breathe{to{background-position:-200% 0}}.note-sk{height:92px;margin-top:18px;transform:rotate(-.5deg)}.skel-cols{display:grid;grid-template-columns:1fr 1fr;gap:26px;margin-top:18px}.col-sk{height:180px}.first-hint{text-align:center;font-family:var(--serif);font-size:14.5px;color:var(--ink3);letter-spacing:2px;margin-top:26px;animation:todo-in .3s ease-out}.sync-dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:6px;vertical-align:1px;background:#c9c3b4;transition:background .3s}.sync-dot.live{background:var(--green)}.sync-dot.polling{background:#c9c3b4}.sync-dot.connecting,.sync-dot.reconnecting{background:#d9b23c;animation:breathe-dot 1s ease-in-out infinite}@keyframes breathe-dot{50%{opacity:.35}}.sync-dot.offline{background:transparent;box-shadow:inset 0 0 0 1.5px var(--red)}.offline-bar{position:sticky;top:0;z-index:50;text-align:center;background:var(--red-dark);color:#fff;font:11px var(--mono);letter-spacing:2px;padding:5px 0;animation:toast-in .25s ease}.todo.dragging-src{opacity:1;background:#fffdf88c;border:1.5px dashed var(--line2);border-radius:6px;padding:2px 6px;min-height:22px}.todo.dragging-src>*{visibility:hidden}.float-todo{background:var(--card2);border:1px solid var(--ink);border-radius:5px;box-shadow:6px 8px #16201c2e,0 18px 36px #16201c29;transform:rotate(1.2deg) scale(1.04);padding:6px 10px;cursor:grabbing;display:flex;align-items:flex-start;gap:8px;width:max-content;max-width:46vw}.float-todo>span:last-child{font-size:13.5px;line-height:1.55;word-break:break-word}.float-todo .check{pointer-events:none}.col{transition:background .2s,box-shadow .2s;border-radius:6px}.col.receiving{background:#fffdf8b3;box-shadow:inset 0 0 0 1.5px var(--line2)}.col.receiving .avatar{animation:breathe-avatar .8s ease-in-out infinite}@keyframes breathe-avatar{50%{transform:scale(1.15)}}.handoff{margin:8px 0 2px;padding:6px 10px;border-radius:4px;text-align:center;font:11px var(--mono);letter-spacing:1px;color:#fff;animation:todo-in .2s ease-out}.handoff.he{background:var(--blue)}.handoff.she{background:var(--rose)}.toast.out{animation:toast-out .22s ease forwards;pointer-events:none}@keyframes toast-out{to{transform:translate(-50%,12px);opacity:0}}.todo.editing{background:#16201c0b;border-color:var(--ink2)}.todo.editing .check{opacity:.3}.edit-input{animation:e-in .2s ease}@keyframes e-in{0%{opacity:0;transform:translateY(2px)}to{opacity:1;transform:none}}.todo.touched{animation:d-touched 1.4s ease}@keyframes d-touched{0%{box-shadow:0 0 0 0 var(--touch-c-soft, rgba(200, 85, 107, .45))}60%,to{box-shadow:0 0 0 12px #16201c00}}.touched-badge{position:absolute;right:9px;top:-9px;z-index:2;font:9px var(--mono);letter-spacing:1px;color:#fff;background:var(--touch-c, var(--rose));border-radius:3px;padding:1px 6px;animation:badge-io 1.7s ease forwards;pointer-events:none}@keyframes badge-io{0%{opacity:0;transform:translateY(4px)}16%{opacity:1;transform:none}80%{opacity:1}to{opacity:0}}.todo.returned{animation:todo-return .45s cubic-bezier(.34,1.56,.64,1)}@keyframes todo-return{0%{opacity:0;transform:translate(28px) rotate(5deg)}to{opacity:1;transform:none}}.stats-body>*{opacity:0}.stats-body.staged>*{animation:s-rise .5s cubic-bezier(.22,1,.36,1) forwards}.stats-body.staged>*:nth-child(1){animation-delay:0s}.stats-body.staged>*:nth-child(2){animation-delay:.06s}.stats-body.staged>*:nth-child(3){animation-delay:.12s}.stats-body.staged>*:nth-child(4){animation-delay:.18s}.stats-body.staged>*:nth-child(5){animation-delay:.24s}.stats-body.staged>*:nth-child(6){animation-delay:.3s}.stats-body.staged>*:nth-child(7){animation-delay:.36s}.stats-body.staged>*:nth-child(8){animation-delay:.42s}.stats-body.staged>*:nth-child(9){animation-delay:.48s}@keyframes s-rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.trend .b{transition:height .6s cubic-bezier(.22,1,.36,1)}.hours .h{transition:opacity .35s ease,background .3s ease}::view-transition-old(root){animation:vt-out .42s cubic-bezier(.4,0,1,1) both}::view-transition-new(root){animation:vt-in .42s cubic-bezier(.22,1,.36,1) both}@keyframes vt-out{to{opacity:0;transform:translate(-26px) scale(.988)}}@keyframes vt-in{0%{opacity:0;transform:translate(26px) scale(.988)}}.app.page-leave{animation:pg-leave .19s cubic-bezier(.4,0,1,1) forwards}@keyframes pg-leave{to{opacity:0;transform:translate(-26px) scale(.988)}}.app.page-enter{animation:pg-enter .38s cubic-bezier(.22,1,.36,1)}@keyframes pg-enter{0%{opacity:0;transform:translate(26px) scale(.988)}}.cal.cal-in-r{animation:cal-push-r .28s cubic-bezier(.22,1,.36,1)}.cal.cal-in-l{animation:cal-push-l .28s cubic-bezier(.22,1,.36,1)}@keyframes cal-push-r{0%{opacity:0;transform:translate(18px)}to{opacity:1;transform:none}}@keyframes cal-push-l{0%{opacity:0;transform:translate(-18px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
