:root{--paper: #fffdf6;--ink: #2a2b3c;--line: #c9d8ee;--margin: #ef7d7d;--marker: #ffe680;--fight: #ff5c8a;--fight-soft: #ffd9e4;--desk: #e6d7bf}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{height:100%}body{margin:0;font-family:Patrick Hand,ui-rounded,system-ui,sans-serif;color:var(--ink);background:radial-gradient(120% 90% at 50% -10%,#f7ecd9 0%,var(--desk) 45%,#d8c6a9 100%);background-attachment:fixed;min-height:100svh}#root{min-height:100svh;display:flex;justify-content:center;align-items:stretch}.book{position:relative;width:100%;max-width:100%;display:flex;flex-direction:column;min-height:100svh;background:var(--paper);border-radius:0;box-shadow:none;padding:calc(18px + env(safe-area-inset-top)) clamp(12px,3.5vw,28px) calc(16px + env(safe-area-inset-bottom)) clamp(26px,5.5vw,40px);overflow:hidden}@media(min-width:700px){#root{padding:28px 16px;align-items:flex-start;box-sizing:border-box}.book{max-width:760px;min-height:calc(100svh - 56px);border-radius:6px 10px 10px 6px;box-shadow:0 1px #fffc inset,0 18px 40px -18px #3c2d148c,0 2px 6px #3c2d142e}}.book:before{content:"";position:absolute;inset:0;background-image:repeating-linear-gradient(to bottom,transparent 0 27px,var(--line) 27px 28px);opacity:.55;pointer-events:none}.book:after{content:"";position:absolute;top:0;bottom:0;left:26px;width:2px;background:var(--margin);opacity:.75}.holes{position:absolute;left:6px;top:34px;bottom:34px;width:14px;display:flex;flex-direction:column;justify-content:space-between}.holes i{display:block;width:12px;height:12px;border-radius:50%;background:#e2d6c1;box-shadow:inset 0 2px 3px #5a462859,0 1px #fff}.tape{position:absolute;width:96px;height:26px;background:#fff6bebf;border-left:1px dashed rgba(180,160,90,.4);border-right:1px dashed rgba(180,160,90,.4);box-shadow:0 1px 3px #00000014;transform:rotate(-4deg);top:-10px;right:26px}header{position:relative;z-index:2;margin-bottom:6px}.kicker{font-family:Kalam,sans-serif;font-weight:300;font-size:clamp(10px,2.6vw,13px);letter-spacing:.24em;text-transform:uppercase;color:#8b8398;margin-bottom:2px}h1{font-family:Caveat,cursive;font-weight:700;font-size:clamp(36px,9.6vw,54px);line-height:.98;margin:0;letter-spacing:-.5px;display:inline-block;position:relative;z-index:0}h1 .year{font-size:.74em}h1 .hl{position:absolute;left:-4px;right:-8px;bottom:4px;height:15px;background:var(--marker);opacity:.85;z-index:-1;transform:rotate(-1.2deg);border-radius:3px}.sub{font-family:Kalam,sans-serif;font-size:clamp(12px,3.1vw,15px);color:#7d7488;margin-top:8px;display:flex;align-items:center;gap:8px}.sub .dot{width:5px;height:5px;border-radius:50%;background:var(--fight);opacity:.7}.cal{position:relative;z-index:2;margin-top:clamp(10px,2.4vw,18px);display:flex;flex-direction:column;flex:0 0 auto}.dow{display:grid;grid-template-columns:repeat(7,1fr);gap:clamp(3px,1vw,7px);margin-bottom:6px}.dow span{font-family:Kalam,sans-serif;font-weight:700;font-size:clamp(10px,2.5vw,13px);letter-spacing:.08em;text-align:center;color:#6d6580}.dow span.we{color:var(--margin)}.grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-auto-rows:clamp(52px,17.5vw,92px);gap:clamp(3px,1vw,7px)}.day{position:relative;isolation:isolate;min-height:0;border-radius:clamp(4px,1.2vw,7px);border:1px solid rgba(150,142,170,.15);padding:clamp(3px,1vw,6px) clamp(4px,1.2vw,7px);display:flex;flex-direction:column;align-items:flex-start;font-family:Kalam,sans-serif;font-size:clamp(14px,3.7vw,19px);font-weight:400;line-height:1;background:transparent;color:inherit;cursor:default;text-align:left}button.day{appearance:none;cursor:pointer}.day .n{position:relative;z-index:2}.day.out .n{color:#c3bccd}.day.we .n{color:#c9636a}.day.logged{background:radial-gradient(140% 90% at 50% 100%,#ffe68038,#ffe68000 72%)}.day.fight{background:radial-gradient(140% 90% at 50% 100%,var(--fight-soft) 0%,rgba(255,217,228,0) 70%)}.day.fight .stamp{color:#b8335a}.day.fight .n{position:relative;color:#c02a54}.day.fight .n:after{content:"";position:absolute;inset:-1px -5px -3px;background:var(--fight-soft);border-radius:2px;z-index:-1;transform:rotate(-1.5deg)}.day .stamp{position:absolute;right:3px;bottom:3px;width:clamp(11px,2.9vw,16px);line-height:0;transform:rotate(-8deg);opacity:.92;color:#2b2333}.day .stamp svg{width:100%;height:auto;display:block}.day.today .n{display:inline-flex;align-items:center;justify-content:center;width:clamp(24px,6.4vw,34px);height:clamp(24px,6.4vw,34px);margin:clamp(-4px,-1vw,-3px) 0 0 clamp(-4px,-1vw,-3px);border:2px solid var(--margin);border-radius:50%;color:#b83c48;transform:rotate(-3deg)}.day.today .n:after{display:none}.today-note{position:absolute;left:50%;top:clamp(-11px,-2.6vw,-8px);transform:translate(-40%) rotate(-3deg);font-family:Caveat,cursive;font-size:clamp(12px,3vw,16px);color:var(--margin);white-space:nowrap;pointer-events:none}.notes{position:relative;z-index:2;margin-top:auto;display:flex;gap:10px;align-items:flex-start;justify-content:space-between;border-top:1px dashed #d9cfc0;padding-top:10px}.legend{font-family:Kalam,sans-serif;font-size:clamp(12px,3vw,15px);color:#5d5570;display:flex;flex-direction:column;gap:5px}.legend .row{display:flex;align-items:center;gap:7px}.swatch{width:22px;height:11px;border-radius:2px;background:var(--fight-soft);transform:rotate(-2deg);box-shadow:0 0 0 1px #ff5c8a40 inset}.count{font-family:Caveat,cursive;font-size:clamp(16px,4.2vw,22px);color:#3f3a52;text-align:right;line-height:1.15}.count b{color:#6b5a94}.count-sub{display:block;margin-top:2px;font-size:.7em;color:#b07b8c}.cta-wrap{position:relative;z-index:2;margin-top:16px;padding-bottom:2px;display:flex;justify-content:center}.cta{appearance:none;border:0;cursor:pointer;font-family:Patrick Hand,sans-serif;font-size:clamp(17px,4.4vw,21px);letter-spacing:.02em;color:#fff;background:linear-gradient(160deg,#ff6f97,#e8407a);padding:clamp(13px,3.4vw,17px) clamp(26px,7vw,40px);border-radius:999px;box-shadow:0 10px 20px -8px #e8407abf,0 2px #c62f63;display:inline-flex;align-items:center;gap:9px;transform:rotate(-.6deg);transition:transform .12s ease,box-shadow .12s ease,background .2s ease}.cta:active{transform:translateY(1px) rotate(-.6deg) scale(.99);box-shadow:0 6px 14px -8px #e8407abf,0 1px #c62f63}.cta.is-logged{background:linear-gradient(160deg,#8f7fbd,#6a5b96);box-shadow:0 10px 20px -8px #6a5b96b3,0 2px #5a4c85}.cta .fist{font-size:18px;transform:rotate(-8deg)}.doodle{position:absolute;pointer-events:none;opacity:.5;z-index:1}.d-star{bottom:78px;left:14px;font-size:17px;color:#ffc23d;transform:rotate(12deg)}.d-heart{bottom:22px;right:16px;font-size:15px;color:#ff9bb4;transform:rotate(-14deg)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(prefers-reduced-motion:reduce){*{transition:none!important}}.error-note{position:relative;z-index:2;margin:10px 0 0;font-family:Kalam,sans-serif;font-size:12px;color:#b83c48;text-align:center}.install-note{position:relative;z-index:2;margin:14px auto 0;width:min(100%,380px);background:linear-gradient(170deg,#fff8d6,#fdf0b8);border:1px solid rgba(190,160,60,.28);border-radius:4px;padding:13px 14px 12px;transform:rotate(-.7deg);box-shadow:0 8px 16px -10px #785f198c;font-family:Kalam,sans-serif;font-size:clamp(12px,3vw,14px);color:#4a4230;line-height:1.45}.install-note:before{content:"";position:absolute;top:-9px;left:50%;width:74px;height:18px;transform:translate(-50%) rotate(1.5deg);background:#ffffff8c;border-left:1px dashed rgba(160,150,110,.5);border-right:1px dashed rgba(160,150,110,.5)}.install-title{font-family:Caveat,cursive;font-size:clamp(18px,4.6vw,22px);font-weight:700;color:#7a5c14;margin-bottom:4px;line-height:1.05}.install-body{margin:0}.install-body.tiny{margin-top:6px;font-size:.86em;color:#7c6f4f}.install-steps{margin:4px 0 0;padding-left:18px;display:flex;flex-direction:column;gap:3px}.install-steps li{padding-left:2px}.install-steps b{font-weight:700;color:#5d4a12}.install-steps .hint{color:#8a7c57;font-size:.9em}.glyph{vertical-align:-.16em;color:#7a5c14}.install-btn{margin-top:9px;appearance:none;border:0;cursor:pointer;font-family:Patrick Hand,sans-serif;font-size:clamp(14px,3.6vw,16px);color:#4a3a08;background:#ffde6b;padding:9px 16px;border-radius:999px;box-shadow:0 3px #d9b73f;transform:rotate(-.4deg)}.install-btn:active{transform:translateY(2px) rotate(-.4deg);box-shadow:0 1px #d9b73f}.install-btn:disabled{opacity:.7;cursor:default}.install-x{position:absolute;top:6px;right:6px;appearance:none;border:0;background:transparent;color:#a08f57;font-size:12px;line-height:1;padding:5px;cursor:pointer}.install-x:hover{color:#6d5c22}.kicker-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.tabs{display:flex;gap:3px;flex-shrink:0;border-bottom:1.5px solid rgba(105,92,138,.35)}.tab{appearance:none;cursor:pointer;font-family:Kalam,sans-serif;font-weight:700;font-size:clamp(12px,3vw,14px);letter-spacing:.08em;color:#5c5273;background:#efe7d4;border:1.5px solid rgba(105,92,138,.45);border-radius:7px 7px 0 0;padding:4px 12px 3px;position:relative;top:2px;transition:background .15s ease,color .15s ease}.tab.active{background:var(--marker);color:#5d4a12;border-color:#8a6f18;box-shadow:0 -1px #78641e26 inset,0 -2px 6px -3px #96781e80}.tab:not(.active):hover{background:#f8f1df}.title-row{display:flex;align-items:center;gap:4px;margin-top:2px}.title-row h1{flex:0 1 auto;min-width:0}.title-btn{appearance:none;background:none;border:0;padding:0;font:inherit;color:inherit;letter-spacing:inherit;cursor:pointer}.year-only{font-size:1em}.nav-arrow{appearance:none;cursor:pointer;width:clamp(38px,10vw,46px);height:clamp(38px,10vw,46px);flex:0 0 auto;display:flex;align-items:center;justify-content:center;padding:0;color:#4a3f6b;background:#fffdf3;border:2px solid #6b5a94;border-radius:46% 54% 52% 48%/53% 47% 55% 45%;box-shadow:0 2px #6b5a9459,0 4px 10px -6px #3c2d6480;transition:background .14s ease,transform .1s ease,box-shadow .14s ease}.nav-arrow svg{width:66%;height:66%}.nav-arrow:hover{color:#3b3159;background:#fff3c9;border-color:#54407f}.nav-arrow:active{transform:translateY(2px);box-shadow:0 0 #6b5a9459,0 2px 6px -5px #3c2d6480;background:#ffeaa0}.nav-arrow:focus-visible{outline:2.5px dashed #8a76c4;outline-offset:2px}.year-grid{position:relative;z-index:2;margin-top:clamp(10px,2.4vw,18px);display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(6px,2vw,12px)}@media(min-width:520px){.year-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}.mini{appearance:none;cursor:pointer;background:#ffffff73;border:1px solid rgba(150,142,170,.2);border-radius:6px;padding:clamp(4px,1.4vw,7px);font-family:Kalam,sans-serif;text-align:left;transition:background .15s ease,border-color .15s ease}.mini:active{background:#ffe68073;border-color:#c8aa3c80}.mini-head{display:flex;align-items:baseline;justify-content:space-between;gap:4px;margin-bottom:4px;font-size:clamp(10px,2.7vw,13px);color:#6d6580}.mini-name{font-weight:700;letter-spacing:.04em}.mini-count{font-weight:700;color:#c02a54;font-size:.95em}.mini-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:clamp(1px,.5vw,2px)}.mini-cell{aspect-ratio:1;border-radius:1.5px;background:#968eaa21}.mini-cell.out{background:transparent}.mini-cell.logged{background:#6b5a94;border-radius:50%}.mini-cell.fight{background:var(--fight);border-radius:50%}.mini-cell.today{outline:1.5px solid var(--margin);outline-offset:0}.cta.ghost{background:linear-gradient(160deg,#cbbfe4,#a294c9);box-shadow:0 10px 20px -8px #8c7db4a6,0 2px #8a7cb2;color:#fff}.legend-x{display:inline-flex;align-items:center;justify-content:center;width:15px;color:#2b2333}.legend-x.is-fight{color:#b8335a}.legend-x svg,.cta-rose svg{width:100%;height:auto;display:block}.cta-rose{display:inline-block;width:19px}.legend-hint{color:#8b8398;font-size:.92em}.modal-backdrop{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;padding:18px;background:#261e308c;backdrop-filter:blur(2px);animation:fade-in .16s ease-out}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes slip-in{0%{opacity:0;transform:translateY(10px) rotate(-1.4deg) scale(.98)}to{opacity:1;transform:translateY(0) rotate(-.8deg) scale(1)}}.modal-panel{position:relative;width:min(100%,400px);max-height:min(88svh,620px);overflow-y:auto;background:var(--paper);border-radius:5px;padding:20px 18px 16px;transform:rotate(-.8deg);box-shadow:0 24px 50px -20px #281c37b3,0 2px #ffffffb3 inset;background-image:repeating-linear-gradient(to bottom,transparent 0 26px,rgba(201,216,238,.55) 26px 27px);animation:slip-in .18s ease-out}.modal-tape{position:absolute;top:-11px;left:50%;width:90px;height:22px;transform:translate(-50%) rotate(1.8deg);background:#fff6becc;border-left:1px dashed rgba(180,160,90,.45);border-right:1px dashed rgba(180,160,90,.45)}.modal-title{font-family:Caveat,cursive;font-size:clamp(26px,7vw,32px);line-height:1;margin:2px 0 4px;color:#3f3a52;letter-spacing:-.5px}.modal-date{font-family:Kalam,sans-serif;font-size:13px;color:#7d7488;margin:0 0 12px;text-transform:uppercase;letter-spacing:.1em}.modal-body{font-family:Kalam,sans-serif;font-size:14px;color:#4c4660;line-height:1.5;margin:0 0 10px}.modal-body.muted{color:#8b8398;font-style:italic}.modal-warning{display:flex;gap:9px;align-items:flex-start;background:#ff5c8a17;border:1px solid rgba(232,64,122,.35);border-left:4px solid #e8407a;border-radius:4px;padding:9px 11px;margin:0 0 14px;font-family:Kalam,sans-serif;font-size:13px;line-height:1.45;color:#8d2a4b}.warn-mark{flex:0 0 auto;width:19px;height:19px;border-radius:50%;background:#e8407a;color:#fff;font-family:Kalam,sans-serif;font-weight:700;font-size:13px;display:flex;align-items:center;justify-content:center;margin-top:1px}.modal-label{display:block;font-family:Kalam,sans-serif;font-weight:700;font-size:12.5px;color:#5d5570;margin-bottom:5px;letter-spacing:.02em}.modal-label .optional{font-weight:300;color:#948ba6}.modal-textarea{width:100%;resize:vertical;min-height:74px;font-family:Kalam,sans-serif;font-size:14px;line-height:1.6;color:var(--ink);background:#ffffffbf;border:1px solid rgba(150,142,170,.45);border-radius:4px;padding:8px 10px;outline:none}.modal-textarea:focus{border-color:#a06bd8;box-shadow:0 0 0 3px #a06bd829;background:#fff}.modal-textarea::placeholder{color:#b0a8bf}.modal-count{font-family:Kalam,sans-serif;font-size:10.5px;color:#a49bb4;text-align:right;margin-top:3px}.modal-reason{background:#ffe68047;border-radius:4px;padding:9px 11px;margin:4px 0 12px}.modal-reason p{margin:0;font-family:Kalam,sans-serif;font-size:14px;line-height:1.5;color:#4a4230;white-space:pre-wrap;overflow-wrap:anywhere}.modal-actions{display:flex;gap:9px;justify-content:flex-end;margin-top:14px}.btn{appearance:none;cursor:pointer;font-family:Patrick Hand,sans-serif;font-size:15px;padding:10px 16px;border-radius:999px;border:1.5px solid transparent;transition:transform .1s ease,box-shadow .12s ease,background .14s ease}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.6;cursor:default}.btn-ghost{background:transparent;border-color:#786e9166;color:#6d6580}.btn-ghost:hover{background:#786e9114}.btn-danger{background:linear-gradient(160deg,#ff6f97,#e8407a);color:#fff;box-shadow:0 3px #c62f63}.btn-danger:hover{background:linear-gradient(160deg,#ff7fa3,#ea4a83)}.btn:focus-visible{outline:2.5px dashed #8a76c4;outline-offset:2px}.auth-screen{min-height:100svh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:26px 18px calc(26px + env(safe-area-inset-bottom));background:radial-gradient(circle at 20% 12%,rgba(255,236,168,.5),transparent 55%),radial-gradient(circle at 84% 88%,rgba(198,182,236,.45),transparent 52%),var(--paper)}.auth-card{position:relative;width:min(100%,400px);background:var(--paper);border-radius:6px;padding:26px 22px 22px;transform:rotate(-.5deg);box-shadow:0 22px 46px -22px #2c203c99,0 1px #fffc inset;background-image:repeating-linear-gradient(to bottom,transparent 0 27px,rgba(201,216,238,.5) 27px 28px)}.auth-card.splash{text-align:center;padding:34px 22px 30px}.auth-tape{position:absolute;top:-11px;left:50%;width:96px;height:22px;transform:translate(-50%) rotate(1.6deg);background:#fff6bed9;border-left:1px dashed rgba(180,160,90,.45);border-right:1px dashed rgba(180,160,90,.45)}.auth-doodle{position:absolute;color:#6b5a9459;font-size:18px;line-height:1}.auth-doodle.star{top:16px;right:18px;transform:rotate(12deg)}.auth-doodle.heart{bottom:14px;left:16px;color:#e8407a40}.auth-kicker{margin:0 0 6px;font-family:Kalam,sans-serif;font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;color:#a79c86}.auth-title{margin:0 0 6px;font-family:Caveat,cursive;font-size:clamp(30px,8.6vw,38px);line-height:1.02;color:#3f3a52;letter-spacing:-.6px}.auth-sub{margin:0 0 18px;font-family:Kalam,sans-serif;font-size:14px;line-height:1.5;color:#6f6782}.auth-sub b{color:#4a4360;font-weight:700;overflow-wrap:anywhere}.auth-label{display:block;font-family:Kalam,sans-serif;font-weight:700;font-size:12.5px;letter-spacing:.02em;color:#5d5570;margin-bottom:6px}.auth-input{width:100%;font-family:Kalam,sans-serif;font-size:16px;color:var(--ink);background:#ffffffb8;border:1px solid rgba(150,142,170,.45);border-bottom:2px solid rgba(107,90,148,.55);border-radius:5px 5px 3px 3px;padding:11px 12px;outline:none}.auth-input:focus{background:#fff;border-color:#a06bd8cc;box-shadow:0 0 0 3px #a06bd826}.auth-input::placeholder{color:#b0a8bf}.auth-btn{width:100%;margin-top:16px;appearance:none;cursor:pointer;font-family:Patrick Hand,sans-serif;font-size:17px;padding:12px 18px;border-radius:999px;border:1.5px solid #5d4a7a;color:#fff;background:linear-gradient(165deg,#7d67b8,#5d4a7a);box-shadow:0 4px #463661;transition:transform .1s ease,background .14s ease}.auth-btn:hover:not(:disabled){background:linear-gradient(165deg,#8871c4,#66528a)}.auth-btn:active:not(:disabled){transform:translateY(2px);box-shadow:0 2px #463661}.auth-btn:disabled{opacity:.55;cursor:default;box-shadow:0 3px #6b5f80}.auth-btn:focus-visible{outline:2.5px dashed #8a76c4;outline-offset:3px}.auth-hint{margin:14px 0 0;font-family:Kalam,sans-serif;font-size:12px;line-height:1.5;color:#918a9f;text-align:center}.auth-error{margin:10px 0 0;font-family:Kalam,sans-serif;font-size:13px;line-height:1.45;color:#b03055;background:#ff5c8a1a;border-left:3px solid #e8407a;border-radius:3px;padding:7px 9px}.auth-offline{margin:16px 0 0;font-family:Kalam,sans-serif;font-size:12px;line-height:1.5;color:#8a6d2a;background:#ffd86638;border-radius:4px;padding:8px 10px}.auth-links{display:flex;justify-content:space-between;gap:10px;margin-top:14px}.auth-link{appearance:none;background:none;border:none;padding:4px 2px;cursor:pointer;font-family:Kalam,sans-serif;font-size:12.5px;color:#6b5a94;text-decoration:underline;text-decoration-style:dashed;text-underline-offset:3px}.auth-link:disabled{color:#a49bb4;cursor:default;text-decoration:none}.auth-foot{margin:0;font-family:Kalam,sans-serif;font-size:11px;letter-spacing:.04em;color:#a79c86}.code-row{display:grid;grid-template-columns:repeat(6,1fr);gap:7px;margin:4px 0 2px}.code-box{width:100%;aspect-ratio:1 / 1.12;text-align:center;font-family:Courier New,Courier,monospace;font-size:clamp(19px,6vw,24px);font-weight:700;color:#2f2a3d;background:#fff6d9;border:1.5px solid #ebd79a;border-radius:6px;outline:none;padding:0;caret-color:#6b5a94}.code-box:focus{border-color:#a06bd8;box-shadow:0 0 0 3px #a06bd833;background:#fffbe8}.code-box:disabled{opacity:.6}.account{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:6px;margin:18px auto 4px;max-width:100%;font-family:Kalam,sans-serif;font-size:11px;color:#a79c86}.account-who{max-width:190px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.account-dot{opacity:.6}.account-state{color:#8f8a7d}.account-link{appearance:none;background:none;border:none;padding:2px 1px;cursor:pointer;font:inherit;color:#6b5a94;text-decoration:underline;text-decoration-style:dashed;text-underline-offset:2px}.modal-panel.is-sealing{animation:panel-breathe .75s ease-out forwards}.modal-panel.is-sealing>*:not(.seal){animation:breathe-out .26s ease-out forwards}@keyframes panel-breathe{0%{transform:rotate(-.8deg) scale(1)}45%{transform:rotate(-.4deg) scale(.985)}to{transform:rotate(-.2deg) scale(.96);opacity:.92}}@keyframes breathe-out{to{opacity:0;transform:translateY(-4px)}}.modal-backdrop.is-sealing{animation:backdrop-release 1s ease-out forwards;pointer-events:none}@keyframes backdrop-release{0%{background:#261e308c;backdrop-filter:blur(2px)}55%{background:#fff4cd59;backdrop-filter:blur(1px)}to{background:#fffdf300;backdrop-filter:blur(0)}}.seal{position:absolute;inset:0;z-index:4;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;border-radius:5px;overflow:hidden;animation:fade-in .18s ease-out}.seal-wash{position:absolute;inset:-30%;background:radial-gradient(circle at 50% 46%,#ffeca5f2,#ffd9e48c 42%,#fffdf300 72%);animation:wash-bloom 1.05s ease-out forwards}@keyframes wash-bloom{0%{transform:scale(.35);opacity:0}35%{opacity:1}to{transform:scale(1.15);opacity:.75}}.seal-mark{position:relative;display:grid;place-items:center;width:min(54%,175px);aspect-ratio:1;transform:rotate(-5deg)}.seal-rose{width:100%;height:auto;color:#3a3050}.seal-rose .rose-petal,.seal-rose .rose-spiral,.seal-rose .rose-stem{stroke-dasharray:150;stroke-dashoffset:150;animation:rose-draw .62s cubic-bezier(.45,0,.25,1) forwards}.seal-rose .rose-petal:nth-of-type(1){animation-delay:.02s}.seal-rose .rose-petal:nth-of-type(2){animation-delay:.09s}.seal-rose .rose-petal:nth-of-type(3){animation-delay:.16s}.seal-rose .rose-petal:nth-of-type(4){animation-delay:.23s}.seal-rose .rose-petal:nth-of-type(5){animation-delay:.3s}.seal-rose .rose-spiral{animation-delay:.34s}.seal-rose .rose-stem{animation-delay:.5s}@keyframes rose-draw{to{stroke-dashoffset:0}}.seal-ring{position:absolute;inset:7%;border-radius:50%;border:1.5px solid rgba(58,48,80,.22);transform:scale(.55);opacity:0;animation:ring-out .85s cubic-bezier(.16,1,.3,1) .12s forwards}@keyframes ring-out{0%{transform:scale(.55);opacity:0}22%{opacity:.9}to{transform:scale(1.5);opacity:0}}.seal-stroke{stroke:#e8407a;stroke-width:8.5;stroke-linecap:round;stroke-dasharray:118;stroke-dashoffset:118;animation:pen-draw .42s cubic-bezier(.4,0,.2,1) forwards}.seal-stroke.b{animation-delay:.13s}@keyframes pen-draw{to{stroke-dashoffset:0}}.seal-caption{position:relative;margin:2px 0 0;font-family:Caveat,cursive;font-size:clamp(20px,5.4vw,26px);color:#6b5a94;opacity:0;animation:caption-up .5s ease-out .34s forwards}@keyframes caption-up{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.day.just-logged .stamp{animation:stamp-land .5s cubic-bezier(.2,1.6,.4,1) both}@keyframes stamp-land{0%{opacity:0;transform:rotate(-22deg) scale(2.1)}40%{opacity:1;transform:rotate(-10deg) scale(.86)}65%{transform:rotate(-8deg) scale(1.06)}to{opacity:1;transform:rotate(-8deg) scale(1)}}.day.just-logged:after{content:"";position:absolute;inset:-1px;border-radius:inherit;border:2px solid rgba(232,64,122,.55);pointer-events:none;animation:cell-ring 1s ease-out .1s forwards}@keyframes cell-ring{0%{opacity:.85;transform:scale(.72)}to{opacity:0;transform:scale(1.45)}}.afterglow{position:fixed;inset:0;z-index:30;pointer-events:none;background:radial-gradient(circle at 50% 45%,#ffe89680,#ffd6e247 38%,#fffdf300 70%);animation:afterglow-fade 1.9s ease-out forwards}@keyframes afterglow-fade{0%{opacity:0}18%{opacity:1}to{opacity:0}}@media(prefers-reduced-motion:reduce){.seal-wash,.seal-ring,.seal-caption,.seal-rose .rose-petal,.seal-rose .rose-spiral,.seal-rose .rose-stem,.modal-panel.is-sealing,.modal-backdrop.is-sealing,.day.just-logged .stamp,.day.just-logged:after,.afterglow{animation-duration:.01ms!important;animation-delay:0ms!important;stroke-dashoffset:0}}.fight-check{display:flex;align-items:center;gap:9px;margin:12px 0 2px;padding:9px 11px;border:1px dashed rgba(184,51,90,.35);border-radius:5px;background:#ffd9e438;font-family:Kalam,sans-serif;font-size:13.5px;color:#6d4553;cursor:pointer;user-select:none}.fight-check input{position:absolute;opacity:0;width:0;height:0}.check-box{flex:0 0 auto;width:19px;height:19px;border:2px solid rgba(184,51,90,.45);border-radius:4px;background:#ffffffbf;display:grid;place-items:center;transition:background .15s ease,border-color .15s ease,transform .12s ease}.check-box svg{width:14px;height:14px;color:#fff;opacity:0;transform:scale(.6);transition:opacity .14s ease,transform .16s cubic-bezier(.2,1.5,.4,1)}.fight-check input:checked+.check-box{background:#b8335a;border-color:#b8335a}.fight-check input:checked+.check-box svg{opacity:1;transform:scale(1)}.fight-check input:focus-visible+.check-box{outline:2.5px dashed #8a76c4;outline-offset:2px}.entry-flag{display:inline-flex;align-items:center;gap:7px;margin:0 0 12px;padding:5px 10px;border-radius:999px;background:#ffd9e480;font-family:Kalam,sans-serif;font-size:12.5px;color:#8d3552}.entry-flag .legend-x{width:13px}.modal-requirement{margin:8px 0 0;font-family:Kalam,sans-serif;font-size:11.5px;line-height:1.4;color:#a49bb4;text-align:right}.modal-empty-hint{margin:10px 0 0;padding:7px 10px;border-radius:4px;background:#ff5c8a1a;border-left:3px solid #e8407a;font-family:Kalam,sans-serif;font-size:12.5px;color:#8d2a4b;animation:hint-in .18s ease-out}@keyframes hint-in{0%{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:translateY(0)}}.btn:disabled{cursor:not-allowed;box-shadow:none;transform:none;filter:saturate(.5);opacity:.55}.install-note.is-login{margin:18px 0 0;width:100%;box-sizing:border-box;transform:none;background:linear-gradient(172deg,#fdf7dd,#f8edc2);border:1px dashed rgba(190,160,60,.45);box-shadow:none;padding:12px 13px 11px;font-size:12.5px}.install-note.is-login:before{display:none}.install-note.is-login .install-title{font-size:19px;margin-bottom:3px}.install-note.is-login .install-steps{margin-top:6px;padding-left:16px}.install-note.is-login .install-steps li{margin:2px 0}.install-note.is-login .install-btn{margin-top:8px;width:100%}
