:root{--yellow:#FFD93D;--green:#6BCB77;--pink:#FF6B9D;--orange:#FF8C42;--blue:#4FC3F7;--bg-grad:linear-gradient(180deg,#BDEFFC,#E9F9FF 55%,#FFF6DC);--text:#4A3F35;--muted:#8C7F72;--radius:16px;--shadow:0 6px 0 rgba(0,0,0,.15),0 10px 20px rgba(0,0,0,.1);--font:"Arial Rounded MT Bold","Microsoft YaHei","PingFang SC",sans-serif}*{margin:0;padding:0;box-sizing:border-box}body{font-family:var(--font);color:var(--text);background:var(--bg-grad);min-height:100vh}.app{max-width:1560px;margin:0 auto;height:100vh;display:flex;flex-direction:column;padding:16px}.topbar{display:flex;align-items:center;gap:16px;padding:8px 16px;background:#fff;border-radius:24px;box-shadow:var(--shadow)}.avatar{width:52px;height:52px;border-radius:50%;background:var(--yellow);display:flex;align-items:center;justify-content:center;font-size:26px;border:3px solid #fff;box-shadow:0 3px #00000026}.points-pill{display:flex;align-items:center;gap:6px;background:var(--yellow);padding:8px 18px;border-radius:999px;font-weight:700;font-size:20px;box-shadow:inset 0 -3px #0000001a}.nav{display:flex;justify-content:space-around;background:#fff;border-radius:24px;padding:10px 8px;box-shadow:var(--shadow);margin-top:auto}.nav button{border:none;background:none;font-size:18px;font-weight:700;color:var(--muted);cursor:pointer;padding:8px 16px;border-radius:18px;font-family:inherit}.nav button.active{background:var(--pink);color:#fff;box-shadow:0 4px #00000026}.tabs .btn{background:#efe9dd;color:var(--muted)}.tabs .btn.active{background:var(--blue);color:#fff}.screen,.tab-panel{flex:1;overflow:auto;display:none;padding:20px 8px}.screen.active,.tab-panel.active{display:block;animation:popIn .3s cubic-bezier(.34,1.56,.64,1)}#scr-login.active{display:flex}@keyframes popIn{0%{opacity:0;transform:scale(.94) translateY(12px)}to{opacity:1;transform:none}}.btn{border:none;border-radius:999px;padding:14px 30px;font-size:22px;font-weight:700;cursor:pointer;font-family:inherit;color:#fff;box-shadow:0 6px #0000002e;transition:transform .12s,box-shadow .12s}.btn:active{transform:translateY(4px) scale(.97);box-shadow:0 2px #0000002e}.btn.y{background:var(--yellow);color:var(--text)}.btn.g{background:var(--green)}.btn.p{background:var(--pink)}.btn.o{background:var(--orange)}.btn.b{background:var(--blue)}.btn.sm{font-size:16px;padding:8px 18px;box-shadow:0 4px #0000002e}.btn:disabled{filter:grayscale(1);opacity:.55;cursor:not-allowed}.card{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);padding:20px}.map-wrap{position:relative;height:100%;min-height:480px;border-radius:24px;overflow:hidden;box-shadow:var(--shadow);background:radial-gradient(circle at 15% 20%,rgba(255,255,255,.55),transparent 45%),linear-gradient(160deg,#aee9b0,#7fd8f7)}.node{position:absolute;width:104px;height:104px;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;transform:translate(-50%,-50%);box-shadow:0 6px #0003;transition:transform .15s;text-align:center}.node:active{transform:translate(-50%,-50%) scale(.93)}.node.unlocked{background:var(--yellow)}.node.passed{background:var(--green);color:#fff}.node.locked{background:#c9c2b8;filter:grayscale(.85);color:#fff}.node.boss{background:var(--orange);color:#fff}.menu-row{display:flex;align-items:center;gap:12px;margin:10px 0;padding:20px;background:#fff;border-radius:16px;box-shadow:var(--shadow);cursor:pointer}.menu-row:active{transform:scale(.98)}.node .no{font-size:28px;font-weight:700;line-height:1}.node .nm{font-size:13px;padding:0 6px;line-height:1.15;margin-top:4px}.node .stars{font-size:14px}.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:none;align-items:center;justify-content:center;z-index:50}.modal-mask.show{display:flex;animation:fadeIn .2s}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal{background:#fff;border-radius:24px;padding:28px;max-width:640px;width:92%;box-shadow:var(--shadow);animation:popIn .3s cubic-bezier(.34,1.56,.64,1)}.opt{display:block;width:100%;text-align:left;background:#fff7e0;border:3px solid transparent;border-radius:16px;padding:14px 18px;font-size:20px;margin-bottom:12px;cursor:pointer;font-family:inherit}.opt:hover{border-color:var(--yellow)}.opt.sel{background:var(--yellow)}.opt.right{background:var(--green);color:#fff}.opt.wrong{background:var(--pink);color:#fff}.cal-grid{display:grid;grid-template-columns:repeat(15,1fr);gap:6px}.day{aspect-ratio:1;border-radius:8px;background:#ede7da;display:flex;align-items:center;justify-content:center;font-size:13px}.day.done{background:var(--green);color:#fff}.day.today{outline:3px solid var(--pink)}.bar{height:14px;border-radius:999px;background:#efe9dd;overflow:hidden}.bar i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--yellow),var(--orange))}.order-track{display:flex}.order-track .step{display:flex;flex-direction:column;align-items:center;gap:6px;font-size:14px;color:var(--muted);flex:1}.order-track .step .dot{width:26px;height:26px;border-radius:50%;background:#efe9dd;display:flex;align-items:center;justify-content:center}.order-track .step.on{color:var(--text);font-weight:700}.order-track .step.on .dot{background:var(--green);color:#fff}.star-drop{position:fixed;top:-60px;z-index:99;pointer-events:none;font-size:34px;animation:fall 1.4s ease-in forwards}@keyframes fall{0%{transform:translateY(0) rotate(0)}to{transform:translateY(110vh) rotate(360deg)}}.points-pop{position:fixed;z-index:99;font-weight:700;font-size:30px;color:var(--orange);animation:floatUp 1s ease-out forwards;pointer-events:none}@keyframes floatUp{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-80px)}}input,textarea{font-family:inherit}@media (max-aspect-ratio:1/1){.app{height:auto;min-height:100vh}}.quiz-split{display:flex;gap:16px;height:100%}.quiz-left{flex:1.35;min-width:0;display:flex;flex-direction:column}.quiz-right{flex:1;min-width:0;background:#fff;border-radius:24px;box-shadow:var(--shadow);padding:20px;overflow:auto}.page{padding:16px;overflow:auto}.badge{display:inline-flex;flex-direction:column;align-items:center;gap:6px;padding:14px;border-radius:20px;background:#fff;box-shadow:var(--shadow)}.badge.locked{filter:grayscale(1);opacity:.55}.badge .icon{font-size:40px}@media (max-aspect-ratio:1/1){.quiz-split{flex-direction:column}.quiz-right{height:40%}}
