:root{--green:#7db956;--blue:#0089ce;--orange:#f19156;--pink:#e74587;--red:#e5352c;--sky:#7ca2c9;--gray:#b2b2b2;--ink:#333;--sub:gray;--paper:#fffdf6;--dot:#e6e1d3}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;margin:0;padding:0}html,body{height:100%}body{color:var(--ink);background:var(--paper);background-image:radial-gradient(var(--dot) 1.2px, transparent 1.3px);-webkit-user-select:none;user-select:none;background-size:18px 18px;font-family:Calibri,Microsoft JhengHei,微軟正黑體,HarmonyOS Sans SC,PingFang SC,sans-serif}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none}#app{min-height:100%;padding:max(14px, env(safe-area-inset-top)) 16px max(20px, env(safe-area-inset-bottom));max-width:1200px;margin:0 auto}.top{align-items:center;gap:4px;margin-bottom:10px;display:flex}.top h1{text-align:center;letter-spacing:.5px;flex:1;font-size:22px}.top .nav{width:38px;height:38px;color:var(--sub);border-radius:50%;font-size:22px}.top .nav:active,.top .more:active{background:#0000000d}.top .more{border-radius:50%;width:38px;height:38px;font-size:20px}.layout{grid-template-areas:"note""week""month""stats";gap:16px;display:grid}.a-note{grid-area:note}.a-week{grid-area:week}.a-month{grid-area:month}.a-stats{grid-area:stats}@media (width>=640px){.layout{grid-template:"month note""month stats"1fr/1fr 270px;column-gap:22px}.a-week{display:none}.a-stats{border-left:1.5px dashed var(--dot);margin-left:-12px;padding-left:18px}}.note{background:#fff;border-radius:6px;margin:14px 6px 4px;padding:26px 20px 18px;position:relative;transform:rotate(-1.5deg);box-shadow:2px 6px 16px #00000014}.tape{opacity:.55;background-image:repeating-linear-gradient(45deg,#ffffff59 0 6px,#0000 6px 12px);border-radius:2px;width:110px;height:26px;position:absolute;top:-12px;left:50%;transform:translate(-50%)rotate(2deg)}.note .when{color:var(--sub);justify-content:space-between;font-size:13px;display:flex}.note .when button{color:var(--blue);font-size:13px}.note .say{color:var(--sub);margin-top:6px;font-size:15px}.note .pl{margin:2px 0;font-size:34px;font-weight:700;line-height:1.2}.note .full{color:var(--sub);font-size:12.5px}.note .tm{margin-top:6px;font-size:17px}.note .st{color:var(--sub);margin-top:6px;font-size:13px}.chips{flex-wrap:wrap;gap:4px;margin-top:6px;display:flex}.chip{border-radius:10px;padding:2px 8px;font-size:11.5px}.chip.q{border:1px dashed var(--gray);color:var(--sub)}.sec-t{color:var(--sub);margin:0 4px 8px;font-size:12px}.wk{text-align:center;grid-template-columns:repeat(7,1fr);gap:2px;display:grid}.wk .dn{color:var(--sub);margin-bottom:4px;font-size:11px}.stk{color:#fff;border:2.5px solid #fff;border-radius:50%;place-items:center;width:40px;height:40px;margin:0 auto;font-size:13px;font-weight:700;display:grid;box-shadow:0 2px #00000014}.stk.today{outline:2.5px dashed var(--ink);outline-offset:2px}.stk.sel{transform:scale(1.12)}.wk .sn{white-space:nowrap;margin-top:4px;font-size:10.5px;overflow:hidden}.wh{color:var(--sub);text-align:center;grid-template-columns:repeat(7,1fr);margin-bottom:4px;font-size:11.5px;display:grid}.mg{touch-action:pan-y;grid-template-columns:repeat(7,1fr);gap:5px;display:grid}.dc{aspect-ratio:1/1.05;text-align:left;border-radius:11px;flex-direction:column;justify-content:space-between;padding:4px 5px;font-size:11px;transition:transform .1s;display:flex;position:relative}.dc:active{transform:scale(.95)}.dc .n{font-weight:700}.dc .s{text-align:right;white-space:nowrap;font-size:11.5px;font-weight:700;overflow:hidden}.dc .ic{font-size:12px;position:absolute;top:3px;right:4px}.dc .n sup{vertical-align:4px;margin-left:1px;font-size:8.5px;font-weight:400}.dc .n sup.off{color:var(--red)}.dc .n sup.work{color:var(--sub)}.dc .lu{white-space:nowrap;margin-top:-2px;font-size:9px;line-height:1;overflow:hidden}.dc .lu.fest{color:var(--red);opacity:.8}.dc .lu.term,.dc .lu.plain{color:var(--sub);opacity:.75}.dc .lu.plain{visibility:hidden}@media (width>=640px){.dc .lu{font-size:10.5px}.dc .lu.plain{visibility:visible}}.cal-line{color:var(--sub);border-top:1px dashed #eee9dc;flex-wrap:wrap;align-items:center;gap:4px 6px;margin-top:10px;padding-top:8px;font-size:11.5px;display:flex}.chip.cal{color:var(--sub);background:#f4f2ec;padding:1px 7px;font-size:11px}.chip.cal.red{color:var(--red);background:#e5352c14}.dc.today{box-shadow:0 0 0 2.5px var(--ink)}.dc.sel{box-shadow:0 0 0 2.5px var(--blue)}.dc.today.sel{box-shadow:0 0 0 2.5px var(--ink), 0 0 0 5px var(--blue)}.dc.past{opacity:.5}.dc.empty{background:#00000006!important}@media (width>=640px){.dc{aspect-ratio:auto;min-height:64px}.dc .s{font-size:13px}.dc .ic{font-size:15px}}.stats h4{margin:4px 0 10px;font-size:14px}.stat{align-items:center;gap:8px;padding:4px 0;font-size:13.5px;display:flex}.stat i{border-radius:50%;width:14px;height:14px}.stat b{margin-left:auto}.rest-tip{background:#7ca2c926;border-radius:12px;margin-top:12px;padding:10px 12px;font-size:13px;line-height:1.5}.pending-tip{color:var(--sub);margin-top:10px;font-size:11.5px;line-height:1.6}.welcome{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:14px;min-height:85vh;padding:20px;display:flex}.welcome .logo{font-size:64px}.welcome h2{font-size:28px}.welcome p{color:var(--sub);max-width:340px;font-size:14px;line-height:1.7}.btn{background:var(--ink);color:#fff;border-radius:24px;padding:12px 26px;font-size:16px;box-shadow:0 4px 12px #00000026}.btn:active{transform:scale(.97)}.safe{color:var(--sub);font-size:12px}.mask{z-index:20;background:#00000047;justify-content:center;align-items:flex-end;animation:.15s fade;display:flex;position:fixed;inset:0}@keyframes fade{0%{opacity:0}}.sheet{background:var(--paper);width:100%;max-width:520px;padding:18px 18px max(20px, env(safe-area-inset-bottom));border-radius:20px 20px 0 0;max-height:85vh;animation:.2s ease-out up;overflow:auto}@keyframes up{0%{opacity:.5;transform:translateY(40px)}}.sheet h3{margin-bottom:4px;font-size:17px}.sheet .hint{color:var(--sub);margin-bottom:14px;font-size:12.5px;line-height:1.6}.sheet .item{text-align:left;border-bottom:1px solid #0000000d;align-items:center;gap:12px;width:100%;padding:13px 6px;font-size:15.5px;display:flex}.sheet .item small{color:var(--sub);font-size:12px;display:block}.sheet .item.danger{color:var(--red)}.names{flex-wrap:wrap;gap:8px;display:flex}.names button{background:#fff;border-radius:18px;padding:9px 16px;font-size:15px;box-shadow:0 1px 4px #0000001a}.legend-text{white-space:pre-wrap;-webkit-user-select:text;user-select:text;background:#fff;border-radius:10px;padding:12px 14px;font-size:13.5px;line-height:1.75}.toast{color:#fff;z-index:30;text-align:center;background:#333333eb;border-radius:20px;max-width:86vw;padding:10px 18px;font-size:14px;animation:.2s fade;position:fixed;bottom:40px;left:50%;transform:translate(-50%)}
