:root{--night:#101036;--ink:#17163d;--purple:#7665c8;--peach:#ff977f}*{box-sizing:border-box}html{scroll-behavior:smooth}body{color:var(--ink);background:#f7f1ec;margin:0;font-family:Microsoft YaHei,PingFang SC,sans-serif}button,a{font:inherit}button{cursor:pointer}main{background:radial-gradient(circle at 75% 8%,#b39ded29,#0000 28%),linear-gradient(#111039 0 590px,#f7f1ec 590px);min-height:100vh;position:relative;overflow:hidden}.stars{opacity:.55;pointer-events:none;background-image:radial-gradient(circle,#fff 1px,#0000 1.5px),radial-gradient(circle,#9283d5 1px,#0000 1.5px);background-position:17px 26px,48px 74px;background-size:93px 93px,137px 137px;height:590px;position:absolute;inset:0 0 auto}.topbar{color:#fff;z-index:2;justify-content:space-between;align-items:center;max-width:1180px;height:82px;margin:auto;padding:0 28px;display:flex;position:relative}.brand{color:#fff;letter-spacing:1px;align-items:center;gap:12px;font-weight:700;text-decoration:none;display:flex}.brand-mark{color:#ffd5ca;border:1px solid #ffffff59;border-radius:50%;place-items:center;width:38px;height:38px;font-family:serif;display:grid}.date-pill{letter-spacing:2px;color:#dcd4fb;border:1px solid #ffffff29;border-radius:999px;padding:9px 16px;font-size:13px}.hero{z-index:1;color:#fff;grid-template-columns:1.05fr .95fr;align-items:center;max-width:1100px;height:508px;margin:auto;padding:38px 28px 80px;display:grid;position:relative}.eyebrow,.section-kicker{letter-spacing:3px;color:#b9abe8;font-size:11px;font-weight:700}.eyebrow{align-items:center;gap:10px;display:flex}.eyebrow span{background:#fa917c;width:28px;height:1px}h1{letter-spacing:4px;margin:20px 0 22px;font-family:Georgia,Noto Serif SC,serif;font-size:clamp(48px,6vw,78px);font-weight:500;line-height:1.08}h1 em{color:#ff9b85;font-style:normal}.subtitle{color:#c6c1df;font-size:15px;line-height:2}.hero-actions{align-items:center;gap:20px;margin-top:30px;display:flex}.primary-button{color:#fff;background:linear-gradient(135deg,#ee806e,#ff9a83);border:0;border-radius:999px;padding:15px 25px;transition:all .2s;box-shadow:0 10px 30px #ff7e6747}.primary-button:hover{transform:translateY(-2px);box-shadow:0 14px 35px #ff7e6761}.primary-button span{margin-left:12px}.tiny-note{color:#8680a9;font-size:11px}.moon-scene{place-items:center;height:360px;display:grid;position:relative}.moon{color:#f5e6c7;text-shadow:0 0 60px #ffe7ba38;font:330px/.8 Georgia,serif;transform:rotate(-15deg)}.shrimp{filter:drop-shadow(0 8px 12px #00000040);font-size:86px;position:absolute;transform:rotate(-18deg)translate(10px,-10px)}.shrimp span{color:#d9ccfa;font:700 18px Georgia;position:absolute}.shrimp span:first-child{top:-12px;right:-7px}.shrimp span:nth-child(2){top:-34px;right:-28px}.shrimp span:nth-child(3){top:-58px;right:-42px}.orbit{border:1px solid #c4b5ef38;border-radius:50%;position:absolute;transform:rotate(-18deg)}.orbit-one{width:340px;height:160px}.orbit-two{width:430px;height:220px}.spark{color:#ffad97;position:absolute}.s1{font-size:22px;top:22%;left:8%}.s2{color:#d9cfff;font-size:30px;top:38%;right:5%}.s3{bottom:10%;right:17%}.dashboard{z-index:3;max-width:1040px;margin:-62px auto 0;padding:0 28px;position:relative}.stats-card{background:#fff;border-radius:22px 22px 0 0;grid-template-columns:190px 1px 190px 1fr;align-items:center;min-height:126px;padding:26px 44px;display:grid;box-shadow:0 18px 60px #1e193f1f}.stat small,.progress-block small{color:#938eaa;margin-bottom:6px;font-size:12px;display:block}.stat strong{color:#2b2856;font:42px Georgia,serif}.stat i{color:#8f88a9;margin-left:5px;font:12px sans-serif}.divider{background:#ece8ef;height:42px}.progress-block{padding-left:42px}.progress-block>div:first-child{justify-content:space-between;display:flex}.progress-block b{color:#6e5ec0;font:18px Georgia}.progress-track{background:#eeeaf2;border-radius:10px;height:7px;overflow:hidden}.progress-track span{background:linear-gradient(90deg,#8672d1,#ff9780);border-radius:10px;height:100%;transition:width .4s;display:block}.calendar-card{background:#fffdfb;border-top:1px solid #f0ebed;border-radius:0 0 22px 22px;padding:38px 48px 34px;box-shadow:0 20px 60px #1e193f14}.calendar-head{justify-content:space-between;align-items:flex-end;margin-bottom:30px;display:flex}.section-kicker{color:#9d90d1;margin:0 0 8px}.calendar-head h2{color:#26234e;margin:0;font:30px Georgia,Noto Serif SC,serif}.month-tabs{background:#f3eff3;border-radius:999px;gap:2px;padding:4px;display:flex}.month-tabs button{color:#9b95a9;background:0 0;border:0;border-radius:999px;padding:8px 16px;font-size:12px}.month-tabs button.active{color:#6857ba;background:#fff;box-shadow:0 3px 10px #2d25581a}.week-row,.days-grid{grid-template-columns:repeat(7,1fr);gap:8px;display:grid}.week-row span{text-align:center;color:#a09bab;padding-bottom:12px;font-size:11px}.day{aspect-ratio:1.14;color:#504b69;background:0 0;border:0;border-radius:16px;flex-direction:column;justify-content:center;align-items:center;gap:4px;transition:all .18s;display:flex;position:relative}.day span{font:18px Georgia}.day b{color:#d8d2dc;font-size:11px}.day:hover:not(.future){background:#f4f0fb;transform:translateY(-2px)}.day.checked{color:#fff;background:linear-gradient(145deg,#8270cf,#6655b7);box-shadow:0 7px 18px #6856ba3d}.day.checked b{color:#ffd2c8}.day.today{box-shadow:inset 0 0 0 2px #ff9a83}.day.future{opacity:.42;cursor:not-allowed}.legend{color:#9b95aa;justify-content:center;gap:26px;margin-top:26px;font-size:11px;display:flex}.legend span{align-items:center;gap:7px;display:flex}.legend i{border-radius:50%;width:9px;height:9px}.done{background:#7462c5}.pending{border:1px solid #bdb6c6}.today-dot{border:2px solid #ff9a83}.promise{text-align:center;color:#373257;padding:100px 24px 80px;position:relative}.promise .quote{color:#b7a8e4;height:42px;font:72px Georgia;display:block}.promise p{letter-spacing:2px;font:24px/1.8 Georgia,Noto Serif SC,serif}.promise small{color:#a19aa6}.promise:before,.promise:after{content:"✦";color:#d2c6eb;position:absolute}.promise:before{top:50%;left:20%}.promise:after{color:#f6a08e;top:28%;right:20%}footer{text-align:center;letter-spacing:2px;color:#98909a;background:#ece5e2;padding:26px;font-size:11px}footer span{color:#aa9cd4;margin:0 8px}.toast{color:#fff;z-index:20;background:#28234f;border-radius:999px;padding:13px 22px;font-size:13px;animation:.25s ease-out pop;position:fixed;bottom:32px;left:50%;transform:translate(-50%);box-shadow:0 10px 35px #00000038}@keyframes pop{0%{opacity:0;transform:translate(-50%,10px)}to{opacity:1;transform:translate(-50%)}}@media (width<=760px){main{background:linear-gradient(#111039 0 730px,#f7f1ec 730px)}.stars{height:730px}.hero{text-align:center;grid-template-columns:1fr;height:650px;padding-top:20px}.eyebrow,.hero-actions{justify-content:center}.hero-copy{z-index:2}.moon-scene{opacity:.82;height:180px}.moon{font-size:190px}.shrimp{font-size:52px}.orbit-one{width:220px;height:100px}.orbit-two{width:280px;height:130px}.stats-card{grid-template-columns:1fr 1fr;padding:24px}.divider{display:none}.progress-block{grid-column:1/-1;padding:22px 0 0}.calendar-card{padding:30px 18px}.calendar-head{flex-direction:column;align-items:flex-start;gap:18px}.day{aspect-ratio:.9;border-radius:11px}.tiny-note{display:none}.dashboard{margin:-38px auto 0;padding:0 14px}.promise{padding:75px 20px}.promise p{font-size:19px}.topbar{padding:0 20px}}.day.approved{color:#fff;background:linear-gradient(145deg,#8270cf,#6655b7);box-shadow:0 7px 18px #6856ba3d}.day.approved b{color:#ffd2c8}.day.pending{background:#fff2d8;box-shadow:inset 0 0 0 1px #efc56f}.day.pending b{color:#c68a25}.day.rejected{color:#a65b55;background:#fff0ee}.day.rejected b{color:#dd7065}.day.today:not(.approved):not(.pending){box-shadow:inset 0 0 0 2px #ff9a83}.legend{flex-wrap:wrap}.reviewing{background:#e7b755}.rejected-dot{background:#dc766c}.admin-link{color:#a9a0cd;margin-left:auto;margin-right:18px;font-size:12px;text-decoration:none}.admin-hotspot{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;background:0 0;border:0;border-radius:12px;outline:none;width:54px;height:38px;margin-left:auto;margin-right:8px}.admin-hotspot:focus-visible{box-shadow:inset 0 0 0 1px #ffffff40}.modal-backdrop{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:30;background:#0b0922b8;place-items:center;padding:18px;display:grid;position:fixed;inset:0}.upload-modal{background:#fffdfb;border-radius:24px;width:min(520px,100%);max-height:92vh;padding:34px;position:relative;overflow:auto;box-shadow:0 26px 80px #00000059}.upload-modal h2{margin:6px 0 10px;font:27px Georgia,Noto Serif SC,serif}.modal-tip{color:#817b8c;font-size:13px;line-height:1.8}.close{color:#716b7a;background:#f3eef2;border:0;border-radius:50%;width:34px;height:34px;font-size:20px;position:absolute;top:16px;right:18px}.dropzone{color:#7768b5;cursor:pointer;background:#f9f6fc;border:1.5px dashed #bdb1da;border-radius:17px;flex-direction:column;justify-content:center;align-items:center;gap:8px;height:210px;margin:22px 0;display:flex;overflow:hidden}.dropzone strong{font-size:30px;font-weight:300}.dropzone small{color:#a8a0ad}.dropzone input{display:none}.dropzone.has-preview{background:#161331;border-style:solid}.dropzone img{object-fit:contain;width:100%;height:100%}.note-label{color:#777184;font-size:12px}.note-label textarea{resize:vertical;color:#312d4b;background:#fff;border:1px solid #e3dce6;border-radius:12px;width:100%;height:72px;margin:8px 0 18px;padding:11px;display:block}.submit-button{color:#fff;background:linear-gradient(135deg,#7462c5,#5c4aa8);border:0;border-radius:13px;width:100%;padding:14px;font-weight:700}.submit-button:disabled{opacity:.55;cursor:wait}.admin-shell{background:#f6f2ee;min-height:100vh;padding:36px}.admin-wrap{max-width:1080px;margin:auto}.admin-header{justify-content:space-between;align-items:center;margin-bottom:30px;display:flex}.admin-header h1{color:#252148;margin:0;font-size:38px}.back-link{color:#6b5bb4;text-decoration:none}.token-card,.review-card,.empty-card{background:#fff;border-radius:20px;padding:26px;box-shadow:0 12px 40px #1e193f14}.token-card{max-width:520px;margin:80px auto}.token-card h1{color:#252148;font-size:32px}.token-card input{border:1px solid #ddd5e2;border-radius:11px;width:100%;margin:10px 0;padding:13px}.review-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;display:grid}.review-card img{object-fit:contain;background:#161331;border-radius:13px;width:100%;height:280px;margin-bottom:16px}.review-meta{justify-content:space-between;align-items:center;display:flex}.review-meta h2{margin:0;font:24px Georgia}.review-meta small{color:#918a99}.review-card p{color:#777184;min-height:22px}.review-actions{gap:10px;display:flex}.review-actions button{border:0;border-radius:11px;flex:1;padding:11px}.approve{color:#fff;background:#6f5ebd}.reject{color:#a4514b;background:#f7e9e7}.error-text{color:#b94e46;font-size:13px}@media (width<=760px){.brand{font-size:13px}.admin-link{display:none}.upload-modal{padding:28px 20px}.review-list{grid-template-columns:1fr}.admin-shell{padding:22px 14px}.admin-header{align-items:flex-start}.admin-header h1{font-size:28px}.review-card img{height:230px}}.music-player{z-index:18;color:#fff;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#1e1a45f0;border:1px solid #ffffff1f;border-radius:18px;align-items:center;gap:9px;padding:10px 12px;display:flex;position:fixed;bottom:22px;right:22px;box-shadow:0 14px 45px #120d2d47}.music-player button{color:#fff;background:#ffffff17;border:0;border-radius:50%;width:32px;height:32px}.music-player button:hover{background:#ffffff2b}.music-player .play-toggle{background:#f48e7a}.music-disc{color:#ffd7cc;background:linear-gradient(135deg,#8b78d4,#5d4ba9);border-radius:50%;place-items:center;width:38px;height:38px;display:grid}.music-disc.spinning{animation:4s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.track-info{width:108px;overflow:hidden}.track-info small{color:#9f95ca;letter-spacing:1px;font-size:8px;display:block}.track-info strong{white-space:nowrap;font-size:11px}.volume{color:#aaa0d2;align-items:center;gap:5px;display:flex}.volume input{accent-color:#f48e7a;width:58px}@media (width<=760px){.music-player{justify-content:center;bottom:12px;left:12px;right:12px}.track-info{flex:1}.volume{display:none}.toast{bottom:86px}}.compact-modal .note-label{margin-top:24px;display:block}.compact-modal .note-label textarea{height:110px}.text-review{flex-direction:column;min-height:210px;display:flex}.text-review .review-actions{margin-top:auto}.review-badge{color:#ad7621;background:#fff2d8;border-radius:999px;align-self:flex-start;margin-bottom:18px;padding:6px 11px;font-size:11px}.text-review>p{background:#f8f5f8;border-radius:12px;padding:14px;line-height:1.7}
