:root{--sky-deep: #0a0c2b;--sky-mid: #151848;--sky-light: #2c2a6b;--moon: #ffd97d;--moon-deep: #f2b544;--star: #ffe9a8;--cream: #fff6e0;--ink: #2a2440;--lavender: #b9b3e6;--pink: #f2a6c8;--cell-border: rgba(185, 179, 230, .45);--font-hand: "Iansui", "jf-openhuninn", "PingFang TC", "Microsoft JhengHei", sans-serif}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--font-hand);background:var(--sky-deep);color:var(--cream);min-height:100vh;-webkit-font-smoothing:antialiased}button{font-family:inherit}body:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;pointer-events:none;opacity:.4;mix-blend-mode:soft-light;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='260' height='260'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}.night-sky{position:fixed;top:0;right:0;bottom:0;left:0;z-index:0;overflow:hidden;background:linear-gradient(180deg,var(--sky-deep) 0%,var(--sky-mid) 45%,var(--sky-light) 100%)}.sky-star{position:absolute;animation:twinkle 3s ease-in-out infinite}.sky-cloud{position:absolute;width:46vw;height:16vh;border-radius:50%;filter:blur(46px);opacity:.22;background:radial-gradient(ellipse at center,#6a5fc9 0%,transparent 70%);animation:drift 30s ease-in-out infinite alternate}.cloud-1{top:16%;left:-8%}.cloud-2{top:62%;right:-12%;animation-delay:-14s;background:radial-gradient(ellipse at center,#8a5fa8 0%,transparent 70%)}.sky-moon-corner{position:absolute;top:22px;right:4vw;animation:floaty 6s ease-in-out infinite}.crayon-moon{filter:drop-shadow(0 0 20px rgba(255,217,125,.35))}.page{position:relative;z-index:1;max-width:1280px;margin:0 auto;padding:clamp(16px,4vw,40px);animation:fadeUp .8s ease .1s backwards}.page-header{text-align:center;padding:clamp(24px,6vw,56px) 0 12px}.page-title{margin:0;font-size:clamp(1.8rem,5.5vw,3rem);font-weight:400;letter-spacing:.08em;color:var(--moon);text-shadow:0 0 24px rgba(255,217,125,.35)}.page-title:after{content:"";display:block;width:min(320px,70%);height:5px;margin:14px auto 0;border-radius:40% 60% 50% 55%;background:linear-gradient(90deg,transparent,var(--moon-deep) 18%,var(--pink) 50%,var(--moon-deep) 82%,transparent);opacity:.75}.page-tagline{margin:14px 0 4px;color:var(--lavender);font-size:clamp(.95rem,2.6vw,1.15rem);letter-spacing:.05em}.page-progress{margin:6px 0 0;color:var(--cream);font-size:clamp(.9rem,2.4vw,1.05rem);opacity:.9}.page-progress strong{color:var(--star);font-size:1.25em}.page-error{display:inline-block;margin-top:14px;padding:8px 18px;color:#ffb3b3;border:2px dashed rgba(255,150,150,.6);border-radius:14px 10px 16px 9px/10px 16px 9px 14px;background:#781e2840}.month-nav{position:sticky;top:0;z-index:10;display:flex;gap:8px;overflow-x:auto;padding:12px 4px;margin:8px -4px 20px;scrollbar-width:none;background:linear-gradient(180deg,rgba(10,12,43,.95) 0%,rgba(10,12,43,.8) 75%,transparent 100%);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}.month-nav::-webkit-scrollbar{display:none}.month-chip{flex-shrink:0;padding:6px 14px;font-size:.95rem;color:var(--lavender);background:#1e2150b3;border:2px solid rgba(185,179,230,.35);border-radius:14px 10px 15px 9px/10px 15px 9px 14px;cursor:pointer;transition:transform .15s ease,color .15s ease,border-color .15s ease}.month-chip:hover{color:var(--moon);border-color:var(--moon-deep);transform:translateY(-2px) rotate(-1deg)}.months-container{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(16px,2.5vw,28px)}.month-section{padding:clamp(10px,1.8vw,18px);background:#13163c9e;border:2.5px solid var(--cell-border);border-radius:24px 17px 26px 15px/17px 26px 15px 24px;scroll-margin-top:70px;box-shadow:0 6px 26px #05061673}.month-section:nth-child(odd){transform:rotate(.35deg)}.month-section:nth-child(3n){transform:rotate(-.4deg)}.month-title{display:flex;align-items:baseline;gap:10px;margin:2px 4px 10px;font-weight:400}.month-title-zh{font-size:clamp(1.25rem,2.6vw,1.55rem);color:var(--moon);letter-spacing:.12em}.month-title-num{font-size:.95rem;color:var(--lavender);opacity:.85}.month-grid{--cell-gap: clamp(3px, .6vw, 6px);display:grid;grid-template-columns:repeat(7,1fr);gap:var(--cell-gap);container-type:inline-size}.weekday-header{text-align:center;font-size:clamp(.7rem,1.6vw,.85rem);color:var(--lavender);opacity:.8;padding-bottom:2px}.day-pad{aspect-ratio:1}.day-cell{position:relative;aspect-ratio:1;min-width:0;overflow:hidden;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;padding:2px;color:var(--cream);background:#0b0d2a8c;border:2px solid rgba(185,179,230,.26);border-radius:9px 11px 8px 12px/11px 8px 12px 9px;cursor:pointer;transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease,background .16s ease}@supports (height: 1cqw){.day-pad,.day-cell{aspect-ratio:auto;height:calc((100cqw - 6 * var(--cell-gap)) / 7)}}.day-cell:nth-child(3n){transform:rotate(.6deg)}.day-cell:nth-child(5n){transform:rotate(-.7deg)}.day-cell:hover,.day-cell:focus-visible{transform:scale(1.14) rotate(-1.2deg);z-index:2;border-color:var(--moon);box-shadow:0 0 16px #ffd97d73;outline:none}.day-num{position:absolute;top:3px;left:6px;font-size:clamp(.62rem,1.1vw,.82rem);line-height:1;opacity:.75}.day-empty-star{width:32%;max-width:18px;color:#ffe9a847;transition:color .16s ease,transform .16s ease}.day-cell:hover .day-empty-star{color:var(--star);transform:scale(1.25) rotate(18deg)}.day-cell.claimed{background:#ffd97d21;border-color:#ffd97d99}.day-avatar{width:56%;aspect-ratio:1;margin-top:8px}.avatar{border-radius:50% 46% 52% 48%/48% 52% 46% 50%;border:2px solid var(--moon-deep);object-fit:cover;background:var(--sky-mid)}.avatar-fallback{display:inline-flex;align-items:center;justify-content:center;position:relative;background:radial-gradient(circle at 35% 30%,#3c4190,#21244d)}.avatar-fallback .avatar-star{position:absolute;top:10%;right:10%;bottom:10%;left:10%;color:#ffe9a880}.avatar-fallback .avatar-initial{position:relative;color:var(--cream);font-size:clamp(.72rem,1.3vw,1rem);line-height:1;text-shadow:0 1px 3px rgba(0,0,0,.6)}.day-name{max-width:96%;font-size:clamp(.6rem,1.1vw,.82rem);line-height:1.25;color:var(--star);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.more-badge{position:absolute;top:1px;right:2px;padding:1px 4px;font-size:.58rem;line-height:1.2;color:var(--ink);background:var(--pink);border-radius:8px 6px 9px 5px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;align-items:center;justify-content:center;padding:20px;background:#050616bd;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);animation:fadeIn .25s ease}.modal-card{position:relative;width:min(560px,94vw);max-height:84vh;overflow-y:auto;padding:clamp(22px,5vw,34px);background:linear-gradient(180deg,#1e2158,#14163e);border:3px solid var(--moon-deep);border-radius:28px 20px 30px 18px/20px 30px 18px 28px;box-shadow:0 0 40px #ffd97d2e,0 18px 50px #00000080;animation:popIn .3s ease}.modal-close{position:absolute;top:12px;right:12px;width:36px;height:36px;display:flex;align-items:center;justify-content:center;font-size:1rem;color:var(--lavender);background:#b9b3e61f;border:2px solid rgba(185,179,230,.4);border-radius:46% 54% 50% 50%/52% 48% 54% 46%;cursor:pointer;transition:color .15s ease,transform .15s ease}.modal-close:hover{color:var(--moon);transform:rotate(90deg)}.modal-date{display:flex;align-items:center;justify-content:center;gap:10px;margin:4px 0 2px;font-size:clamp(1.15rem,3.4vw,1.4rem);color:var(--moon);letter-spacing:.06em}.modal-date-star{width:20px;height:20px;color:var(--star);animation:twinkle 2.6s ease-in-out infinite}.modal-subtitle{margin:6px 0 18px;text-align:center;color:var(--lavender)}.modal-hint{margin:0 0 12px;text-align:center;line-height:1.8;color:var(--cream)}.modal-hint strong{color:var(--star)}.modal-date-big{margin:6px auto 22px;padding:12px 26px;width:fit-content;font-size:clamp(1.6rem,5vw,2rem);letter-spacing:.08em;color:var(--moon);border:2.5px dashed rgba(255,217,125,.55);border-radius:18px 13px 20px 12px/13px 20px 12px 18px;background:#ffd97d14}.claimant-list{display:flex;flex-direction:column;gap:12px;margin-bottom:20px}.claimant-card{display:flex;gap:14px;align-items:flex-start;padding:14px;background:#ffffff0b;border:2px dashed rgba(185,179,230,.35);border-radius:18px 13px 19px 12px/13px 19px 12px 18px}.claimant-photo{width:74px;height:74px;flex-shrink:0}.claimant-photo.avatar-fallback .avatar-initial{font-size:1.5rem}.claimant-info{min-width:0}.claimant-name{margin:2px 0;font-size:1.1rem;font-weight:400;color:var(--star)}.claimant-meta{margin:0 0 8px;font-size:.82rem;color:var(--lavender)}.claimant-message{margin:0;font-size:.95rem;line-height:1.8;color:var(--cream)}.modal-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:12px}.btn{padding:10px 24px;font-size:1rem;letter-spacing:.06em;border-radius:16px 11px 18px 10px/11px 18px 10px 16px;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease}.btn:hover{transform:translateY(-2px) rotate(-.8deg)}.btn-primary{color:var(--ink);background:linear-gradient(135deg,var(--moon) 0%,var(--moon-deep) 100%);border:2.5px solid var(--moon-deep);box-shadow:0 4px 16px #ffd97d59}.btn-secondary{color:var(--lavender);background:transparent;border:2.5px solid rgba(185,179,230,.55)}.btn-secondary:hover{color:var(--moon);border-color:var(--moon-deep)}.splash{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:flex;align-items:center;justify-content:center;background:linear-gradient(180deg,var(--sky-deep) 0%,var(--sky-mid) 45%,var(--sky-light) 100%);transition:opacity .9s ease,transform .9s ease}.splash-exit{opacity:0;transform:scale(1.1);pointer-events:none}.splash-scene{text-align:center;padding:20px}.splash-moon-wrap{position:relative;width:190px;height:190px;margin:0 auto 40px;animation:moonRise 1.2s ease-out both,floaty 5.5s 1.3s ease-in-out infinite}.splash-star{position:absolute;left:50%;top:50%;color:var(--star);animation:starPop .6s ease-out both,twinkle 2.8s ease-in-out infinite}.splash-title{margin:0;font-size:clamp(2rem,8vw,2.9rem);font-weight:400;letter-spacing:.3em;text-indent:.3em;color:var(--moon);text-shadow:0 0 26px rgba(255,217,125,.4);animation:fadeUp .9s ease .7s backwards}.splash-subtitle{margin:12px 0 0;font-size:clamp(.95rem,3.4vw,1.15rem);letter-spacing:.14em;color:var(--lavender);animation:fadeUp .9s ease 1.1s backwards}.splash-loading{margin:40px 0 0;font-size:.95rem;color:#fff6e0a6;animation:fadeUp .9s ease 1.6s backwards}.splash-loading .dot{animation:blink 1.2s ease-in-out infinite}.splash-loading .dot:nth-child(2){animation-delay:.2s}.splash-loading .dot:nth-child(3){animation-delay:.4s}.page-footer{margin-top:clamp(36px,6vw,64px);padding-bottom:40px;text-align:center;color:var(--lavender);font-size:.92rem;opacity:.85}@keyframes twinkle{0%,to{transform:scale(.75);filter:brightness(.7)}50%{transform:scale(1.15);filter:brightness(1.5)}}@keyframes drift{0%{transform:translate(0)}to{transform:translate(9vw)}}@keyframes floaty{0%,to{transform:translateY(0)}50%{transform:translateY(-9px)}}@keyframes fadeUp{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes popIn{0%{opacity:0;transform:scale(.88) rotate(-1deg)}to{opacity:1;transform:scale(1) rotate(0)}}@keyframes moonRise{0%{opacity:0;transform:translateY(46px) rotate(-8deg)}to{opacity:1;transform:translateY(0) rotate(0)}}@keyframes starPop{0%{opacity:0;transform:scale(0) rotate(-45deg)}to{opacity:1;transform:scale(1) rotate(0)}}@keyframes blink{0%,to{opacity:.2}50%{opacity:1}}@media (max-width: 680px){.months-container{grid-template-columns:1fr}.sky-moon-corner{top:10px;right:10px}.sky-moon-corner .crayon-moon{width:64px;height:64px}.page-header{padding-top:84px}.modal-backdrop{align-items:flex-end;padding:0}.modal-card{width:100vw;max-height:88vh;border-radius:26px 22px 0 0/22px 26px 0 0;border-bottom:none;animation:slideUp .32s ease}.claimant-photo{width:60px;height:60px}}@keyframes slideUp{0%{opacity:.4;transform:translateY(48px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
