:root{--rose-50:#fff7f9;--rose-100:#ffeef3;--rose-200:#fad4df;--rose-300:#efb0c0;--rose-400:#d4849a;--rose-500:#c4788a;--rose-600:#a85a6e;--ink:#3a2a30;--ink-soft:#6b5560;--ink-mute:#9a8088;--line:#e8c8d2;--line-soft:#f0dce2;--paper:#fffafb;--paper-2:#fff5f7;--undone-bg:#ffe4e8;--undone-border:#f0a0a8;--warn:#f5c542;--done-opacity:.45;--shadow:0 8px 32px #c4788a1f;--radius:16px;--font-serif:"Songti SC", "STSong", "Noto Serif SC", "Source Han Serif SC", "SimSun", serif;--font-sans:var(--font-serif);--font-poem:"Kaiti SC", "STKaiti", "Ma Shan Zheng", "Noto Serif SC", cursive;--sat-scale:1.5;--ease:cubic-bezier(.22, 1, .36, 1);--ease-spring:cubic-bezier(.34, 1.56, .64, 1);--bg-base:linear-gradient(168deg, #fff1f5 0%, #fffafb 45%, #fff7f9 100%);--bg-glow:radial-gradient(ellipse 85% 65% at 100% 0%, #ffd2e280 0%, transparent 55%), radial-gradient(ellipse 75% 55% at 0% 8%, #ffe0ec8c 0%, transparent 50%), radial-gradient(ellipse 60% 45% at 50% 100%, #ffd8e661 0%, transparent 50%);--bg-pattern:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160' viewBox='0 0 160 160'%3E%3Ccircle cx='22' cy='28' r='1.3' fill='%23efb0c0' fill-opacity='0.45'/%3E%3Ccircle cx='96' cy='18' r='1' fill='%23e8c8d2' fill-opacity='0.4'/%3E%3Ccircle cx='132' cy='78' r='1.2' fill='%23fad4df' fill-opacity='0.38'/%3E%3Ccircle cx='48' cy='118' r='1.1' fill='%23efb0c0' fill-opacity='0.35'/%3E%3Ccircle cx='148' cy='138' r='0.9' fill='%23d4849a' fill-opacity='0.28'/%3E%3Cpath d='M78 52l0.7 1.4 1.55.22-1.1 1.08.26 1.52-1.41-.74-1.41.74.26-1.52-1.1-1.08 1.55-.22z' fill='%23d4849a' fill-opacity='0.32'/%3E%3Cpath d='M28 86c.85-1.15 2.4-1.15 2.7.05.3-1.2 1.85-1.2 2.7-.05-1.45 1.6-2.5 2.75-2.7 3.05-.2-.3-1.3-1.45-2.7-3.05z' fill='%23efb0c0' fill-opacity='0.36'/%3E%3C/svg%3E")}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{overscroll-behavior:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation;height:100dvh;overflow:hidden}body{font-family:var(--font-serif);color:var(--ink);background:var(--bg-glow), var(--bg-base);background-attachment:scroll}#app{width:100%;height:100%;position:relative;overflow:hidden}.ambient-glow{pointer-events:none;z-index:0;background:radial-gradient(180px at 94% 4%,#ffc6da61 0%,#0000 70%),radial-gradient(160px at 4% 12%,#ffd8e66b 0%,#0000 70%),radial-gradient(140px at 50% 100%,#ffd0e242 0%,#0000 70%);animation:28s ease-in-out infinite alternate ambientDrift;position:fixed;inset:-18%}.ambient-lines{pointer-events:none;z-index:0;opacity:.42;background-image:var(--bg-pattern);background-size:160px 160px;position:fixed;inset:0;-webkit-mask-image:radial-gradient(64% 60% at 50% 44%,#0000 50%,#000 100%);mask-image:radial-gradient(64% 60% at 50% 44%,#0000 50%,#000 100%)}.ambient-motifs{pointer-events:none;z-index:3;position:fixed;inset:0;overflow:hidden}.ambient-motifs span{color:var(--rose-300);opacity:.34;-webkit-user-select:none;user-select:none;line-height:1;animation:11s ease-in-out infinite motifFloat;display:flex;position:absolute}.ambient-motifs .heart{color:var(--rose-400);opacity:.58}.ambient-motifs .heart svg{filter:drop-shadow(0 1px 1px #d4849a2e);width:100%;height:100%;display:block}.ambient-motifs .m1{opacity:.64;width:18px;height:17px;color:var(--rose-400);--motif-tilt:-14deg;--motif-nudge:4px;animation-duration:9.5s;animation-delay:0s;top:6.5%;left:4.5%}.ambient-motifs .m2{opacity:.48;color:#e8a0b4;--motif-tilt:18deg;--motif-nudge:-5px;width:14px;height:13px;animation-duration:12s;animation-delay:-3.2s;top:9%;right:4%}.ambient-motifs .m3{opacity:.55;width:15px;height:14px;color:var(--rose-300);--motif-tilt:10deg;--motif-nudge:6px;animation-duration:10.5s;animation-delay:-6.1s;bottom:11%;left:6%}.ambient-motifs .m4{opacity:.6;width:20px;height:19px;color:var(--rose-500);--motif-tilt:-22deg;--motif-nudge:-3px;animation-duration:13s;animation-delay:-1.8s;bottom:8%;right:5.5%}.ambient-motifs .m5{opacity:.2;--motif-tilt:0deg;--motif-nudge:3px;font-size:10px;animation-delay:-4s;top:46%;left:2.5%}@keyframes ambientDrift{0%{transform:translate(0)scale(1)}to{transform:translate(-1%,1.2%)scale(1.02)}}@keyframes motifFloat{0%,to{transform:translate(0, 0) rotate(var(--motif-tilt,0deg))}50%{transform:translate(var(--motif-nudge,0), -6px) rotate(calc(var(--motif-tilt,0deg) + 6deg))}}.toolbar-btn{top:calc(12px + env(safe-area-inset-top,0px));left:calc(12px + env(safe-area-inset-left,0px));z-index:100;border:1.5px solid var(--line);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);cursor:pointer;width:44px;height:44px;transition:transform .3s var(--ease), box-shadow .3s var(--ease), border-color .3s;box-shadow:var(--shadow);background:#fffafbd9;border-radius:50%;justify-content:center;align-items:center;display:flex;position:fixed}.toolbar-btn:active{border-color:var(--rose-400);transform:scale(.96)}.toolbar-item:active{background:var(--rose-100)}.toolbar-btn.open{border-color:var(--rose-500);background:var(--rose-100)}.toolbar-btn svg{width:18px;height:18px;stroke:var(--rose-500);fill:none;stroke-width:1.8px;stroke-linecap:round;transition:transform .4s var(--ease)}.toolbar-btn.open svg{transform:rotate(90deg)}.toolbar-scrim{z-index:98;animation:overlayIn .25s var(--ease);background:#3a2a302e;position:fixed;inset:0}.toolbar-panel{top:calc(64px + env(safe-area-inset-top,0px));left:calc(12px + env(safe-area-inset-left,0px));z-index:99;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1.5px solid var(--line);border-radius:var(--radius);min-width:180px;box-shadow:var(--shadow);transform-origin:0 0;animation:toolbarIn .35s var(--ease);background:#fffafbf0;padding:8px;position:fixed}.toolbar-panel.hiding{animation:toolbarOut .25s var(--ease) forwards}@keyframes toolbarIn{0%{opacity:0;transform:scale(.9)translateY(-8px)}to{opacity:1;transform:scale(1)translateY(0)}}@keyframes toolbarOut{to{opacity:0;transform:scale(.9)translateY(-8px)}}.toolbar-item{width:100%;min-height:44px;font-family:var(--font-sans);color:var(--ink);cursor:pointer;text-align:left;background:0 0;border:none;border-radius:10px;align-items:center;gap:10px;padding:10px 14px;font-size:13.5px;transition:background .2s;display:flex}.toolbar-item .icon{text-align:center;opacity:.7;width:18px;font-size:14px}.toolbar-divider{background:var(--line-soft);height:1px;margin:4px 8px}.stage{z-index:1;width:100%;height:100%;position:relative;overflow:hidden}.stage.is-flipping{pointer-events:none;background:var(--paper)}.page{scrollbar-gutter:stable;-webkit-overflow-scrolling:touch;background:radial-gradient(ellipse 92% 72% at 50% 42%, var(--paper) 50%, transparent 82%), var(--bg-pattern), linear-gradient(180deg, #fff2f7b3 0%, transparent 150px), var(--paper);scroll-padding-bottom:calc(24px + var(--kb-inset,0px));overscroll-behavior-y:contain;background-size:auto,160px 160px,auto,auto;flex-direction:column;display:flex;position:absolute;inset:0;overflow:hidden auto}.page,.flip-page-face{padding:calc(68px + env(safe-area-inset-top,0px)) calc(16px + env(safe-area-inset-right,0px)) calc(28px + env(safe-area-inset-bottom,0px) + var(--kb-inset,0px)) calc(16px + env(safe-area-inset-left,0px))}.page.saturday-page{background:radial-gradient(ellipse 92% 72% at 50% 42%, var(--paper) 50%, transparent 82%), var(--bg-pattern), linear-gradient(180deg, #fff2f78c 0%, transparent 150px), var(--paper);background-size:auto,160px 160px,auto,auto}.flip-book{width:100%;height:100%;position:absolute;inset:0;overflow:hidden}.flip-book.is-mirrored{transform-origin:50%;transform:scaleX(-1)}.flip-book.stf__parent,.flip-book .stf__wrapper,.flip-book .stf__block{box-sizing:border-box!important;width:100%!important;min-width:0!important;max-width:none!important;height:100%!important;min-height:0!important;padding-bottom:0!important;position:absolute!important;inset:0!important;overflow:hidden!important}.flip-book.stf__parent{transform:translateZ(0)}.flip-book.is-mirrored.stf__parent{transform-origin:50%;transform:scaleX(-1)}.flip-book .stf__block{perspective:2400px}.flip-page{box-sizing:border-box;background:radial-gradient(ellipse 92% 72% at 50% 42%, var(--paper) 50%, transparent 82%), var(--bg-pattern), linear-gradient(180deg, #fff2f7b3 0%, transparent 150px), var(--paper);color:var(--ink);-webkit-font-smoothing:antialiased;background-size:auto,160px 160px,auto,auto;overflow:hidden}.flip-page-face{box-sizing:border-box;flex-direction:column;width:100%;height:100%;display:flex}.flip-book.is-mirrored .flip-page-face{transform:scaleX(-1)}.flip-page.saturday-page{background:radial-gradient(ellipse 92% 72% at 50% 42%, var(--paper) 50%, transparent 82%), var(--bg-pattern), linear-gradient(180deg, #fff2f78c 0%, transparent 150px), var(--paper);background-size:auto,160px 160px,auto,auto}.page.view-transition{animation:viewMorph .5s var(--ease)}@keyframes viewMorph{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}.blessing{text-align:center;margin-bottom:16px;padding:0 12px;position:relative}.blessing-ornament{color:var(--rose-300);letter-spacing:4px;justify-content:center;align-items:center;gap:12px;margin-bottom:10px;font-size:10px;display:flex}.blessing-ornament:before,.blessing-ornament:after{content:"";background:linear-gradient(90deg, transparent, var(--line), transparent);width:40px;height:1px}.blessing-text{font-family:var(--font-poem);color:var(--ink);cursor:pointer;transition:color .3s, transform .3s var(--ease);-webkit-user-select:none;user-select:none;max-width:340px;min-height:3.4em;font-size:20px;line-height:1.7;display:inline-block}.blessing-text:active{transform:scale(.98)}.date-nav-fixed:active:not(:disabled){background:var(--rose-100);border-color:var(--rose-300);transform:translateY(-50%)scale(.96)}.check-btn:active{transform:scale(.92)}.like-btn:active{transform:scale(.94)}.blessing-actions{justify-content:center;align-items:center;min-height:40px;margin-top:10px;display:flex;position:relative}.like-btn{border:1.5px solid var(--line);cursor:pointer;width:40px;height:40px;transition:all .35s var(--ease-spring);color:var(--ink-mute);background:0 0;border-radius:50%;justify-content:center;align-items:center;display:flex;position:relative}.like-btn:before{content:"";position:absolute;inset:-4px}.like-btn svg{fill:none;stroke:currentColor;stroke-width:1.6px;width:16px;height:16px;transition:fill .3s,stroke .3s}.like-btn.liked{border-color:var(--rose-400);color:var(--rose-500);background:var(--rose-100);transform:scale(1.1)}.like-btn.liked svg{fill:var(--rose-400);stroke:var(--rose-500)}.like-btn.pop{animation:likePop .45s var(--ease-spring)}@keyframes likePop{0%{transform:scale(1)}40%{transform:scale(1.35)}to{transform:scale(1.1)}}.copy-hint{color:var(--ink-mute);opacity:0;pointer-events:none;white-space:nowrap;font-size:11px;transition:opacity .3s;position:absolute;top:50%;left:calc(50% + 28px);transform:translateY(-50%)}.copy-hint.show{opacity:1;animation:1.5s forwards fadeHint}@keyframes fadeHint{0%,70%{opacity:1}to{opacity:0}}.date-header{text-align:center;margin-bottom:18px}.date-nav-fixed{z-index:45;border:1.5px solid var(--line);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);width:44px;height:44px;color:var(--rose-500);cursor:pointer;transition:background .2s var(--ease), border-color .2s var(--ease), opacity .2s, transform .2s var(--ease);box-shadow:var(--shadow);background:#fffafbe6;border-radius:50%;justify-content:center;align-items:center;font-size:18px;display:flex;position:fixed;top:42%;transform:translateY(-50%)}#date-prev.date-nav-fixed{left:calc(6px + env(safe-area-inset-left,0px))}#date-next.date-nav-fixed{right:calc(6px + env(safe-area-inset-right,0px))}.date-nav-fixed:disabled{opacity:.3;cursor:default}.date-nav-fixed[hidden]{display:none}button:focus-visible,input:focus-visible,textarea:focus-visible{outline-offset:3px;outline:3px solid #c4788a61}.date-header .date-center{text-align:center}.date-header h1{font-family:var(--font-serif);letter-spacing:2px;color:var(--ink);font-size:20px;font-weight:500}.date-header .sub{color:var(--ink-mute);letter-spacing:1px;margin-top:4px;font-size:12px}.task-list{flex-direction:column;gap:8px;width:100%;max-width:480px;margin:0 auto;display:flex}.task-item{--task-fs:14.5px;--task-lh:1.6;border:1.5px solid var(--line-soft);transition:background .4s var(--ease), border-color .4s, opacity .4s, transform .3s var(--ease), box-shadow .3s;animation:taskIn .4s var(--ease) backwards;background:#fffffff0;border-radius:12px;align-items:flex-start;gap:10px;padding:12px 14px;display:flex}.task-item:first-child{animation-delay:50ms}.task-item:nth-child(2){animation-delay:80ms}.task-item:nth-child(3){animation-delay:.11s}.task-item:nth-child(4){animation-delay:.14s}.task-item:nth-child(5){animation-delay:.17s}.task-item:nth-child(6){animation-delay:.2s}.task-item:nth-child(7){animation-delay:.23s}.task-item:nth-child(8){animation-delay:.26s}.flip-page .task-item,.page.from-flip .task-item{animation:none!important}@keyframes taskIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.task-item.done:not(.exempted){border-color:color-mix(in srgb, var(--line-soft) 70%, transparent);background:#ffffffe0}.task-item.done:not(.exempted) .task-body,.task-item.done:not(.exempted) .task-index{color:var(--ink-mute)}.task-item.done:not(.exempted) .check-btn{opacity:.65}.task-edit{display:contents}.task-flat{overflow-wrap:anywhere;word-break:break-all;line-break:anywhere;display:none}.task-item.done:not(.exempted) .task-line{width:fit-content;max-width:100%;display:block}.task-item.done:not(.exempted) .task-edit{display:none}.task-item.done:not(.exempted) .task-flat{-webkit-box-decoration-break:clone;box-decoration-break:clone;background-image:linear-gradient(to bottom, transparent calc(var(--task-lh) * .5em - .08em - .75px), #b8a8b0 calc(var(--task-lh) * .5em - .08em - .75px), #b8a8b0 calc(var(--task-lh) * .5em - .08em + .75px), transparent calc(var(--task-lh) * .5em - .08em + .75px));background-repeat:no-repeat;display:inline}.task-item.undone{background:var(--undone-bg);border-color:var(--undone-border);animation:undonePulse .5s var(--ease)}@keyframes undonePulse{0%{transform:scale(1)}40%{transform:scale(1.02)}to{transform:scale(1)}}.task-item.exempted{opacity:var(--done-opacity);position:relative;overflow:hidden}.task-item.exempted .task-body{background:linear-gradient(90deg,#ff6b9d,#c44dff,#4d9fff,#4dffb8,#ffe66d,#ff6b9d) 0 0/200%;-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;-webkit-text-decoration:line-through #c44dff;text-decoration:line-through #c44dff;text-decoration-thickness:2px;animation:2.5s linear infinite shimmer}@keyframes shimmer{to{background-position:200%}}.task-item.exempted:after{content:"";pointer-events:none;background:linear-gradient(105deg,#0000 40%,#ffffff73 50%,#0000 60%) 0 0/200% 100%;animation:2s ease-in-out infinite flowLight;position:absolute;inset:0}@keyframes flowLight{0%{background-position:100% 0}to{background-position:-100% 0}}.check-btn{border:1.5px solid var(--line);cursor:pointer;width:28px;height:28px;transition:all .3s var(--ease-spring);background:0 0;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;margin-top:1px;display:flex;position:relative}.check-btn:before{content:"";position:absolute;inset:-8px}.check-btn.done{background:var(--rose-400);border-color:var(--rose-400);color:#fff}.check-btn.undone{border-color:var(--warn);color:var(--warn);animation:warnShake .4s var(--ease);background:#fff8e0}@keyframes warnShake{0%,to{transform:rotate(0)}25%{transform:rotate(-12deg)}75%{transform:rotate(12deg)}}.check-btn svg{z-index:1;width:14px;height:14px;position:relative}.check-btn:not(.done):not(.undone):after{content:"";background:var(--rose-300);opacity:.7;z-index:1;border-radius:50%;width:5px;height:5px;position:relative}.task-index{font-family:var(--font-serif);font-size:.9em;line-height:inherit;color:var(--rose-400);flex-shrink:0}.task-body{min-width:0;font-family:var(--font-serif);font-size:var(--task-fs);line-height:var(--task-lh);color:var(--ink);flex:1;padding-top:2px}.task-line{width:100%;font-size:var(--task-fs);line-height:var(--task-lh);flex-wrap:nowrap;align-items:baseline;gap:6px;display:flex}.task-edit>input,.task-edit>textarea,.task-edit>.task-blank-wrap{flex:1 1 0;width:auto;min-width:0}.task-body input,.task-body textarea{width:100%;font-family:inherit;font-size:inherit;color:inherit;resize:none;line-height:inherit;border:none;border-bottom:1px dashed var(--line);background:0 0;outline:none;padding:0 0 2px;transition:border-color .3s;overflow:hidden}.task-body input[readonly],.task-body textarea[readonly]{cursor:default;border-bottom-color:#0000}.task-body input:focus,.task-body textarea:focus{border-bottom-color:var(--rose-400)}.task-blank-wrap{flex-wrap:wrap;align-items:baseline;gap:4px;min-width:0;display:flex}.task-blank-wrap>span{white-space:nowrap;flex-shrink:0}.task-blank-wrap .blank-input{flex:auto;width:auto;min-width:80px;max-width:160px}.task-blank-wrap:has(.blank-input-grow){flex-wrap:nowrap;flex:1 1 0;min-width:0}.task-blank-wrap .blank-input-grow{flex:1 1 0;min-width:0;max-width:none}.task-edit>.task-free-input,.task-blank-wrap textarea.blank-input{white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-all;line-break:anywhere;display:block}.saturday-page .sat-title{text-align:center;font-family:var(--font-serif);letter-spacing:6px;color:var(--ink);margin:12px 0 28px;font-size:32px;font-weight:500;position:relative}.saturday-page .sat-title:after{content:"";background:var(--rose-300);width:60px;height:1.5px;margin:14px auto 0;display:block}.saturday-page .task-item{--task-fs:22px;--task-lh:1.5;border-width:2px;border-radius:16px;gap:14px;padding:18px 20px}.saturday-page .task-item.undone{background:var(--undone-bg)}.saturday-page .check-btn{width:40px;height:40px}.saturday-page .check-btn svg{width:20px;height:20px}.saturday-page .task-index{font-size:.9em}.saturday-page .task-body{font-size:var(--task-fs);line-height:var(--task-lh)}.saturday-page .task-body textarea{min-height:36px;font-size:22px}.journal{width:100%;max-width:480px;margin:28px auto 40px}.journal-label{font-family:var(--font-serif);color:var(--ink-mute);letter-spacing:3px;align-items:center;gap:10px;margin-bottom:10px;font-size:13px;display:flex}.journal-label:before,.journal-label:after{content:"";background:var(--line-soft);flex:1;height:1px}.journal textarea{border:1.5px solid var(--line-soft);width:100%;min-height:120px;font-family:var(--font-serif);color:var(--ink);resize:none;background:#ffffff80;border-radius:12px;outline:none;padding:14px 16px;font-size:14px;line-height:1.8;transition:border-color .3s,box-shadow .3s;overflow:hidden}.journal textarea:focus{border-color:var(--rose-300);box-shadow:0 0 0 3px #c4788a1a}.journal textarea::placeholder{color:var(--ink-mute);opacity:.6}.stats-card{border:1.5px solid var(--line);border-radius:var(--radius);width:100%;max-width:480px;animation:taskIn .4s var(--ease);background:#fff9;margin:0 auto 16px;padding:20px}.stats-card h3{font-family:var(--font-serif);color:var(--rose-600);letter-spacing:2px;margin-bottom:14px;font-size:15px;font-weight:500}.stats-grid{grid-template-columns:1fr 1fr;gap:12px;display:grid}.stat-cell{text-align:center;background:var(--rose-50);border:1px solid var(--line-soft);border-radius:10px;padding:12px 8px}.stat-cell .num{font-family:var(--font-serif);color:var(--ink);font-size:26px;font-weight:500}.stat-cell .label{color:var(--ink-mute);letter-spacing:1px;margin-top:4px;font-size:11px}.subject-bars{flex-direction:column;gap:8px;display:flex}.subject-bar{align-items:center;gap:10px;font-size:13px;display:flex}.subject-bar .name{width:36px;color:var(--ink-soft)}.subject-bar .track{background:var(--rose-100);border-radius:3px;flex:1;height:6px;overflow:hidden}.subject-bar .fill{background:linear-gradient(90deg, var(--rose-300), var(--rose-500));height:100%;transition:width .6s var(--ease);border-radius:3px}.subject-bar .count{text-align:right;width:24px;color:var(--ink-mute);font-size:12px}.perfect-badge{border:1.5px solid var(--rose-300);color:var(--rose-600);letter-spacing:1px;border-radius:20px;align-items:center;gap:6px;margin-top:12px;padding:6px 14px;font-size:12px;display:inline-flex}.week-view,.month-view{width:100%;max-width:560px;margin:0 auto}.view-title{text-align:center;font-family:var(--font-serif);letter-spacing:3px;margin-bottom:24px;font-size:20px}.week-days{flex-direction:column;gap:10px;display:flex}.week-day-row{border:1.5px solid var(--line-soft);cursor:pointer;min-height:52px;transition:all .3s var(--ease);animation:taskIn .35s var(--ease) backwards;background:#ffffff8c;border-radius:12px;align-items:center;gap:14px;padding:14px 16px;display:flex}.week-day-row:active{border-color:var(--rose-300);transform:scale(.99)}.week-day-row .dow{font-family:var(--font-serif);color:var(--rose-500);width:36px;font-size:14px}.week-day-row .date{color:var(--ink-soft);width:50px;font-size:13px}.week-day-row .progress{background:var(--rose-100);border-radius:2px;flex:1;height:4px;overflow:hidden}.week-day-row .progress-fill{background:var(--rose-400);height:100%;transition:width .5s var(--ease);border-radius:2px}.week-day-row .progress-text{color:var(--ink-mute);text-align:right;width:40px;font-size:12px}.week-day-row.sunday{border-style:dashed}.week-day-row.today{border-color:var(--rose-400);background:var(--rose-50)}.month-grid{grid-template-columns:repeat(7,1fr);gap:6px;display:grid}.month-dow{text-align:center;color:var(--ink-mute);letter-spacing:1px;padding:8px 0;font-size:11px}.month-cell{aspect-ratio:1;border:1px solid var(--line-soft);cursor:pointer;transition:all .25s var(--ease);background:#ffffff80;border-radius:10px;flex-direction:column;justify-content:center;align-items:center;gap:4px;font-size:13px;display:flex;position:relative}.month-cell:active:not(.empty){border-color:var(--rose-400);transform:scale(.96)}.month-cell.empty{cursor:default;background:0 0;border-color:#0000}.month-cell.today{border-color:var(--rose-500);background:var(--rose-100)}.month-cell .dot{background:var(--rose-300);border-radius:50%;width:5px;height:5px}.month-cell .dot.full{background:var(--rose-500)}.month-cell .dot.partial{background:var(--rose-300)}.month-cell .dot.none{border:1px solid var(--line);background:0 0}.month-nav{justify-content:center;align-items:center;gap:20px;margin-bottom:20px;display:flex}.month-nav button{border:1.5px solid var(--line);cursor:pointer;width:44px;height:44px;color:var(--rose-500);background:0 0;border-radius:50%;justify-content:center;align-items:center;font-size:16px;transition:all .2s;display:flex}.month-nav button:active:not(:disabled){background:var(--rose-100);transform:scale(.96)}.month-nav span{font-family:var(--font-serif);letter-spacing:2px;font-size:16px}.overlay{z-index:200;background:var(--bg-glow), var(--bg-base);padding:calc(72px + env(safe-area-inset-top,0px)) calc(20px + env(safe-area-inset-right,0px)) calc(40px + env(safe-area-inset-bottom,0px)) calc(20px + env(safe-area-inset-left,0px));animation:overlayIn .4s var(--ease);position:fixed;inset:0;overflow-y:auto}.overlay:before{content:"";pointer-events:none;opacity:.35;background-image:var(--bg-pattern);background-size:160px 160px;position:fixed;inset:0;-webkit-mask-image:radial-gradient(64% 60% at 50% 40%,#0000 50%,#000 100%);mask-image:radial-gradient(64% 60% at 50% 40%,#0000 50%,#000 100%)}.overlay.hiding{animation:overlayOut .3s var(--ease) forwards}@keyframes overlayIn{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes overlayOut{to{opacity:0;transform:translateY(20px)}}.overlay-close{top:calc(12px + env(safe-area-inset-top,0px));right:calc(12px + env(safe-area-inset-right,0px));z-index:210;border:1.5px solid var(--line);cursor:pointer;width:44px;height:44px;color:var(--ink-soft);background:#fffafbe6;border-radius:50%;justify-content:center;align-items:center;font-size:18px;transition:all .2s;display:flex;position:fixed}.overlay-close:active{background:var(--rose-100);color:var(--rose-600);transform:scale(.96)}.overlay h2{font-family:var(--font-serif);text-align:center;letter-spacing:4px;margin-bottom:28px;font-size:22px;font-weight:500}.fav-list{flex-direction:column;gap:12px;max-width:480px;margin:0 auto;display:flex}.fav-item{border:1.5px solid var(--line-soft);animation:taskIn .35s var(--ease) backwards;cursor:pointer;background:#ffffff8c;border-radius:12px;padding:16px 18px;transition:border-color .2s}.fav-item:active{border-color:var(--rose-300)}.fav-item .poem{font-family:var(--font-poem);color:var(--ink);font-size:18px;line-height:1.7}.fav-item .meta{color:var(--ink-mute);letter-spacing:1px;margin-top:8px;font-size:11px}.fav-empty{text-align:center;color:var(--ink-mute);font-family:var(--font-serif);padding:60px 20px;font-size:15px}.lottery-wrap{text-align:center;max-width:400px;margin:0 auto}.wheel-container{width:280px;height:280px;margin:0 auto 28px;position:relative}.wheel{border:3px solid var(--rose-300);width:100%;height:100%;box-shadow:var(--shadow), inset 0 0 30px #c4788a1a;border-radius:50%;transition:transform 4s cubic-bezier(.15,.8,.1,1);position:relative;overflow:hidden}.wheel-pointer{z-index:5;border-left:10px solid #0000;border-right:10px solid #0000;border-top:18px solid var(--rose-500);filter:drop-shadow(0 2px 4px #00000026);width:0;height:0;position:absolute;top:-8px;left:50%;transform:translate(-50%)}.wheel-center{background:var(--paper);border:2px solid var(--rose-400);z-index:4;width:48px;height:48px;box-shadow:var(--shadow);border-radius:50%;justify-content:center;align-items:center;font-size:18px;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.spin-btn{border:1.5px solid var(--rose-400);background:var(--rose-100);min-height:48px;color:var(--rose-600);font-family:var(--font-serif);letter-spacing:3px;cursor:pointer;transition:all .3s var(--ease);border-radius:28px;padding:12px 36px;font-size:15px}.spin-btn:active:not(:disabled){background:var(--rose-400);color:#fff;transform:scale(.97)}.spin-btn-secondary{min-height:44px;padding:12px 24px;font-size:13px}.spin-btn:disabled{opacity:.4;cursor:not-allowed}.lottery-info{color:var(--ink-mute);margin-top:20px;font-size:13px;line-height:1.8}.lottery-result{border:1.5px solid var(--rose-300);background:var(--rose-50);font-family:var(--font-serif);color:var(--ink);animation:taskIn .4s var(--ease);border-radius:12px;margin-top:20px;padding:16px;font-size:16px}.exam-spin-row{border-top:1px dashed var(--line);margin-top:24px;padding-top:20px}.exam-check-label{min-height:48px;color:var(--ink-soft);cursor:pointer;text-align:left;border:1.5px solid #0000;border-radius:12px;justify-content:center;align-items:center;gap:12px;margin-bottom:12px;padding:8px 12px;font-size:13px;display:flex}.exam-check-label:active{background:var(--rose-50);border-color:var(--line-soft)}.exam-check-label input[type=checkbox]{accent-color:var(--rose-500);flex-shrink:0;width:22px;height:22px;margin:0}.exam-spin-row .spin-btn{width:100%;max-width:280px}.dialog-backdrop{z-index:300;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:overlayIn .25s var(--ease);background:#3a2a3059;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.dialog{background:var(--paper);border:1.5px solid var(--line);border-radius:var(--radius);width:100%;max-width:340px;box-shadow:var(--shadow);text-align:center;animation:taskIn .3s var(--ease-spring);padding:28px 24px 20px}.dialog p{font-family:var(--font-serif);color:var(--ink);margin-bottom:20px;font-size:15px;line-height:1.7}.dialog-actions{justify-content:center;gap:10px;display:flex}.dialog-actions button{min-width:96px;min-height:44px;font-family:var(--font-sans);cursor:pointer;border-radius:22px;padding:10px 22px;font-size:14px;transition:all .2s}.dialog-actions .confirm{border:1.5px solid var(--rose-400);background:var(--rose-400);color:#fff}.dialog-actions .cancel{border:1.5px solid var(--line);color:var(--ink-soft);background:0 0}.dialog-actions button:active{transform:scale(.97)}.toast{bottom:calc(40px + env(safe-area-inset-bottom,0px));z-index:400;color:#fff;opacity:0;transition:all .35s var(--ease);pointer-events:none;white-space:normal;text-align:center;background:#3a2a30e0;border-radius:20px;max-width:min(320px,100vw - 40px);padding:10px 20px;font-size:13px;line-height:1.45;position:fixed;left:50%;transform:translate(-50%)translateY(20px)}.toast.show{opacity:1;transform:translate(-50%)translateY(0)}.tabs{justify-content:center;gap:8px;margin-bottom:20px;display:flex}.tab{border:1.5px solid var(--line);min-height:44px;color:var(--ink-soft);cursor:pointer;font-size:13px;font-family:var(--font-sans);background:0 0;border-radius:22px;padding:10px 18px;transition:all .25s}.tab.active{background:var(--rose-100);border-color:var(--rose-400);color:var(--rose-600)}.tab:active{transform:scale(.97)}.lucky-meter{text-align:center;margin:20px 0}.lucky-meter .score{font-family:var(--font-serif);color:var(--rose-500);font-size:48px;font-weight:500}.lucky-meter .label{color:var(--ink-mute);letter-spacing:3px;margin-top:4px;font-size:12px}.lucky-bar{background:var(--rose-100);border-radius:4px;max-width:240px;height:8px;margin:12px auto 0;overflow:hidden}.lucky-bar .fill{background:linear-gradient(90deg, var(--rose-300), #e8a0b0, #f0c060);height:100%;transition:width .8s var(--ease);border-radius:4px}.view-bar{flex-direction:column;align-items:center;gap:6px;max-width:480px;margin:0 auto 14px;display:flex}.view-switcher{border:1.5px solid var(--line-soft);background:#ffffff8c;border-radius:999px;gap:6px;padding:4px;display:flex}.view-chip{min-width:52px;min-height:36px;font-family:var(--font-serif);letter-spacing:2px;color:var(--ink-mute);cursor:pointer;background:0 0;border:none;border-radius:999px;padding:6px 14px;font-size:13px;transition:background .2s,color .2s}.view-chip.active{background:var(--rose-100);color:var(--rose-600)}.view-chip:active{transform:scale(.96)}.swipe-hint{text-align:center;color:var(--ink-mute);opacity:.55;letter-spacing:1px;font-size:11px}.app-footer{border-top:1px solid var(--line-soft);max-width:480px;font-family:var(--font-serif);letter-spacing:2px;color:var(--ink-mute);opacity:.7;justify-content:center;align-items:center;gap:8px;margin:28px auto 8px;padding:16px 12px 4px;font-size:12px;display:flex}.app-footer-brand{color:var(--rose-500)}.app-footer-sep{opacity:.5}.app-footer-version{font-family:var(--font-sans);letter-spacing:.5px;font-variant-numeric:tabular-nums}.sat-add{border:1.5px dashed var(--line);width:100%;max-width:480px;min-height:48px;color:var(--rose-600);font-family:var(--font-serif);letter-spacing:2px;cursor:pointer;background:#fff6;border-radius:12px;justify-content:center;align-items:center;margin:12px auto 8px;font-size:15px;transition:background .2s,border-color .2s;display:flex}.sat-add:active{background:var(--rose-50);border-color:var(--rose-300)}.sat-delete{width:36px;height:36px;color:var(--ink-mute);cursor:pointer;background:0 0;border:none;border-radius:50%;flex-shrink:0;margin-top:2px;font-size:22px;line-height:1;position:relative}.sat-delete:before{content:"";position:absolute;inset:-4px}.sat-delete:active{background:var(--undone-bg);color:var(--rose-600)}.sat-empty{text-align:center;color:var(--ink-mute);padding:20px 12px;font-size:13px}.wheel-label{white-space:nowrap;font-size:11px;font-family:var(--font-serif);pointer-events:none;position:absolute}.wheel-legend{text-align:left;grid-template-columns:1fr 1fr;gap:8px 12px;max-width:320px;margin:0 auto 20px;padding:0;list-style:none;display:grid}.wheel-legend-item{color:var(--ink-soft);align-items:center;gap:8px;font-size:12px;line-height:1.35;display:flex}.wheel-legend-swatch{border:1px solid var(--line);border-radius:50%;flex-shrink:0;width:10px;height:10px}.save-dot{bottom:calc(16px + env(safe-area-inset-bottom,0px));right:calc(16px + env(safe-area-inset-right,0px));z-index:50;background:var(--rose-300);opacity:0;border-radius:50%;width:8px;height:8px;transition:opacity .3s;position:fixed}.save-dot.saving{opacity:1;animation:.6s savePulse}@keyframes savePulse{0%,to{transform:scale(1)}50%{transform:scale(1.5)}}@media (width<=430px){.toolbar-btn{top:calc(8px + env(safe-area-inset-top,0px));left:calc(8px + env(safe-area-inset-left,0px))}.toolbar-panel{top:calc(60px + env(safe-area-inset-top,0px));left:calc(8px + env(safe-area-inset-left,0px));width:min(280px, calc(100vw - 16px - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px)));max-height:calc(100dvh - 76px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px));-webkit-overflow-scrolling:touch;overflow-y:auto}.toolbar-item{min-height:48px;font-size:14px}.page,.flip-page-face{padding:calc(60px + env(safe-area-inset-top,0px)) calc(12px + env(safe-area-inset-right,0px)) calc(20px + env(safe-area-inset-bottom,0px) + var(--kb-inset,0px)) calc(12px + env(safe-area-inset-left,0px))}.blessing{margin-bottom:8px;padding:0 4px}.blessing-ornament{gap:8px;margin-bottom:4px;font-size:8px}.blessing-ornament:before,.blessing-ornament:after{width:24px}.blessing-text{min-height:2.9em;font-size:15px;line-height:1.45}.blessing-actions{gap:8px;margin-top:4px}.view-bar{margin-bottom:10px}.view-chip{min-width:48px;min-height:40px}.date-header{margin-bottom:12px}.date-header h1{letter-spacing:1px;font-size:17px}.task-list{gap:6px}.task-item{padding:10px 12px}.task-body input,.task-body textarea,.journal textarea{font-size:16px}.task-blank-wrap{gap:2px}.task-blank-wrap .blank-input{min-width:64px}.week-day-row{gap:8px;padding:12px}.week-day-row .dow{width:32px}.week-day-row .date{width:44px}.week-day-row .progress-text{width:36px}.month-grid{gap:4px}.month-cell{border-radius:8px}.saturday-page .sat-title{letter-spacing:3px;margin:4px 0 18px;font-size:24px}.saturday-page .task-item{--task-fs:18px}.saturday-page .task-body textarea{font-size:18px}.wheel-container{width:240px;height:240px}.journal{margin:20px auto 28px}.journal textarea{min-height:96px}}@media (width<=360px){.page,.flip-page-face{padding-right:calc(10px + env(safe-area-inset-right,0px));padding-left:calc(10px + env(safe-area-inset-left,0px))}.date-header h1{font-size:16px}.date-header .sub{letter-spacing:0;font-size:11px}.task-item{--task-fs:14px;gap:8px;padding:10px}.stats-card{padding:16px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (width>=768px){body{background-attachment:fixed}.page,.flip-page-face{padding:calc(80px + env(safe-area-inset-top,0px)) 40px calc(40px + env(safe-area-inset-bottom,0px) + var(--kb-inset,0px)) 40px}.journal textarea{resize:vertical;overflow:auto}}@media (hover:hover) and (pointer:fine){.toolbar-btn:hover{border-color:var(--rose-400);transform:scale(1.08)}.toolbar-item:hover{background:var(--rose-100)}.blessing-text:hover{color:var(--rose-600)}.date-nav-fixed:hover:not(:disabled){background:var(--rose-100);border-color:var(--rose-300)}.task-item:hover{border-color:var(--line);box-shadow:0 2px 12px #c4788a14}.check-btn:hover{border-color:var(--rose-400);transform:scale(1.1)}.week-day-row:hover{border-color:var(--rose-300);box-shadow:var(--shadow);transform:translate(4px)}.month-cell:hover:not(.empty){border-color:var(--rose-400);transform:scale(1.06)}.month-nav button:hover:not(:disabled){background:var(--rose-100)}.overlay-close:hover{background:var(--rose-100);color:var(--rose-600)}.fav-item:hover{border-color:var(--rose-300)}.spin-btn:hover:not(:disabled){background:var(--rose-400);color:#fff;transform:scale(1.05)}.dialog-actions button:hover{transform:scale(1.05)}.view-chip:hover:not(.active){background:var(--rose-50)}.sat-add:hover{background:var(--rose-50);border-color:var(--rose-300)}}@media (orientation:landscape) and (height<=500px){.page,.flip-page-face{padding-top:calc(52px + env(safe-area-inset-top,0px));padding-bottom:calc(12px + env(safe-area-inset-bottom,0px) + var(--kb-inset,0px))}.blessing{margin-bottom:4px}.blessing-ornament{display:none}.blessing-text{min-height:2.7em;font-size:14px;line-height:1.35}.blessing-actions{margin-top:2px}.date-header{margin-bottom:6px}.date-header h1{font-size:15px}.view-bar{margin-bottom:6px}.saturday-page .sat-title{margin:2px 0 10px;font-size:18px}}
