:root{--night:#17162b;--ink:#f8f2e9;--muted:#aaa8bd;--rose:#ee8f9b;--blue:#83c9d8;--gold:#f1c777;--panel:#24233b;--line:rgba(255,255,255,.11)}*{box-sizing:border-box}html,body,#app{min-height:100%;margin:0}body{background:var(--night);color:var(--ink);font-family:ui-sans-serif,system-ui,-apple-system,"PingFang SC",sans-serif}.shell{min-height:100vh;background:radial-gradient(circle at 14% 4%,rgba(238,143,155,.12),transparent 28rem),radial-gradient(circle at 88% 14%,rgba(131,201,216,.12),transparent 30rem),linear-gradient(160deg,#1b1931,#121224 72%)}button,input{font:inherit}.topbar{height:76px;max-width:1180px;margin:auto;padding:0 28px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.logo{display:flex;align-items:center;gap:10px;font-family:Georgia,serif;font-size:18px;letter-spacing:.12em}.logo-heart{position:relative;width:26px;height:26px}.logo-heart:before,.logo-heart:after{content:"";position:absolute;width:15px;height:22px;border-radius:15px 15px 4px 4px;background:linear-gradient(#f0a3ad,#df7485);transform:rotate(-45deg);transform-origin:0 100%;left:13px}.logo-heart:after{left:-2px;transform:rotate(45deg);transform-origin:100% 100%;background:linear-gradient(#9ed7e1,#6bb5c7)}.online{display:flex;align-items:center;gap:7px;color:#a7a5b8;font-size:11px}.online i{width:6px;height:6px;border-radius:50%;background:#79d8ab;box-shadow:0 0 9px #79d8ab}.home{max-width:1080px;margin:auto;padding:64px 24px}.hero{text-align:center}.eyebrow{color:var(--rose);font-size:11px;font-weight:700;letter-spacing:.22em}.hero h1{margin:13px 0 14px;font-family:Georgia,"Songti SC",serif;font-size:clamp(40px,6vw,66px);font-weight:400;letter-spacing:.04em}.hero p{margin:0 auto;color:var(--muted);font-family:Georgia,"Songti SC",serif;font-size:14px;line-height:1.8}.game-grid{display:grid;grid-template-columns:1.65fr 1fr 1fr;gap:18px;margin-top:46px}.game-card{position:relative;min-height:265px;padding:27px;border:1px solid var(--line);border-radius:24px;background:rgba(255,255,255,.045);overflow:hidden}.game-card.featured{background:linear-gradient(145deg,rgba(238,143,155,.13),rgba(131,201,216,.08))}.game-card h2{margin:13px 0 8px;font-family:Georgia,"Songti SC",serif;font-size:27px;font-weight:400}.game-card p{max-width:370px;color:#aaa9bc;font-size:12px;line-height:1.7}.game-card .tag{display:inline-flex;padding:6px 10px;border:1px solid rgba(238,143,155,.25);border-radius:99px;color:#f0a5af;font-size:9px;letter-spacing:.12em}.game-card.placeholder{opacity:.46}.game-card.placeholder h2{font-size:19px}.orb-scene{position:absolute;right:18px;bottom:12px;width:175px;height:130px}.lamp{position:absolute;right:61px;bottom:14px;width:42px;height:70px;border:2px solid #f1c777;border-radius:48% 48% 38% 38%;background:radial-gradient(circle,#fff5ba,#eab95c 34%,rgba(238,143,155,.22) 68%);box-shadow:0 0 35px rgba(241,199,119,.35)}.orbit{position:absolute;inset:4px;border:1px solid rgba(131,201,216,.25);border-radius:50%;transform:rotate(-18deg)}.orbit:after{content:"";position:absolute;left:10px;top:22px;width:17px;height:17px;border-radius:50%;background:#8ed0dc;box-shadow:0 0 15px #8ed0dc}.play-button{display:inline-flex;margin-top:17px;padding:12px 18px;border:0;border-radius:99px;background:#f4eade;color:#26223b;cursor:pointer;font-size:12px;font-weight:700}.mode-note{margin-top:34px;text-align:center;color:#747287;font-size:10px;letter-spacing:.1em}
.modal{position:fixed;z-index:10;inset:0;display:grid;place-items:center;padding:18px;background:rgba(8,7,20,.78);backdrop-filter:blur(14px)}.dialog{position:relative;width:min(470px,100%);padding:32px;border:1px solid var(--line);border-radius:26px;background:#24233b;box-shadow:0 30px 80px rgba(0,0,0,.42)}.dialog h2{margin:0 0 7px;font-family:Georgia,"Songti SC",serif;font-size:27px;font-weight:400}.dialog>p{margin:0 0 23px;color:#aaa8bd;font-size:12px}.close{position:absolute;right:18px;top:14px;border:0;background:transparent;color:#8d8ba0;cursor:pointer;font-size:24px}.tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin-bottom:19px}.tabs button{padding:10px;border:1px solid var(--line);border-radius:10px;background:transparent;color:#aaa8bd;cursor:pointer;font-size:11px}.tabs button.active{background:#f3e8dc;color:#27243b}.field{display:block;margin:12px 0}.field span{display:block;margin:0 0 6px;color:#a8a6b9;font-size:10px}.field input{width:100%;padding:12px 14px;border:1px solid var(--line);border-radius:11px;outline:none;background:#18172c;color:#f5eee6}.field input:focus{border-color:#8ccbd6}.submit{width:100%;margin-top:9px;padding:13px;border:0;border-radius:12px;background:linear-gradient(90deg,#ed919d,#91cfda);color:#211e35;cursor:pointer;font-weight:800}.error{min-height:18px;margin-top:10px;color:#f1a0a0;font-size:10px;text-align:center}.room-code{margin:21px 0;padding:18px;border:1px dashed rgba(241,199,119,.4);border-radius:15px;text-align:center}.room-code small{display:block;color:#aaa8bd;font-size:9px}.room-code strong{display:block;margin:4px;color:#f1c777;font-size:31px;letter-spacing:.22em}.waiting{text-align:center;color:#aaa8bd;font-size:11px}.waiting:before{content:"";display:inline-block;width:7px;height:7px;margin-right:7px;border-radius:50%;background:#f1c777;animation:pulse 1.2s infinite}
.game-screen{min-height:100vh;padding-bottom:22px;background:radial-gradient(circle at 50% 30%,#303153,#17162b 65%)}.gamebar{height:68px;padding:0 22px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.back{border:0;background:transparent;color:#aaa8bd;cursor:pointer}.room-pill,.players{padding:7px 11px;border:1px solid var(--line);border-radius:99px;color:#aaa8bd;font-size:10px}.players{display:flex;gap:10px}.players b:first-child{color:#f0a0aa}.players b:last-child{color:#8bcbd7}.level-title{width:min(960px,calc(100% - 28px));margin:16px auto 4px;display:flex;align-items:end;justify-content:space-between}.level-title small{color:#88869c;font-size:9px;letter-spacing:.16em}.level-title h1{margin:3px 0 0;font-family:Georgia,"Songti SC",serif;font-size:24px;font-weight:400}.level-title p{margin:0 0 3px;color:#9997ac;font-size:10px}.hud{max-width:960px;margin:12px auto;padding:0 14px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:12px}.hud>div{display:flex;gap:9px}.hud>div:last-child{justify-content:flex-end}.stat{padding:7px 11px;border:1px solid var(--line);border-radius:10px;background:rgba(0,0,0,.15);font-size:11px}.wave-wrap{min-width:160px;text-align:center}.wave{color:#f1c777;font-family:Georgia,serif;font-size:14px}.wave-wrap i{display:block;height:3px;margin-top:7px;border-radius:5px;background:rgba(255,255,255,.08);overflow:hidden}.wave-wrap em{display:block;width:0;height:100%;background:linear-gradient(90deg,#88d0db,#f1c777);transition:width .2s}.canvas-wrap{position:relative;width:min(960px,calc(100% - 20px));margin:auto;border:1px solid rgba(238,230,221,.13);border-radius:22px;overflow:hidden;box-shadow:0 24px 80px rgba(0,0,0,.36),inset 0 0 45px rgba(126,190,202,.07)}canvas{display:block;width:100%;height:auto;aspect-ratio:900/520;background:#222747;touch-action:manipulation}.map-tip{position:absolute;left:18px;bottom:15px;padding:7px 11px;border:1px solid rgba(255,255,255,.09);border-radius:99px;background:rgba(15,17,35,.55);color:#aaa9bd;font-size:9px;backdrop-filter:blur(6px);pointer-events:none}.control-deck{width:min(960px,calc(100% - 20px));margin:13px auto 0;display:flex;align-items:stretch;justify-content:center;gap:10px}.tower-bar{display:flex;flex:1;justify-content:center;gap:8px}.tower-choice{display:flex;flex:1;max-width:200px;align-items:center;gap:9px;padding:10px 13px;border:1px solid var(--line);border-radius:13px;background:#24233b;color:#d9d5de;cursor:pointer;font-size:11px;text-align:left}.tower-choice:hover,.tower-choice.active{border-color:#f1c777;transform:translateY(-1px);box-shadow:0 0 18px rgba(241,199,119,.12)}.tower-choice i{flex:0 0 25px;width:25px;height:25px;border-radius:50%}.tower-choice.warm i{background:radial-gradient(circle at 35% 30%,#fff4b4,#ee8f9b 58%,#9c516d)}.tower-choice.tide i{background:radial-gradient(circle at 35% 30%,#e4fbff,#70bace 58%,#416f9b)}.tower-choice.bloom i{border-radius:45% 55%;background:radial-gradient(circle,#fff1ba 0 24%,#dda1c1 26% 58%,#775278 60%)}.tower-choice small{color:#87859a}.ability{min-width:174px;display:flex;align-items:center;justify-content:center;gap:9px;padding:9px 14px;border:1px solid rgba(238,143,155,.3);border-radius:13px;background:linear-gradient(135deg,rgba(238,143,155,.14),rgba(126,195,208,.1));color:#f1e7e2;cursor:pointer;text-align:left}.ability i{font-style:normal;font-size:24px;color:#f0a2ae}.ability span{font-size:11px}.ability small{display:block;margin-top:3px;color:#88869a;font-size:9px}.ability:disabled{opacity:.42;cursor:not-allowed}.legend{display:flex;justify-content:center;gap:18px;margin:11px auto 0;color:#77758a;font-size:9px}.legend span{display:flex;align-items:center;gap:5px}.legend i{display:inline-block;width:9px;height:9px;border-radius:50%}.legend .mist{background:#77748b}.legend .runner{border-radius:2px;background:#b97ea5;transform:rotate(45deg)}.legend .heavy{width:11px;height:11px;background:#51546f;box-shadow:inset 0 0 0 2px #858aa8}.reactions{display:flex;justify-content:center;gap:7px;margin-top:11px}.reactions button{padding:7px 11px;border:1px solid var(--line);border-radius:99px;background:transparent;color:#aaa8bd;cursor:pointer;font-size:10px}.toast{position:fixed;z-index:5;left:50%;top:84px;transform:translateX(-50%);padding:9px 15px;border-radius:99px;background:#f4eade;color:#29253e;font-size:11px;box-shadow:0 10px 30px rgba(0,0,0,.25)}.end-card{position:absolute;inset:0;display:grid;place-items:center;background:rgba(15,14,33,.78);backdrop-filter:blur(6px)}.end-card>div{padding:28px;text-align:center}.end-card h2{margin:0 0 8px;font-family:Georgia,serif;font-size:34px}.end-card p{color:#aaa8bd;font-size:12px}.end-card button{padding:11px 18px;border:0;border-radius:99px;background:#f1c777;color:#29253e;cursor:pointer;font-weight:700}
@keyframes pulse{50%{opacity:.35}}@media(max-width:760px){.topbar{height:64px;padding:0 16px}.home{padding:42px 15px}.game-grid{grid-template-columns:1fr}.game-card{min-height:215px}.game-card.placeholder{min-height:120px}.orb-scene{transform:scale(.78);transform-origin:right bottom}.level-title{margin-top:10px}.level-title h1{font-size:19px}.level-title p{display:none}.hud{grid-template-columns:1fr 1fr}.wave-wrap{grid-column:1/-1;grid-row:1}.hud>div:last-child{justify-content:flex-end}.gamebar{padding:0 10px}.players{display:none}.control-deck{display:block}.tower-bar{flex-wrap:wrap}.tower-choice{min-width:calc(50% - 5px);padding:8px 10px}.ability{width:100%;margin-top:8px}.legend{gap:10px;flex-wrap:wrap}.room-pill{font-size:9px}.map-tip{display:none}}
.game-card.ready{background:linear-gradient(145deg,rgba(238,143,155,.12),rgba(131,201,216,.07));transition:.25s}.game-card.ready:hover{transform:translateY(-3px);border-color:rgba(241,199,119,.24)}.game-card.game-star-mail{background:linear-gradient(145deg,rgba(114,113,190,.18),rgba(239,158,174,.09))}.mail-scene{position:absolute;right:20px;bottom:16px;width:145px;height:112px}.mail-orbit{position:absolute;inset:7px;border:1px solid rgba(154,195,225,.24);border-radius:50%;transform:rotate(18deg)}.envelope{position:absolute;left:48px;top:36px;width:58px;height:39px;border:1px solid rgba(255,238,209,.7);border-radius:6px;background:linear-gradient(145deg,#f3dec5,#cda9bc);box-shadow:0 0 28px rgba(227,173,194,.2)}.envelope:after{content:"";position:absolute;inset:0;background:linear-gradient(34deg,transparent 49%,rgba(117,90,122,.45) 50% 52%,transparent 53%),linear-gradient(-34deg,transparent 49%,rgba(117,90,122,.45) 50% 52%,transparent 53%)}.mini-star{position:absolute;right:8px;top:9px;width:9px;height:9px;border-radius:50%;background:#f2cf79;box-shadow:-104px 62px 0 #86cbd8,0 0 14px #f2cf79}
.mail-game{min-height:100vh;padding-bottom:26px;background:radial-gradient(circle at 50% 20%,#303158 0,#18172f 58%,#111124 100%)}.mail-heading{width:min(980px,calc(100% - 30px));margin:18px auto 12px;display:flex;align-items:end;justify-content:space-between}.mail-heading small{color:#8e8ca5;font-size:9px;letter-spacing:.15em}.mail-heading h1{margin:4px 0 5px;font:400 27px Georgia,"Songti SC",serif}.mail-heading p{margin:0;color:#8f8da3;font-size:11px}.mail-score{text-align:right}.mail-score span{display:block;color:#f2cf79;font:30px Georgia,serif;letter-spacing:.06em}.mail-score span.urgent{color:#ee8f9b;animation:pulse .7s infinite}.mail-status{width:min(980px,calc(100% - 30px));margin:0 auto 10px;display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:16px;padding:10px 14px;border:1px solid var(--line);border-radius:15px;background:rgba(255,255,255,.035)}.mail-status div:not(.delivery-progress){display:flex;align-items:center;gap:8px}.mail-status span{color:#858399;font-size:9px}.mail-status strong{font-size:12px}.delivery-progress{height:4px;border-radius:6px;background:rgba(255,255,255,.08);overflow:hidden}.delivery-progress i{display:block;width:0;height:100%;background:linear-gradient(90deg,#82ccd9,#ef9eae,#f0c976);transition:width .3s}.post-office{position:relative;width:min(980px,calc(100% - 20px));min-height:510px;margin:auto;padding:128px 28px 24px;border:1px solid rgba(255,255,255,.1);border-radius:24px;background:linear-gradient(180deg,rgba(35,40,79,.94),rgba(28,26,56,.97));box-shadow:0 28px 80px rgba(0,0,0,.36);overflow:hidden}.office-sky{position:absolute;inset:0 0 auto;height:158px;border-bottom:1px solid rgba(255,255,255,.08);background:radial-gradient(circle at 70% 30%,rgba(240,201,118,.2),transparent 22%),linear-gradient(180deg,#20264c,#303158)}.office-sky:after{content:"";position:absolute;inset:0;background-image:radial-gradient(circle,#fff2c7 0 1px,transparent 1.5px);background-size:37px 31px;opacity:.25}.planet{position:absolute;z-index:1;border-radius:50%}.planet.p1{right:11%;top:23px;width:57px;height:57px;background:linear-gradient(145deg,#f1d5a3,#b4769b);box-shadow:0 0 38px rgba(241,213,163,.22)}.planet.p2{left:9%;top:54px;width:25px;height:25px;background:#7fbfce;box-shadow:0 0 20px #619aaa}.shooting-star{position:absolute;z-index:2;left:36%;top:35px;width:70px;height:1px;background:linear-gradient(90deg,transparent,#fff1c7);transform:rotate(-16deg)}.constellation{position:absolute;z-index:2;color:#dce7f0;font-size:14px;line-height:22px;letter-spacing:9px;opacity:.45}.c1{left:22%;top:26px}.c2{right:28%;top:82px}.counter{position:relative;z-index:2;padding:16px;border:1px solid rgba(255,255,255,.09);border-radius:17px;background:rgba(12,13,31,.36);box-shadow:0 14px 35px rgba(0,0,0,.14)}.counter-label{margin-bottom:12px;color:#d9d5df;font-size:11px}.counter-label small{margin-left:8px;color:#77758d}.mail-inbox{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;min-height:132px}.star-letter{position:relative;min-height:126px;padding:17px 12px 12px;border:1px solid rgba(255,255,255,.15);border-radius:11px;background:linear-gradient(145deg,#f2e4d7,#d9c2cc);color:#40374b;cursor:pointer;text-align:left;box-shadow:0 8px 20px rgba(0,0,0,.17);transition:.18s}.star-letter:hover{transform:translateY(-3px) rotate(-.6deg)}.star-letter.selected{transform:translateY(-6px);border:2px solid var(--stamp);box-shadow:0 0 0 3px color-mix(in srgb,var(--stamp) 20%,transparent),0 12px 26px rgba(0,0,0,.25)}.star-letter:before{content:"";position:absolute;inset:0;background:linear-gradient(34deg,transparent 49.5%,rgba(100,77,102,.18) 50%,transparent 50.5%);pointer-events:none}.star-letter i{position:absolute;right:10px;top:9px;display:grid;place-items:center;width:24px;height:24px;border:2px dotted var(--stamp);border-radius:5px;color:var(--stamp);font-style:normal}.star-letter span{position:relative;display:block;max-width:125px;margin-top:22px;font:14px Georgia,"Songti SC",serif;line-height:1.5}.star-letter small{position:absolute;left:12px;bottom:10px;color:#877986;font-size:8px}.mail-loading{grid-column:1/-1;place-self:center;color:#858399;font-size:11px}.routes{position:relative;z-index:2;display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:16px}.route{display:grid;grid-template-columns:42px 1fr auto;align-items:center;gap:10px;padding:13px;border:1px solid rgba(255,255,255,.11);border-radius:14px;background:rgba(255,255,255,.045);color:#ddd9e2;cursor:pointer;text-align:left;transition:.18s}.route:hover{transform:translateY(-2px);background:rgba(255,255,255,.075)}.route>i{display:grid;place-items:center;width:42px;height:42px;border-radius:50%;font:20px Georgia,serif}.route-rose>i{background:rgba(239,158,174,.16);color:#ef9eae;box-shadow:inset 0 0 0 1px rgba(239,158,174,.35)}.route-blue>i{background:rgba(133,206,221,.14);color:#85cedd;box-shadow:inset 0 0 0 1px rgba(133,206,221,.35)}.route-gold>i{background:rgba(240,201,118,.14);color:#f0c976;box-shadow:inset 0 0 0 1px rgba(240,201,118,.35)}.route span{font-size:11px}.route span small{display:block;margin-top:3px;color:#807e94;font-size:8px}.route em{color:#77758b;font-size:8px;font-style:normal}.mail-end{position:absolute;z-index:4;inset:0;pointer-events:none}.mail-end>div{height:100%;display:grid;place-content:center;text-align:center;background:rgba(15,14,34,.87);backdrop-filter:blur(8px);pointer-events:auto}.mail-end span{color:#f0c976;font-size:42px}.mail-end h2{margin:7px 0;font:32px Georgia,"Songti SC",serif}.mail-end p{margin:0;color:#a7a5b6;font-size:11px}.mail-end strong{display:block;margin:17px;color:#f0c976;font-size:16px}.mail-end button{justify-self:center;padding:11px 19px;border:0;border-radius:99px;background:#f0c976;color:#252239;cursor:pointer;font-weight:700}.mail-tips{display:flex;justify-content:center;gap:22px;margin:12px auto;color:#757388;font-size:9px}
@media(max-width:760px){.game-card.game-star-mail{min-height:215px}.mail-heading{margin-top:10px}.mail-heading h1{font-size:21px}.mail-heading p{display:none}.mail-score span{font-size:23px}.mail-status{grid-template-columns:1fr 1fr;gap:8px}.delivery-progress{grid-column:1/-1;grid-row:2}.mail-status div:nth-child(3),.mail-status div:nth-child(4){justify-content:flex-end}.post-office{min-height:570px;padding:105px 12px 18px}.office-sky{height:125px}.mail-inbox{grid-template-columns:repeat(2,1fr);min-height:250px}.star-letter{min-height:118px}.routes{grid-template-columns:1fr;gap:7px}.route{padding:8px 11px}.route>i{width:34px;height:34px}.mail-tips{gap:8px;flex-wrap:wrap;padding:0 12px}.mail-tips span{font-size:8px}}
.star-letter{touch-action:manipulation;-webkit-tap-highlight-color:transparent}
