.astro-route-announcer{position:absolute;left:0;top:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap;width:1px;height:1px}@font-face{font-family:Mamelon;src:url(/fonts/mamelon-subset.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}.font-mamelon{font-family:Mamelon,Inter,PingFang SC,Microsoft YaHei,sans-serif}.font-xiaolai{font-family:Xiaolai,Inter,PingFang SC,Microsoft YaHei,Noto Sans SC,sans-serif}.cal-rings{display:flex;justify-content:center;gap:40px;margin-bottom:-12px;position:relative;z-index:2}.cal-ring{width:10px;height:22px;border-radius:6px;background:linear-gradient(180deg,#b39ddb,#8b7cb3);box-shadow:inset 0 1px 2px #ffffff80,0 2px 4px #8b7cb366}.dark .cal-ring{background:linear-gradient(180deg,#6b5ca5,#4a3b73)}.cal-body{position:relative}.cal-paper{position:relative;z-index:1;background:#fffefb;border-radius:14px 14px 0 0;padding:22px 12px 10px;box-shadow:0 2px 8px #8b7cb31f}.dark .cal-paper{background:#232323}.cal-holes{display:flex;justify-content:center;gap:40px;position:absolute;top:5px;left:0;right:0}.cal-hole{width:14px;height:12px;border-radius:50%;background:#ede8f5;box-shadow:inset 0 1px 3px #00000026}.dark .cal-hole{background:#1a1a1a;box-shadow:inset 0 1px 3px #00000080}.cal-nav-btn{width:24px;height:24px;border-radius:50%;border:none;background:#f3effa;color:#8b7cb3;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .3s cubic-bezier(.34,1.56,.64,1);box-shadow:0 1px 3px #8b7cb333}.cal-nav-btn:hover{background:#8b7cb3;color:#fff;transform:scale(1.15);box-shadow:0 3px 8px #8b7cb366}.cal-nav-btn:active{transform:scale(.85)}.dark .cal-nav-btn{background:#2e2b3a;color:#b39ddb}.dark .cal-nav-btn:hover{background:#8b7cb3;color:#fff}.cal-hero{display:flex;align-items:center;gap:10px;margin:2px 0 10px;padding:8px 10px;border-radius:12px;background:linear-gradient(135deg,#8b7cb31a,#ff6b9d14);border:1px dashed rgba(139,124,179,.3)}.dark .cal-hero{background:linear-gradient(135deg,#8b7cb326,#ff6b9d1a)}.cal-hero-num{font-family:Xiaolai,sans-serif;font-size:34px;font-weight:700;line-height:1;background:linear-gradient(135deg,#8b7cb3,#ff6b9d);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.cal-hero-meta{display:flex;flex-direction:column;gap:2px}.cal-weekday{font-size:10px;font-weight:500;color:#999;width:100%;text-align:center}.cal-weekend{color:#ff6b9d}.dark .cal-weekend{color:#ff8fb3}.cal-cell{font-size:11px;width:100%;aspect-ratio:1;display:flex;align-items:center;justify-content:center;border-radius:50%;color:#666;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:all .25s cubic-bezier(.34,1.56,.64,1)}.dark .cal-cell{color:#999}.cal-cell:hover{transform:scale(1.2);background:#8b7cb31f;color:#8b7cb3;box-shadow:0 2px 8px #ff6b9d40}.cal-cell-dim{color:#d5d0e0;cursor:default}.dark .cal-cell-dim{color:#444}.cal-cell-dim:hover{transform:none;background:transparent;color:#d5d0e0;box-shadow:none}.cal-cell-weekend{color:#ff6b9d}.dark .cal-cell-weekend{color:#ff8fb3}.cal-cell-today{background:linear-gradient(135deg,#8b7cb3,#b39ddb);color:#fff!important;font-weight:700;box-shadow:0 2px 10px #8b7cb373;animation:cal-breathe 2.5s ease-in-out infinite}.cal-cell-today:hover{transform:scale(1.2);color:#fff;box-shadow:0 3px 14px #8b7cb399}@keyframes cal-breathe{0%,to{box-shadow:0 2px 10px #8b7cb373}50%{box-shadow:0 2px 16px #ff6b9d80}}.cal-cell-selected{background:#f3effa;color:#8b7cb3!important;font-weight:700;box-shadow:inset 0 2px 5px #8b7cb340}.dark .cal-cell-selected{background:#2e2b3a;color:#b39ddb!important}.cal-tear-edge{position:relative;z-index:1;height:8px;background:#fffefb;-webkit-mask-image:radial-gradient(circle at 4px 8px,transparent 3px,#000 3.5px);-webkit-mask-size:8px 8px;-webkit-mask-repeat:repeat-x;mask-image:radial-gradient(circle at 4px 8px,transparent 3px,#000 3.5px);mask-size:8px 8px;mask-repeat:repeat-x}.dark .cal-tear-edge{background:#232323}.cal-board{position:relative;z-index:0;margin:-4px -3px 0;background:linear-gradient(180deg,#f0ebf8,#e8e2f3);border-radius:0 0 16px 16px;padding:10px 14px;box-shadow:0 3px 10px #8b7cb326}.dark .cal-board{background:linear-gradient(180deg,#1e1c28,#191722)}.cal-today-dot{width:6px;height:6px;border-radius:50%;background:#ff6b9d;animation:cal-dot-pulse 2s ease-in-out infinite}@keyframes cal-dot-pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.4);opacity:.6}}.player-soft-btn{width:30px;height:30px;display:flex;align-items:center;justify-content:center;border-radius:50%;border:none;background:#f3effa;color:#8b7cb3;cursor:pointer;box-shadow:0 2px 5px #8b7cb32e,inset 0 1px 1px #fffc;transition:all .3s cubic-bezier(.34,1.56,.64,1)}.player-soft-btn:hover{transform:scale(1.15);background:#8b7cb3;color:#fff;box-shadow:0 4px 12px #8b7cb366}.player-soft-btn:active{transform:scale(.85);box-shadow:inset 0 2px 5px #8b7cb34d}.dark .player-soft-btn{background:#2e2b3a;color:#b39ddb;box-shadow:0 2px 5px #0000004d,inset 0 1px 1px #ffffff0f}.dark .player-soft-btn:hover{background:#8b7cb3;color:#fff}#player-disc-wrap{transition:box-shadow .5s}#player-disc-wrap.disc-spinning #player-disc,#player-disc-wrap.disc-spinning #player-cover,#player-disc-wrap.disc-spinning #player-cover-fallback{animation:disc-spin 8s linear infinite}@keyframes disc-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}#player-play.is-playing-glow{animation:play-glow 2.5s ease-in-out infinite}@keyframes play-glow{0%,to{box-shadow:0 4px 14px -2px #8b7cb399}50%{box-shadow:0 4px 22px 2px #ff6b9d8c}}.player-eq-bar{animation:eq-bounce .7s ease-in-out infinite alternate;transform-origin:bottom}@keyframes eq-bounce{0%{transform:scaleY(.35)}to{transform:scaleY(1)}}.status-pill{display:flex;align-items:center;gap:6px;background:#7cb38b1f;border:1px solid rgba(124,179,139,.25);border-radius:99px;padding:3px 10px 3px 8px}.status-tile{display:flex;flex-direction:column;padding:12px;border-radius:18px;background:linear-gradient(145deg,#ffffffb3,#ffffff59);box-shadow:4px 4px 10px #8b7cb31a,-3px -3px 8px #fffc,inset 0 1px 1px #fff9;transition:all .35s cubic-bezier(.34,1.56,.64,1);animation:tile-pop .45s cubic-bezier(.34,1.56,.64,1) backwards}.dark .status-tile{background:linear-gradient(145deg,#2e2b3acc,#23212d99);box-shadow:4px 4px 10px #00000059,-3px -3px 8px #ffffff08,inset 0 1px 1px #ffffff0a}@keyframes tile-pop{0%{opacity:0;transform:scale(.5) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}.status-tile:hover{transform:translateY(-3px) scale(1.03);box-shadow:6px 8px 16px #8b7cb32e,-3px -3px 8px #fffc,inset 0 1px 1px #fff9}.dark .status-tile:hover{box-shadow:6px 8px 16px #00000073,-3px -3px 8px #ffffff0a}.status-tile:active{transform:scale(.96);box-shadow:inset 3px 3px 7px #8b7cb326,inset -2px -2px 5px #ffffff80}.dark .status-tile:active{box-shadow:inset 3px 3px 7px #0006}.status-icon{width:28px;height:28px;border-radius:10px;display:flex;align-items:center;justify-content:center;background:var(--tile-bg);color:var(--tile-color);margin-bottom:8px;box-shadow:inset 0 1px 2px #ffffff80;transition:transform .35s cubic-bezier(.34,1.56,.64,1)}.dark .status-icon{box-shadow:inset 0 1px 2px #0003}.status-tile:hover .status-icon{transform:scale(1.2) rotate(-8deg)}.status-value{font-family:Xiaolai,Inter,PingFang SC,Microsoft YaHei,sans-serif;font-size:15px;font-weight:700;color:#1a1a1a;letter-spacing:-.02em;line-height:1.2}.dark .status-value{color:#eaeaea}.status-label{font-size:10px;color:#999;margin-top:2px}.dark .status-label{color:#777}html{view-transition-name:root}:root{color-scheme:light dark}body{font-family:Inter,PingFang SC,Microsoft YaHei,Noto Sans SC,sans-serif}.hide-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.hide-scrollbar::-webkit-scrollbar{display:none}.annual-review-btn{display:inline-flex;align-items:center;justify-content:center;min-width:12em;height:3.5em;padding:0 2.2em;border-radius:30em;font-size:14px;font-weight:600;font-family:inherit;border:1px solid rgba(255,255,255,.25);position:relative;overflow:hidden;z-index:1;cursor:pointer;background:#fff9;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:0 2px 12px -4px #8b7cb326;transition:all .5s cubic-bezier(.34,1.56,.64,1);color:#8b7cb3}.dark .annual-review-btn{background:#1a1a1a99;border-color:#ffffff1a;color:#b39ddb}.annual-review-btn:before{content:"";width:0;height:100%;border-radius:30em;position:absolute;top:0;left:0;background-image:linear-gradient(to right,#8b7cb3,#ff6b9d);transition:width .5s cubic-bezier(.34,1.56,.64,1);display:block;z-index:-1}.annual-review-btn:hover:before{width:100%}.annual-review-btn:hover{color:#fff;border-color:#8b7cb366;transform:translateY(-3px);box-shadow:0 10px 32px -8px #8b7cb373}.annual-review-btn:active{transform:translateY(-1px) scale(.97);transition-duration:.15s}.dark .annual-review-btn:hover{box-shadow:0 10px 32px -8px #8b7cb359}@keyframes gradient-x{0%,to{background-position:0% 50%}50%{background-position:100% 50%}}.animate-gradient-x{animation:gradient-x 3s ease infinite}@keyframes sweep{0%{left:-100%}to{left:200%}}.animate-sweep{animation:sweep 1.5s ease-in-out infinite}@keyframes fadeInUp{0%{opacity:0;transform:translate3d(0,28px,0)}to{opacity:1;transform:translateZ(0)}}.animate-fade-in-up{opacity:0;transform:translate3d(0,28px,0);backface-visibility:hidden;will-change:opacity,transform;animation:fadeInUp .7s cubic-bezier(.34,1.56,.64,1) forwards}.animate-fade-in-up.delay-0{animation-delay:0s}.animate-fade-in-up.delay-1{animation-delay:.08s}.animate-fade-in-up.delay-2{animation-delay:.16s}.animate-fade-in-up.delay-3{animation-delay:.24s}.animate-fade-in-up.delay-4{animation-delay:.32s}#draggable-player[data-expanded=true]{width:min(340px,calc(100vw - 32px))!important;border-radius:9999px}#draggable-player[data-expanded=true] #player-collapsed{opacity:0;pointer-events:none}#draggable-player[data-expanded=true] #player-expanded{opacity:1;pointer-events:auto}#draggable-player.is-playing #float-music-icon{animation:float-icon-spin 3s linear infinite}#draggable-player.is-playing #float-pulse-ring{opacity:1;animation:float-pulse 2s ease-in-out infinite}@keyframes float-icon-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes float-pulse{0%,to{transform:scale(1);opacity:.4}50%{transform:scale(1.15);opacity:.15}}#float-progress-wrap{position:absolute;bottom:4px;left:18px;right:18px;height:3px;border-radius:99px;background:#ffffff38;opacity:0;transition:opacity .3s;pointer-events:none;overflow:hidden}#draggable-player[data-expanded=true] #float-progress-wrap{opacity:1}#float-progress{height:100%;width:0%;border-radius:99px;background:linear-gradient(90deg,#fff,#ffd6e4);transition:width .3s linear}
