@import url('https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700;800;900&family=Noto+Sans+SC:wght@400;500;700;900&display=swap');
:root{--ink:#292344;--muted:#8c87aa;--pink:#ff799f;--peach:#ffb489;--lilac:#9b8cff;--panel:#ffffffdd;--line:#ece8fa;--night:#19162e}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:#f5f2ff;color:var(--ink);font-family:Nunito,'Noto Sans SC',sans-serif}button{font:inherit;border:0;background:none;color:inherit;cursor:pointer}.app-shell{max-width:1440px;min-height:100vh;margin:auto;padding:28px 52px 22px;background:radial-gradient(circle at 90% 8%,#eee8ff 0 18%,transparent 36%),linear-gradient(135deg,#fcfbff,#f3f0ff)}.topbar,.hud-row,.stage-footer,.bottom-nav,.resources,.top-actions{display:flex;align-items:center;justify-content:space-between}.brand{display:flex;align-items:center;gap:11px;font-weight:900;font-size:19px;letter-spacing:.02em}.brand small{font-size:10px;letter-spacing:.15em;color:#aba5c5;margin-left:6px}.brand-mark{display:grid;place-items:center;width:32px;height:32px;border-radius:11px;background:linear-gradient(145deg,#ff83a6,#ffb086);color:#fff;box-shadow:0 6px 14px #ff9ca450}.top-actions{gap:11px}.icon-btn,.avatar-btn{width:40px;height:40px;border-radius:13px;background:#fff;border:1px solid var(--line);color:#8e87b0}.avatar-btn{background:var(--ink);color:#fff;font-size:11px;font-weight:900}.hud-row{padding:48px 0 28px}.eyebrow{font-size:11px;letter-spacing:.18em;color:#aaa4c1;font-weight:800}.greeting h1{font-size:34px;margin:8px 0 5px;letter-spacing:-.04em}.greeting p{color:var(--muted);font-size:15px;margin:0}.resources{gap:17px}.resource{display:grid;grid-template-columns:22px auto;grid-template-rows:18px 15px;column-gap:7px;align-items:center}.resource span{grid-row:1/3;display:grid;place-items:center;width:22px;height:22px;border-radius:8px;font-size:12px}.gem{color:#897bff;background:#e6e0ff}.coin{color:#ff9c63;background:#ffeadb}.resource b{font-size:15px}.resource small{color:#aaa4c1;font-size:11px}.plus-btn{width:27px;height:27px;border-radius:9px;color:#8d85b4;background:#fff;border:1px solid var(--line);font-weight:800}.game-grid{display:grid;grid-template-columns:225px minmax(500px,1fr) 225px;gap:22px;align-items:stretch}.side-panel{background:var(--panel);border:1px solid #fff;border-radius:24px;box-shadow:0 16px 45px #51447712;padding:22px 18px}.panel-heading{display:flex;justify-content:space-between;align-items:center;font-size:15px;font-weight:900;margin-bottom:18px}.tiny-pill{font-size:11px;color:#9b8cff;background:#eeeaff;padding:4px 8px;border-radius:20px}.quest{display:grid;grid-template-columns:24px 1fr 28px;gap:8px;align-items:center;padding:12px 0;border-bottom:1px solid var(--line)}.quest b{display:block;font-size:12px}.quest small{display:block;color:#aaa4c1;font-size:10px;margin-top:3px}.check{width:19px;height:19px;border:1.5px solid #dcd8ee;border-radius:7px;display:grid;place-items:center;font-size:12px;color:#fff}.done .check{background:#9b8cff;border-color:#9b8cff}.done b{text-decoration:line-through;color:#b8b3ca}.reward{font-size:11px;color:#ff9c63;text-align:right}.progress-label{display:flex;justify-content:space-between;font-size:11px;margin:23px 0 8px}.progress-label span{color:#aaa4c1}.progress-label b{color:#ff829e}.progress{height:7px;background:#f0edfa;border-radius:9px;overflow:hidden}.progress i{display:block;width:72%;height:100%;background:linear-gradient(90deg,#ff9caa,#ffc78c);border-radius:inherit}.stage-card{background:var(--panel);border:1px solid #fff;border-radius:28px;box-shadow:0 16px 45px #51447718;overflow:hidden}.stage-top{display:flex;justify-content:space-between;padding:18px 23px 0;font-size:12px;color:#a39dbd}.location i{display:inline-block;width:7px;height:7px;border-radius:50%;background:#6ed5a1;margin-right:7px}.stage{height:425px;margin:13px 15px 0;border-radius:21px;position:relative;overflow:hidden;background:linear-gradient(180deg,#26234b 0%,#454074 58%,#8f6f94 100%);isolation:isolate}.stage:after{content:"";position:absolute;inset:auto 0 0;height:42%;background:linear-gradient(180deg,#b17e91,#9d7190);z-index:-1}.moon{position:absolute;right:13%;top:11%;width:82px;height:82px;background:#ffe7b9;border-radius:50%;box-shadow:0 0 50px #ffe4aa80}.star{position:absolute;color:#ffe9ba;font-size:18px;opacity:.85}.s1{left:15%;top:19%}.s2{left:70%;top:29%;font-size:12px}.s3{left:42%;top:12%;font-size:28px}.cloud{position:absolute;background:#7770a1;border-radius:30px;opacity:.55}.c1{width:120px;height:24px;left:4%;top:39%}.c2{width:95px;height:18px;right:1%;top:47%}.lawn{position:absolute;bottom:-31px;left:-5%;width:110%;height:135px;border-radius:50% 50% 0 0;background:linear-gradient(180deg,#7b9a83,#597b78)}.plant{position:absolute;bottom:47px;font-size:34px;z-index:2;filter:saturate(.8)}.p1{left:8%}.p2{right:8%;font-size:28px}.character{position:absolute;z-index:3;left:50%;bottom:36px;width:155px;height:265px;transform:translateX(-50%);transition:transform .25s ease;outline:none}.character:hover{transform:translateX(-50%) translateY(-5px)}.shadow{position:absolute;bottom:0;left:15px;width:125px;height:26px;background:#3e4b68aa;border-radius:50%;filter:blur(3px)}.head{position:absolute;top:43px;left:19px;width:116px;height:105px;background:#fff4df;border-radius:47% 47% 45% 45%;box-shadow:inset -5px -7px #f4d9c2}.ear{position:absolute;top:60px;width:31px;height:44px;background:#f7dfc8;border-radius:50%;z-index:-1}.ear.left{left:8px;transform:rotate(-22deg)}.ear.right{right:8px;transform:rotate(22deg)}.hair{position:absolute;z-index:2;top:31px;left:30px;width:96px;height:58px;background:#7e7bb9;border-radius:52% 55% 40% 42%;transform:rotate(-4deg)}.hair:after{content:"";position:absolute;right:8px;bottom:-15px;width:35px;height:33px;background:#7e7bb9;border-radius:30% 60% 70% 30%;transform:rotate(-23deg)}.eye{position:absolute;top:48px;width:9px;height:13px;background:#30294c;border-radius:50%;z-index:3}.e-left{left:35px}.e-right{right:35px}.blush{position:absolute;top:67px;width:17px;height:8px;background:#f5a7ab88;border-radius:50%;z-index:3}.left-b{left:17px}.right-b{right:17px}.mouth{position:absolute;z-index:3;left:52px;top:69px;width:13px;height:7px;border-bottom:2px solid #ee8290;border-radius:50%}.sparkle{position:absolute;z-index:3;right:4px;top:25px;color:#ffc778;font-size:14px}.body{position:absolute;left:28px;top:137px;width:101px;height:92px;border-radius:38px 38px 22px 22px;background:#ffaf91;box-shadow:inset -6px -4px #ec8d84}.scarf{position:absolute;top:4px;left:17px;width:68px;height:17px;border-radius:20px;background:#ffdb78}.button{position:absolute;width:8px;height:8px;border-radius:50%;background:#fff0ca;left:46px}.b1{top:39px}.b2{top:57px}.arm{position:absolute;top:151px;width:29px;height:68px;background:#ffbd9e;border-radius:20px}.a-left{left:12px;transform:rotate(19deg)}.a-right{right:12px;transform:rotate(-19deg)}.leg{position:absolute;top:213px;width:34px;height:54px;background:#6970a9;border-radius:15px 15px 22px 22px}.l-left{left:37px;transform:rotate(3deg)}.l-right{right:37px;transform:rotate(-3deg)}.outfit-badge{position:absolute;right:-3px;top:139px;background:#fff;color:#ff8a9f;font-size:8px;font-weight:900;padding:4px 5px;border-radius:7px;box-shadow:0 4px 10px #2a234230}.speech{position:absolute;z-index:6;left:50%;top:23px;transform:translateX(-50%);padding:10px 15px;background:#fff;border-radius:15px;color:#5c5680;font-size:12px;font-weight:700;white-space:nowrap;box-shadow:0 7px 16px #17152b24}.speech span{position:absolute;bottom:-5px;left:50%;width:10px;height:10px;background:#fff;transform:rotate(45deg)}.interaction-burst{position:absolute;z-index:7;left:50%;top:40%;color:#ff789e;font-size:34px;opacity:0;pointer-events:none}.interaction-burst.pop{animation:burst .7s ease}.stage-footer{padding:18px 23px 21px}.nameplate{display:flex;align-items:center;gap:10px}.mini-avatar{display:grid;place-items:center;width:37px;height:37px;background:linear-gradient(135deg,#ff9b9f,#8d83db);border-radius:13px;color:#fff;font-weight:900}.nameplate b{display:block;font-size:14px}.nameplate b span{font-size:10px;color:#9b8cff;background:#eeeaff;padding:3px 6px;border-radius:7px;margin-left:5px}.nameplate small{display:block;font-size:10px;color:#aaa4c1;margin-top:3px}.intimacy{text-align:right}.intimacy span{display:block;color:#aaa4c1;font-size:10px;margin-bottom:4px}.hearts{color:#ff819e;letter-spacing:2px;font-size:14px}.hearts em{color:#dfd9ef;font-style:normal}.action{width:100%;display:flex;align-items:center;gap:10px;text-align:left;padding:13px 10px;margin-bottom:6px;border-radius:15px;transition:.2s}.action:hover{background:#faf8ff;transform:translateX(3px)}.action.primary{background:#fff1f4}.action-icon{display:grid;place-items:center;width:32px;height:32px;border-radius:11px;background:#fff;color:#ff819e;font-size:17px}.action b{display:block;font-size:12px}.action small{display:block;color:#aaa4c1;font-size:10px;margin-top:2px}.action kbd{margin-left:auto;color:#c1bbd2;font-size:10px}.tip{display:flex;gap:9px;align-items:flex-start;background:#f3f0ff;border-radius:15px;padding:12px 10px;margin-top:15px;color:#897fb5}.tip span{font-size:16px}.tip p{font-size:10px;line-height:1.5;margin:0}.bottom-nav{width:330px;margin:27px auto 0;padding:6px;background:#fff;border-radius:19px;box-shadow:0 10px 30px #51447712}.nav-item{display:flex;align-items:center;gap:6px;padding:10px 15px;color:#aaa4c1;border-radius:14px;font-size:11px;font-weight:800}.nav-item span{font-size:16px}.nav-item.active{background:#292344;color:#fff}.toast{position:fixed;left:50%;bottom:28px;transform:translate(-50%,20px);opacity:0;background:#292344;color:#fff;padding:11px 16px;border-radius:13px;font-size:12px;box-shadow:0 8px 24px #28203b40;transition:.25s;pointer-events:none}.toast.show{opacity:1;transform:translate(-50%,0)}@keyframes burst{0%{opacity:0;transform:translate(-50%,15px) scale(.5)}30%{opacity:1;transform:translate(-50%,-5px) scale(1.2)}100%{opacity:0;transform:translate(-50%,-60px) scale(1)}}@media(max-width:1000px){.app-shell{padding:22px 24px}.game-grid{grid-template-columns:190px minmax(400px,1fr);}.action-panel{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.action-panel .panel-heading,.tip{grid-column:1/-1}.action{margin:0}}@media(max-width:700px){.app-shell{padding:18px 14px}.hud-row{padding:30px 0 20px;display:block}.greeting h1{font-size:27px}.resources{margin-top:18px;justify-content:flex-start}.game-grid{display:flex;flex-direction:column}.stage-card{order:-1}.stage{height:390px}.quest-panel{display:none}.action-panel{display:block}.action{margin-bottom:6px}.bottom-nav{width:100%;justify-content:space-around}.nav-item{padding:10px 12px}.brand small{display:none}}
 .wiggle{animation:wiggle .45s ease}@keyframes wiggle{0%,100%{transform:translateX(-50%) rotate(0)}25%{transform:translateX(-50%) rotate(-5deg)}75%{transform:translateX(-50%) rotate(5deg)}}
