html,body{width:100%;height:100%;margin:0;overflow:hidden;background:#000}
body.profile-page-active{background:#000}
body{display:grid;place-items:center}
.app-shell{position:fixed;left:50%;top:50%;width:1920px;height:1080px;min-height:0;aspect-ratio:auto;transform-origin:center center}
.topbar{padding:42px 92px 0}
.topbar nav,.top-actions{gap:38px}
.nav-item{font-size:30px}
.top-actions{gap:14px}
.icon-button{width:44px;height:44px;font-size:30px}
.avatar{width:42px;height:42px;padding:0}
.top-actions time{font-size:25px;margin-left:14px}
.hero-copy{padding:124px 92px 0;max-width:610px}
.eyebrow{font-size:12px;margin-bottom:13px}
.hero-copy h1{font-size:66px}
.description{font-size:19px;max-width:520px;min-height:60px}
.meta{gap:10px;margin-top:18px}
.meta span{padding:7px 13px;font-size:13px}
.launch{margin-top:23px;padding:12px 21px;font-size:15px}
.library-section{padding:40px 92px 0}
.section-heading{gap:16px;margin-bottom:13px}
.section-heading h2{font-size:34px}
.game-list{gap:18px;padding:7px 4px 20px}
.game-card{flex-basis:225px}
.game-card .card-label{left:15px;right:10px;bottom:13px;font-size:14px}
.hint{right:92px;bottom:24px}
.version{right:auto;left:92px}
@media(max-width:800px){.hero-copy{max-width:610px}.game-card{flex-basis:225px}}

main{position:absolute;inset:0}
.library-section{position:absolute;left:52px;right:52px;top:122px;padding:0}
.game-list{height:174px;display:flex;align-items:flex-start;gap:8px;padding:0;overflow:visible;transition:transform .68s cubic-bezier(.16,1,.3,1)}
.focus-frame{position:absolute;left:140px;top:115px;width:171px;height:171px;border:0;padding:1.5px;border-radius:23px;background:linear-gradient(115deg,#7f8da0 0%,#f1f4f7 17%,#89a4c4 35%,#cbb9b8 54%,#f2ebe7 71%,#7891b3 86%,#aebdce 100%);background-size:320% 100%;background-position:0% 50%;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;box-shadow:0 0 0 .5px rgba(213,229,247,.28),0 0 9px rgba(141,181,229,.2);filter:drop-shadow(0 0 2px rgba(180,211,244,.25));z-index:20;pointer-events:none;opacity:0;transition:opacity .12s ease-out,transform .12s ease-out,filter .12s ease-out;animation:focus-gradient 4.6s ease-in-out infinite}
.focus-frame.home-focus-restored{visibility:visible!important}
.focus-frame{--focus-motion-duration:.58s;--focus-shape-duration:.46s;--focus-motion-ease:cubic-bezier(.16,1,.3,1)}
.focus-frame.focus-elastic-moving{transition:left var(--focus-motion-duration) var(--focus-motion-ease),top var(--focus-motion-duration) var(--focus-motion-ease),width var(--focus-motion-duration) var(--focus-motion-ease),height var(--focus-motion-duration) var(--focus-motion-ease),border-radius var(--focus-motion-duration) var(--focus-motion-ease),opacity .18s ease-out,filter .28s var(--focus-motion-ease);will-change:left,top,width,height,filter}
.focus-frame.focus-shape-elastic-x{animation:focus-shape-elastic-x var(--focus-shape-duration) var(--focus-motion-ease) both,focus-gradient 4.6s ease-in-out infinite}
.focus-frame.focus-shape-elastic-y{animation:focus-shape-elastic-y var(--focus-shape-duration) var(--focus-motion-ease) both,focus-gradient 4.6s ease-in-out infinite}
.focus-frame.focus-shape-elastic-both{animation:focus-shape-elastic-both var(--focus-shape-duration) var(--focus-motion-ease) both,focus-gradient 4.6s ease-in-out infinite}
.focus-frame.is-switching{opacity:.14;transform:scale(.97);filter:blur(.85px) drop-shadow(0 0 0 rgba(180,211,244,0))}
.focus-frame.is-appearing{animation:focus-appear .24s cubic-bezier(.22,.61,.36,1) both,focus-gradient 4.6s ease-in-out infinite}
.focus-frame.is-exiting{animation:focus-exit var(--focus-exit-duration,.7s) cubic-bezier(.22,.61,.36,1) both,focus-gradient 4.6s ease-in-out infinite}
.focus-frame.rail-focus-moving{transition:left .42s cubic-bezier(.16,1,.3,1),top .42s cubic-bezier(.16,1,.3,1),width .42s cubic-bezier(.16,1,.3,1),height .42s cubic-bezier(.16,1,.3,1),border-radius .42s cubic-bezier(.16,1,.3,1),opacity .18s ease-out,filter .3s cubic-bezier(.22,.61,.36,1)}
.focus-frame.interface-bound{transition:left var(--focus-exit-duration,.7s) cubic-bezier(.16,1,.3,1),top var(--focus-exit-duration,.7s) cubic-bezier(.16,1,.3,1),width var(--focus-exit-duration,.7s) cubic-bezier(.16,1,.3,1),height var(--focus-exit-duration,.7s) cubic-bezier(.16,1,.3,1),border-radius var(--focus-exit-duration,.7s) cubic-bezier(.16,1,.3,1),opacity var(--focus-exit-duration,.7s) cubic-bezier(.22,.61,.36,1),filter var(--focus-exit-duration,.7s) cubic-bezier(.22,.61,.36,1)}
.game-card-overlay{position:absolute;inset:0;z-index:40;visibility:hidden;opacity:0;overflow:hidden;pointer-events:none;background:rgba(7,11,20,.22);perspective:1600px;transition:opacity .22s cubic-bezier(.22,.61,.36,1),background .42s cubic-bezier(.22,.61,.36,1)}
.game-card-overlay::before{display:none}
.game-card-overlay.visible{visibility:visible;opacity:1;pointer-events:auto;background:rgba(7,11,20,.7)}
.game-card-overlay.is-closing{opacity:1;pointer-events:none;transition:none}
.game-card-overlay.is-restoring{visibility:visible;opacity:1;pointer-events:none;background:rgba(7,11,20,0);transition:background .72s cubic-bezier(.22,.78,.36,1)}
.game-card-overlay{--game-card-return-scale:1;--game-card-return-brightness:1;--game-card-return-y:0px}
@property --game-card-return-scale{syntax:"<number>";inherits:false;initial-value:1}
@property --game-card-return-brightness{syntax:"<number>";inherits:false;initial-value:1}
@property --game-card-return-y{syntax:"<length>";inherits:false;initial-value:0px}
.library-card.game-card-flip{position:absolute;left:50%;top:50%;width:var(--game-card-native-width,150px);height:var(--game-card-native-height,200px);flex:0 0 auto;margin:0;padding:0;border:1px solid rgba(255,255,255,.08);border-radius:16px;overflow:hidden;opacity:1!important;filter:brightness(calc(1.08 * var(--game-card-return-brightness,1)))!important;box-shadow:0 24px 54px rgba(0,0,0,.5)!important;transform-style:preserve-3d;backface-visibility:visible;transform-origin:50% 50%;transition:--game-card-return-scale .24s cubic-bezier(.16,1,.3,1),--game-card-return-brightness .24s cubic-bezier(.16,1,.3,1),--game-card-return-y .24s cubic-bezier(.16,1,.3,1);will-change:transform,opacity,filter;}
.game-card-flip.is-opening{animation:game-card-open .98s cubic-bezier(.16,1,.3,1) both}
.game-card-flip.is-closing{animation:game-card-close 1.48s linear both}
.game-card-flip.is-returned{position:relative;left:auto;top:auto;width:var(--game-card-native-width,150px);height:var(--game-card-native-height,200px);flex:0 0 var(--game-card-native-width,150px);box-sizing:border-box;border-radius:16px;opacity:1!important;filter:brightness(1.08)!important;box-shadow:0 24px 54px rgba(0,0,0,.5)!important;transform:translateY(0) scale(1)!important;animation:none!important;transition:none!important;will-change:auto}
.library-card.game-card-handoff-source{animation:none!important;transition:opacity .34s linear!important;opacity:1!important}
.library-card.game-card-handoff-source.is-fading{opacity:0!important}
.library-card.game-card-handoff-source.is-instant-hidden{opacity:0!important;transition:none!important}
.library-card.game-card-handoff-clone{opacity:0!important;transition:opacity .34s linear!important}
.library-card.game-card-handoff-clone.is-visible{opacity:1!important}
.library-card.game-card-handoff-clone.is-selection-changed{opacity:.5!important;transform:translateY(10px) scale(.94)!important;filter:none!important;transition:none!important}
.game-card-slot.is-return-slot-fading{opacity:0;transition:opacity .42s cubic-bezier(.22,.78,.36,1)}
.library-card.returning-slot-frame{--slot-frame-opacity:1}
.library-card.returning-slot-frame::before{content:"";position:absolute;inset:0;z-index:5;border:1px solid rgba(255,255,255,.1);border-radius:16px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.025),0 12px 28px rgba(0,0,0,.12);opacity:var(--slot-frame-opacity,1);pointer-events:none;transition:opacity .42s cubic-bezier(.22,.78,.36,1)}
.game-card-front-face,.game-card-back-face{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;backface-visibility:hidden}
.game-card-front-face{z-index:1;background:#0a1220;border-radius:16px;box-shadow:0 20px 45px rgba(0,0,0,.36)}
.game-card-front-face::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 55%,rgba(2,6,14,.62) 100%);pointer-events:none}
.library-card.game-card-flip .game-card-front-face img{display:block;width:100%;height:100%;object-fit:cover}
.library-card.game-card-flip .game-card-front-face .card-label{position:absolute!important;left:14px!important;right:12px!important;bottom:12px!important;z-index:3!important;display:block!important;overflow:hidden!important;color:#fff!important;font-size:15px!important;font-weight:600!important;line-height:normal!important;white-space:nowrap!important;text-overflow:ellipsis!important}
.game-card-back-face{transform:rotateY(180deg);background:#fff;border:8px solid #080808;border-radius:16px;box-shadow:0 24px 48px rgba(0,0,0,.14)}
.library-card.game-card-flip::after{display:none}
.game-card-slot{position:relative;display:block;box-sizing:border-box;border:1px solid rgba(255,255,255,.1);border-radius:16px;overflow:hidden;background:rgba(5,10,20,.2);box-shadow:inset 0 0 0 1px rgba(255,255,255,.025),0 12px 28px rgba(0,0,0,.12);pointer-events:none}
.app-shell.game-card-mode>.background{filter:blur(12px) brightness(.72) saturate(.82);transform:scale(1.055) translateZ(0)}
.app-shell.game-card-mode>.sheen,.app-shell.game-card-mode>.topbar,.app-shell.game-card-mode>.hint,.app-shell.game-card-mode>.profile-transition-backdrop,.app-shell.game-card-mode>.profile-overlay,.app-shell.game-card-mode>.profile-screen,.app-shell.game-card-mode>.settings-screen{opacity:0!important;pointer-events:none!important;transition:opacity .48s cubic-bezier(.22,.61,.36,1) .12s}
.app-shell.game-card-mode>main{opacity:1!important;pointer-events:none!important}
.app-shell.game-card-mode>main .hero-copy,.app-shell.game-card-mode>main .game-info{opacity:0!important;visibility:hidden!important}
.app-shell.game-card-mode>main .library-module{opacity:1!important;visibility:visible!important}
.app-shell.game-card-mode>.focus-frame{visibility:hidden!important;opacity:0!important}
.app-shell.game-card-return-list>.sheen,.app-shell.game-card-return-list>.topbar,.app-shell.game-card-return-list>.hint,.app-shell.game-card-return-list>.profile-transition-backdrop,.app-shell.game-card-return-list>.profile-overlay,.app-shell.game-card-return-list>.profile-screen,.app-shell.game-card-return-list>.settings-screen{opacity:0!important;pointer-events:none!important}
.app-shell.game-card-return-list>.background{transition:filter .72s cubic-bezier(.22,.78,.36,1),transform .72s cubic-bezier(.16,1,.3,1)!important}
.app-shell.game-card-return-list>main{opacity:1!important;pointer-events:none!important}
.app-shell.game-card-return-list>main .hero-copy,.app-shell.game-card-return-list>main .game-info{opacity:0!important;visibility:hidden!important}
.app-shell.game-card-return-list>main .library-module{opacity:1!important;visibility:visible!important}
.app-shell.game-card-return-list>.focus-frame{visibility:hidden!important;opacity:0!important}
.app-shell.game-card-return-ui>.sheen,.app-shell.game-card-return-ui>.topbar,.app-shell.game-card-return-ui>.hint{opacity:1!important;pointer-events:auto!important;transition:opacity .48s cubic-bezier(.22,.61,.36,1)}
.app-shell.game-card-return-ui>main{pointer-events:auto!important}
.app-shell.game-card-return-ui>main .hero-copy,.app-shell.game-card-return-ui>main .game-info{opacity:1!important;visibility:visible!important;transform:none!important;animation:none!important;transition:opacity .48s cubic-bezier(.22,.61,.36,1)}
@keyframes game-card-open{0%{transform:translate3d(calc(-50% + var(--game-card-start-dx)),calc(-50% + var(--game-card-start-dy)),0) rotateZ(0deg) rotateY(0deg);opacity:.92}100%{transform:translate3d(-50%,-50%,0) rotateZ(0deg) rotateY(180deg);opacity:1}}
@keyframes game-card-close{
  0%{transform:translate3d(-50%,-50%,0) translateY(var(--game-card-return-y,0px)) rotateZ(0deg) rotateY(180deg) scale(var(--game-card-return-scale,1));opacity:1;animation-timing-function:cubic-bezier(.16,1,.3,1)}
  38%{transform:translate3d(-50%,calc(-50% - 860px),0) translateY(var(--game-card-return-y,0px)) rotateZ(0deg) rotateY(180deg) scale(var(--game-card-return-scale,1));opacity:0;animation-timing-function:linear}
  42%{transform:translate3d(calc(-50% + var(--game-card-start-dx)),calc(-50% + var(--game-card-start-dy) - 820px),0) translateY(var(--game-card-return-y,0px)) rotateZ(0deg) rotateY(0deg) scale(var(--game-card-return-scale,1));opacity:0;animation-timing-function:cubic-bezier(.16,1,.3,1)}
  47%{transform:translate3d(calc(-50% + var(--game-card-start-dx)),calc(-50% + var(--game-card-start-dy) - 820px),0) translateY(var(--game-card-return-y,0px)) rotateZ(0deg) rotateY(0deg) scale(var(--game-card-return-scale,1));opacity:1;animation-timing-function:cubic-bezier(.16,1,.3,1)}
  100%{transform:translate3d(calc(-50% + var(--game-card-start-dx)),calc(-50% + var(--game-card-start-dy)),0) translateY(var(--game-card-return-y,0px)) rotateZ(0deg) rotateY(0deg) scale(var(--game-card-return-scale,1));opacity:1}
}
@keyframes focus-appear{0%{opacity:.14;transform:scale(.97);filter:blur(.85px)}100%{opacity:1;transform:scale(1);filter:blur(0)}}
@keyframes focus-shape-elastic-x{0%{transform:scaleX(1.02) scaleY(.98)}28%{transform:scaleX(1.14) scaleY(.9);animation-timing-function:cubic-bezier(.8,0,1,.2)}45%{transform:scaleX(1.03) scaleY(.97)}70%{transform:scaleX(.99) scaleY(1.01)}100%{transform:scale(1)}}
@keyframes focus-shape-elastic-y{0%{transform:scaleX(.98) scaleY(1.02)}28%{transform:scaleX(.9) scaleY(1.14);animation-timing-function:cubic-bezier(.8,0,1,.2)}45%{transform:scaleX(.97) scaleY(1.03)}70%{transform:scaleX(1.01) scaleY(.99)}100%{transform:scale(1)}}
@keyframes focus-shape-elastic-both{0%{transform:scale(.99)}28%{transform:scale(1.1);animation-timing-function:cubic-bezier(.8,0,1,.2)}45%{transform:scale(1.03)}70%{transform:scale(.99)}100%{transform:scale(1)}}
@keyframes focus-exit{0%{opacity:1}100%{opacity:0}}
/* System motion baseline v1.0.1: focus exit always starts visibly and completes as a full interface transition. */
@keyframes focus-gradient{0%{background-position:0% 50%}50%{background-position:100% 50%}100%{background-position:0% 50%}}
.app-shell :focus{outline:none}
.library-section{isolation:isolate}
.library-section::before,.library-section::after{content:"";position:absolute;top:0;width:90px;height:112px;z-index:5;pointer-events:none}.library-section::before{left:-4px;background:linear-gradient(90deg,#070914,transparent)}.library-section::after{right:-4px;background:linear-gradient(270deg,#070914,transparent)}
.game-list{position:relative;z-index:2;outline:none}
.game-list:focus-visible{filter:brightness(1.05)}
.game-card{flex:0 0 110px;width:110px;height:110px;aspect-ratio:1;border-radius:18px;transform:none;opacity:.7}
.game-card.selected{transform:scale(1.55);transform-origin:50% 0;opacity:1;z-index:3;filter:brightness(1.12)}
.game-card{will-change:transform,opacity;transition:transform .68s cubic-bezier(.16,1,.3,1),opacity .52s cubic-bezier(.16,1,.3,1),filter .52s cubic-bezier(.16,1,.3,1),box-shadow .52s cubic-bezier(.16,1,.3,1)}.game-card:hover{filter:brightness(1.12)}
.library-section.is-shifting[data-direction="next"] .game-card{animation:rail-next .38s cubic-bezier(.2,.8,.2,1) both}.library-section.is-shifting[data-direction="prev"] .game-card{animation:rail-prev .38s cubic-bezier(.2,.8,.2,1) both}
@keyframes rail-next{from{opacity:.35;transform:translateX(26px)}to{opacity:var(--card-opacity,.7);transform:translateX(0)}}@keyframes rail-prev{from{opacity:.35;transform:translateX(-26px)}to{opacity:var(--card-opacity,.7);transform:translateX(0)}}
.library-section.is-shifting .game-card{animation:none}
.game-card.selected{box-shadow:none!important;animation:none}
.system-tile{flex:0 0 110px;width:110px;height:110px;border-radius:18px;display:grid;place-items:center;background:rgba(11,26,46,.72);border:1px solid rgba(255,255,255,.08);color:rgba(255,255,255,.78);font-size:38px;box-shadow:0 14px 30px rgba(0,0,0,.2)}
.store-tile{font-size:25px;background:rgba(8,24,45,.9)}.store-tile span{display:grid;place-items:center;width:54px;height:54px;border-radius:8px;background:#fff;color:#0875c9;font-weight:800;font-size:20px}
.game-card .card-label{font-size:0}
.rail-caption{position:absolute;left:271px;top:106px;display:flex;align-items:baseline;gap:20px;margin:0;z-index:6}
.rail-caption h2{font-size:28px;font-weight:400;margin:0;letter-spacing:.01em}
.rail-caption span{font-size:16px;color:rgba(255,255,255,.48)}
.hero-copy{position:absolute;left:164px;top:515px;bottom:auto;padding:0;width:780px;max-width:780px}
.hero-copy h1{font-size:72px;line-height:.98;min-height:170px;margin:0 0 20px;letter-spacing:-.045em;text-transform:none}
.eyebrow{font-size:14px;letter-spacing:.3em;margin-bottom:22px}
.description{font-size:25px;line-height:1.45;max-width:790px;min-height:0;color:rgba(255,255,255,.78)}
.action-row{display:flex;align-items:center;gap:18px;margin-top:42px}.hero-copy .launch{margin-top:0;width:360px;height:70px;border-radius:40px;font-size:25px;text-align:center;background:rgba(55,61,69,.72);color:#fff;border-color:rgba(255,255,255,.1)}
.hero-copy .launch.focus-active,.launch-menu.focus-active,.user-flow-pill.focus-active{background:#fff;color:#11151b;box-shadow:0 0 0 3px rgba(255,255,255,.18),0 10px 26px rgba(0,0,0,.24);transform:none}
.hero-copy .launch:hover:not(.focus-active),.launch-menu:hover:not(.focus-active),.user-flow-pill:hover:not(.focus-active){background:rgba(55,61,69,.72);color:#fff;box-shadow:none;transform:none}
.hero-copy .launch span{float:right;margin-right:24px}
.launch-menu{width:70px;height:70px;border-radius:50%;font-size:24px;letter-spacing:4px;background:rgba(55,61,69,.72);color:#fff}
.game-info{position:absolute;right:170px;bottom:170px;width:372px;background:none}
.system-selection .action-row,.system-selection .game-info{display:none}
.app-shell.system-mode>.topbar,.app-shell.system-mode>main,.app-shell.system-mode>.hint{opacity:0!important;visibility:hidden!important;pointer-events:none!important}
.system-screen{position:absolute;inset:0;z-index:14;visibility:hidden;opacity:0;transform:translateZ(0) scale(.96);transform-origin:center center;will-change:transform,opacity;backface-visibility:hidden;color:rgba(255,255,255,.92);pointer-events:none;transition:opacity .64s cubic-bezier(.22,.61,.36,1),transform .7s cubic-bezier(.16,1,.3,1)}
.system-screen.visible{visibility:visible}.system-screen.open{opacity:1;transform:translateZ(0) scale(1);pointer-events:auto}
.system-screen-backdrop{position:absolute;inset:-120px;background:radial-gradient(ellipse at 74% 25%,rgba(70,76,87,.26),transparent 38%),linear-gradient(115deg,#02040a 0%,#05080f 58%,#0b101b 100%);pointer-events:none}
.system-screen-header{position:absolute;left:92px;right:92px;top:38px;display:flex;align-items:center;justify-content:space-between;z-index:1}.system-screen-brand{display:flex;align-items:center;gap:26px}.system-screen-brand-icon{display:grid;place-items:center;width:70px;height:70px;border-radius:14px;background:rgba(28,35,48,.9);color:#fff;font-size:40px;line-height:1}.system-screen-header h1{margin:0;font-size:34px;font-weight:300;letter-spacing:.01em}.system-screen-actions{display:flex;align-items:center;gap:34px;color:rgba(255,255,255,.92);font-size:32px}.system-screen-actions time{margin-left:10px;font-size:30px;font-weight:300;color:rgba(255,255,255,.84)}.system-screen-avatar{display:grid;place-items:center;width:48px;height:48px;border-radius:50%;background:#2f6fb8;font-size:22px;font-weight:700}
.system-screen-tabs{position:absolute;left:172px;top:148px;display:flex;gap:62px;z-index:1}.system-screen-tab{height:58px;padding:0;border:0;background:transparent;color:rgba(255,255,255,.42);font-size:26px;font-weight:300}.system-screen-tab.active{color:rgba(255,255,255,.92)}
.system-library-content{position:absolute;left:172px;right:160px;top:350px;z-index:1}.system-library-toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:28px;color:rgba(255,255,255,.72);font-size:24px}.system-library-toolbar b{font-weight:400;color:rgba(255,255,255,.9)}.system-library-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:24px 26px;max-height:620px;overflow:hidden}.system-library-card{position:relative;min-width:0;aspect-ratio:3/4;padding:0;border:0;border-radius:4px;overflow:hidden;background:#10141d;color:#fff;text-align:left;cursor:pointer;box-shadow:0 18px 38px rgba(0,0,0,.35)}.system-library-card img{display:block;width:100%;height:100%;object-fit:cover}.system-library-card::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 56%,rgba(1,4,9,.92) 100%);pointer-events:none}.system-library-card span{position:absolute;left:18px;right:12px;bottom:16px;z-index:1;overflow:hidden;color:#fff;font-size:20px;font-weight:500;white-space:nowrap;text-overflow:ellipsis}.system-focus-frame{position:absolute;z-index:3;left:0;top:0;width:100px;height:100px;padding:2px;border:0;border-radius:18px;background:linear-gradient(115deg,#7f8da0 0%,#f1f4f7 17%,#89a4c4 35%,#cbb9b8 54%,#f2ebe7 71%,#7891b3 86%,#aebdce 100%);background-size:320% 100%;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;box-shadow:0 0 0 .5px rgba(213,229,247,.28),0 0 12px rgba(141,181,229,.28);pointer-events:none;visibility:hidden;opacity:0;transition:opacity .2s ease-out,filter .28s cubic-bezier(.22,.61,.36,1);animation:focus-gradient 4.6s ease-in-out infinite}.system-focus-frame.visible{visibility:visible;opacity:1}.system-focus-frame.system-focus-switching{filter:blur(.6px) drop-shadow(0 0 0 rgba(180,211,244,0));transition:left .46s cubic-bezier(.16,1,.3,1),top .46s cubic-bezier(.16,1,.3,1),width .46s cubic-bezier(.16,1,.3,1),height .46s cubic-bezier(.16,1,.3,1),border-radius .46s cubic-bezier(.16,1,.3,1),opacity .2s ease-out,filter .28s ease-out}
.system-store-placeholder{position:absolute;inset:300px 0 0;z-index:1;display:none;flex-direction:column;align-items:center;justify-content:center;text-align:center}.system-store-placeholder[aria-hidden="false"]{display:flex}.system-store-icon{display:grid;place-items:center;width:120px;height:120px;border-radius:28px;background:rgba(25,35,50,.9);font-size:64px}.system-store-placeholder h2{margin:28px 0 10px;font-size:54px;font-weight:300}.system-store-placeholder p{margin:0;color:rgba(255,255,255,.58);font-size:24px}
.system-screen.system-library-mode .system-store-placeholder{display:none}.system-screen.system-store-mode .system-library-content{display:none}
.info-main{background:rgba(6,15,30,.78);box-shadow:0 18px 40px rgba(0,0,0,.28)}
.info-cover{height:280px;overflow:hidden}.info-cover img{width:100%;height:100%;object-fit:cover}
.info-body{padding:22px 26px 20px}.info-body strong{font-size:26px;font-weight:500}.info-body .meta{margin-top:12px}
.info-stats{display:flex;justify-content:space-between;margin-top:32px;padding:20px 26px;background:rgba(6,15,30,.72);box-shadow:0 18px 40px rgba(0,0,0,.22);color:rgba(255,255,255,.58);font-size:16px;line-height:1.5}.info-stats b{font-size:23px;color:#fff;font-weight:400}
.profile-overlay{position:absolute;inset:0;z-index:12;opacity:0;pointer-events:none;transition:opacity .24s cubic-bezier(.22,.61,.36,1)}
.profile-overlay.open{opacity:1;pointer-events:auto}
.profile-scrim{position:absolute;inset:0;background:rgba(3,7,14,.68)}
.profile-transition-backdrop{position:absolute;inset:-120px;z-index:13;opacity:0;pointer-events:none;background:#050a14;transition:opacity .64s cubic-bezier(.22,.61,.36,1)}
.profile-transition-backdrop.active{opacity:1}
.profile-panel{position:absolute;right:52px;top:136px;width:660px;padding:28px 24px 16px;border-radius:18px;background:rgba(10,19,28,.96);box-shadow:0 24px 70px rgba(0,0,0,.42)}
.profile-title{padding:0 28px 22px;color:rgba(255,255,255,.9);font-size:30px;font-weight:400}.profile-title span{color:#ffd431;font-size:24px;margin-left:8px}
.profile-menu{display:flex;flex-direction:column}
.profile-item{position:relative;display:flex;align-items:center;width:100%;height:96px;padding:0 28px;border:0;border-bottom:1px solid rgba(255,255,255,.13);background:transparent;color:rgba(255,255,255,.88);font-size:27px;text-align:left;cursor:pointer}
.profile-item:disabled{color:rgba(255,255,255,.38);cursor:default}.profile-item:disabled .profile-icon{color:rgba(255,255,255,.32)}
.profile-item:last-child{border-bottom:0}.profile-icon{display:grid;place-items:center;width:48px;margin-right:24px;color:#fff;font-size:35px;line-height:1}.profile-status{display:flex;align-items:center;gap:14px;margin-left:auto;color:rgba(255,255,255,.7);font-size:24px}.profile-status i{display:block;width:20px;height:20px;border-radius:50%;background:#22e69a;box-shadow:0 0 14px rgba(34,230,154,.6)}
.profile-screen{position:absolute;inset:0;z-index:14;visibility:hidden;opacity:0;transform:translateZ(0) scale(.94);transform-origin:center center;will-change:transform,opacity;backface-visibility:hidden;background:#171d25;color:rgba(255,255,255,.9);pointer-events:none;transition:opacity .64s cubic-bezier(.22,.61,.36,1),transform .7s cubic-bezier(.16,1,.3,1)}
.profile-screen.visible{visibility:visible}.profile-screen.open{opacity:1;transform:translateZ(0) scale(1);pointer-events:auto}
.profile-screen-backdrop{position:absolute;inset:-240px;background:radial-gradient(ellipse at center,rgba(28,32,37,1) 40%,rgba(23,29,37,.98) 72%,rgba(6,11,22,.98) 100%);z-index:0;pointer-events:none}
.app-shell{transition:box-shadow .7s cubic-bezier(.16,1,.3,1),border-radius .7s cubic-bezier(.16,1,.3,1)}
.app-shell.profile-mode{border-radius:0;box-shadow:0 0 0 1px rgba(23,29,37,.85),0 0 34px 12px rgba(23,29,37,.68);background:#171d25}
.app-shell.profile-mode>.background,.app-shell.profile-mode>.background-shade,.app-shell.profile-mode>.sheen{visibility:hidden}
.app-shell.profile-mode::before{content:"";position:absolute;inset:0;z-index:13;background:#171d25;pointer-events:none}
.app-shell>.background,.app-shell>.background-shade,.app-shell>.sheen,.app-shell>.topbar,.app-shell>main,.app-shell>.hint{transform-origin:center center;transform:translateZ(0);will-change:transform,opacity;backface-visibility:hidden;transition:opacity .64s cubic-bezier(.22,.61,.36,1),transform .7s cubic-bezier(.16,1,.3,1)}
.app-shell>.background{transform:scale(1.045) translateZ(0)}
/* System motion baseline v1.0: fast entry, long natural deceleration, stable final rendering. */
.app-shell.home-entering>.background,.app-shell.home-entering>.background-shade,.app-shell.home-entering>.sheen,.app-shell.home-entering>.topbar,.app-shell.home-entering>main,.app-shell.home-entering>.hint{transition:opacity 2.1s cubic-bezier(.22,.78,.36,1),transform 2.4s cubic-bezier(.22,.78,.36,1)}
.app-shell.home-entering>.profile-transition-backdrop{transition:opacity 2.1s cubic-bezier(.22,.78,.36,1)}
.app-shell.profile-mode>.background,.app-shell.profile-mode>.background-shade,.app-shell.profile-mode>.sheen,.app-shell.profile-mode>.topbar,.app-shell.profile-mode>main,.app-shell.profile-mode>.hint{opacity:0;transform:translateZ(0) scale(.99)}
.app-shell.home-entering>.focus-frame:not(.home-focus-restored){visibility:hidden!important;opacity:0!important}
.profile-page-head{position:absolute;left:170px;right:170px;top:92px;display:flex;align-items:center;justify-content:space-between}.profile-page-user{display:flex;align-items:center;gap:34px}.profile-page-avatar{position:relative;display:grid;place-items:center;width:164px;height:164px;border-radius:50%;background:radial-gradient(circle at 38% 30%,#4c9cc9,#163c71 45%,#090e1c 80%);box-shadow:inset 0 0 0 7px rgba(104,148,181,.25),0 16px 35px rgba(0,0,0,.28);font-size:58px;font-weight:700;color:#b9e1ff}.profile-page-avatar span{position:absolute;right:4px;bottom:9px;width:24px;height:24px;border-radius:50%;background:#20e69a;box-shadow:0 0 12px rgba(32,230,154,.72)}.profile-page-identity{font-size:46px;font-weight:300;line-height:1.25}.profile-page-identity b{font-size:30px;color:#ffd433;margin-left:8px}.profile-page-identity small{display:block;margin-top:12px;color:rgba(255,255,255,.72);font-size:27px;font-style:italic}.profile-language{margin-top:6px;color:rgba(255,255,255,.7);font-size:22px}
.profile-page-nav{position:absolute;left:145px;right:145px;top:330px;display:flex;align-items:center;gap:36px}.profile-tab{height:82px;padding:0 30px;border:0;background:transparent;color:rgba(255,255,255,.85);font-size:30px;font-weight:300}.profile-tab.active{color:#fff}.profile-tools{display:flex;gap:42px;margin-left:auto}.profile-tools button{width:54px;height:54px;color:#fff;font-size:34px}
.profile-cards{position:absolute;left:172px;right:172px;top:486px;display:grid;grid-template-columns:repeat(4,1fr);gap:32px}.profile-card{height:460px;padding:0;border:0;background:#050a0d;color:rgba(255,255,255,.82);text-align:left;overflow:hidden}.profile-card-visual{height:348px;display:grid;place-items:center;background:radial-gradient(circle at 50% 45%,rgba(20,28,31,.52),rgba(3,8,10,.95) 70%);color:#fff}.profile-card-label{height:112px;padding:26px 32px;font-size:25px;line-height:1.5;background:linear-gradient(180deg,#05090c,#030609)}.profile-card-label b{font-weight:400}.trophy-visual{position:relative;display:block;padding:60px 40px 0}.trophy-visual strong{font-size:72px;color:#e5b39c}.trophy-visual>b{font-size:58px;font-weight:300;margin-left:18px;vertical-align:18px}.trophy-visual span{display:block;margin-top:42px;font-size:28px;color:#d7b36d;text-align:center;line-height:2}.trophy-visual em{font-size:23px;font-style:normal;color:#eee}.accolade-visual{font-size:88px;color:#fff;gap:4px}.accolade-visual strong{font-size:132px}.game-visual{display:flex;gap:18px;padding:0 34px}.game-visual img{width:106px;height:126px;object-fit:cover}.game-visual span{font-size:22px;line-height:1.05}.friend-visual{display:flex;justify-content:center}.friend-visual i{display:grid;place-items:center;width:112px;height:112px;margin-left:-26px;border-radius:50%;background:radial-gradient(circle at 30% 25%,#d777d8,#233a70 52%,#10131e);color:rgba(255,255,255,.8);font-size:50px;font-style:normal}.friend-visual i:nth-child(2){background:radial-gradient(circle at 30% 25%,#c4c4ff,#3d296d 55%,#0b1021)}.friend-visual i:nth-child(3){background:radial-gradient(circle at 30% 25%,#c99762,#30231f 55%,#0b1018)}.friend-visual i:nth-child(4){background:radial-gradient(circle at 30% 25%,#dce8ff,#546b91 45%,#10131b)}
.profile-about{position:absolute;left:172px;top:994px;color:rgba(255,255,255,.74);font-size:25px}.profile-about-card{position:absolute;left:172px;right:172px;top:1040px;height:130px;background:#050a0d}

/* User switching flow: each step owns its content and its focus frame. */
.app-shell.user-flow-mode>.background,.app-shell.user-flow-mode>.background-shade,.app-shell.user-flow-mode>.sheen,.app-shell.user-flow-mode>.topbar,.app-shell.user-flow-mode>main,.app-shell.user-flow-mode>.hint,.app-shell.user-flow-mode>.focus-frame{opacity:0!important;visibility:hidden!important;pointer-events:none!important}
.app-shell.user-flow-mode.user-flow-modal-mode>.background,.app-shell.user-flow-mode.user-flow-modal-mode>.background-shade,.app-shell.user-flow-mode.user-flow-modal-mode>.sheen,.app-shell.user-flow-mode.user-flow-modal-mode>.topbar,.app-shell.user-flow-mode.user-flow-modal-mode>main,.app-shell.user-flow-mode.user-flow-modal-mode>.hint{visibility:visible!important;pointer-events:none!important}
.app-shell.user-flow-mode.user-flow-modal-mode>.background{opacity:1!important;filter:blur(8px) brightness(.42) saturate(.72)!important;transform:scale(1.035) translateZ(0)!important}
.app-shell.user-flow-mode.user-flow-modal-mode>.background-shade,.app-shell.user-flow-mode.user-flow-modal-mode>.sheen{opacity:.42!important}
.app-shell.user-flow-mode.user-flow-modal-mode>.topbar,.app-shell.user-flow-mode.user-flow-modal-mode>main,.app-shell.user-flow-mode.user-flow-modal-mode>.hint{opacity:.68!important}
.user-flow-screen{position:absolute;inset:0;z-index:16;visibility:hidden;opacity:0;transform:translateZ(0) scale(.96);transform-origin:center center;overflow:hidden;background:#121820;color:rgba(255,255,255,.92);pointer-events:none;transition:opacity .64s cubic-bezier(.22,.61,.36,1),transform .72s cubic-bezier(.16,1,.3,1)}
.user-flow-screen.visible{visibility:visible}.user-flow-screen.open{opacity:1;transform:translateZ(0) scale(1);pointer-events:auto}.user-flow-screen.closing{opacity:0;transform:translateZ(0) scale(.98);pointer-events:none}
.user-flow-backdrop{position:absolute;inset:-120px;background:radial-gradient(ellipse at 18% 18%,rgba(73,84,94,.2),transparent 36%),radial-gradient(ellipse at 24% 86%,rgba(79,82,98,.18),transparent 42%),linear-gradient(115deg,#1b2027 0%,#121820 46%,#090e17 100%);pointer-events:none}
.user-flow-page{position:absolute;inset:0;z-index:1;visibility:hidden;opacity:0;transform:translateY(10px);pointer-events:none;transition:opacity .34s cubic-bezier(.22,.61,.36,1),transform .46s cubic-bezier(.16,1,.3,1)}
.user-flow-page.active{visibility:visible;opacity:1;transform:translateY(0);pointer-events:auto}
.user-flow-modal-mode .user-flow-screen{background:transparent}
.user-flow-modal-mode .user-flow-backdrop{background:rgba(2,6,14,.62);backdrop-filter:blur(2px)}
.user-flow-modal-mode #user-flow-switch,.user-flow-modal-mode #user-flow-add{inset:132px 218px 100px;overflow:hidden;border:1px solid rgba(255,255,255,.05);border-radius:18px;background:linear-gradient(115deg,rgba(28,33,40,.98),rgba(14,19,27,.98));box-shadow:0 24px 70px rgba(0,0,0,.5)}
.user-flow-modal-mode #user-flow-switch.active,.user-flow-modal-mode #user-flow-add.active{transform:translateY(0) scale(1)}
.user-flow-modal-mode #user-flow-switch,.user-flow-modal-mode #user-flow-add{transform:translateY(10px) scale(.985)}
.user-flow-modal-mode .user-flow-focus-frame{z-index:6}
.user-flow-page h1{position:absolute;left:96px;top:78px;margin:0;font-size:48px;line-height:1;font-weight:300;letter-spacing:.01em;color:rgba(255,255,255,.94)}
.user-flow-notes{position:absolute;left:96px;top:182px;margin:0;padding-left:34px;font-size:28px;line-height:1.9;font-weight:300;color:rgba(255,255,255,.88)}
.user-choice-list{position:absolute;left:286px;right:286px;top:366px;display:flex;align-items:flex-start;justify-content:space-between;gap:76px}
.user-choice{position:relative;display:flex;flex:1;flex-direction:column;align-items:center;min-width:220px;padding:0 12px;border:0;background:transparent;color:rgba(255,255,255,.92);cursor:pointer;text-align:center}
.user-avatar{display:grid;place-items:center;width:228px;height:228px;border-radius:50%;font-size:112px;font-weight:300;line-height:1;background:rgba(52,57,65,.9);box-shadow:0 20px 36px rgba(0,0,0,.22);transition:transform .42s cubic-bezier(.16,1,.3,1),filter .42s cubic-bezier(.16,1,.3,1)}
.user-choice.selected .user-avatar{transform:scale(1.10);filter:brightness(1.08);z-index:1}
.user-choice:hover .user-avatar,.user-choice:focus .user-avatar{transform:scale(1.035);filter:brightness(1.08)}
.user-choice.selected:focus .user-avatar,.user-choice.selected:hover .user-avatar{transform:scale(1.10)}
.user-choice strong{margin-top:30px;font-size:28px;font-weight:300;transform:scale(1.04);transform-origin:50% 0;transition:transform .42s cubic-bezier(.16,1,.3,1),font-size .42s cubic-bezier(.16,1,.3,1)}.user-choice small{margin-top:16px;color:rgba(255,255,255,.55);font-size:23px;font-weight:300;transform:scale(1.04);transform-origin:50% 0;transition:transform .42s cubic-bezier(.16,1,.3,1),font-size .42s cubic-bezier(.16,1,.3,1)}
.user-choice.selected strong{margin-top:42px;transform:scale(.98)}.user-choice.selected small{transform:scale(.98)}
.user-avatar-photo{font-size:0;background-position:center;background-size:cover;border:1px solid rgba(255,255,255,.34)}
.avatar-spider{background-image:linear-gradient(180deg,rgba(4,13,25,.05),rgba(4,13,25,.05)),url('assets/eebd7a5d-b120-45f2-a243-e30a03ac9000-cover.webp')}
.avatar-ghost{background-image:linear-gradient(180deg,rgba(4,13,25,.05),rgba(4,13,25,.05)),url('assets/7cc1712c-63c8-4647-b385-40a75dcfeb03-cover.webp')}
.add-avatar{position:relative;font-size:0;font-weight:200;background:#383d45;color:#fff}
.add-avatar::before{content:'+';position:absolute;left:50%;top:calc(50% - 16px);font-size:116px;line-height:1;font-weight:200;transform:translate(-50%,-50%)}
.user-flow-add-page h1,.user-flow-agreement-page h1{top:78px}
.user-add-columns{position:absolute;left:96px;right:96px;top:174px;bottom:72px;display:grid;grid-template-columns:minmax(0,1fr) 1px minmax(0,1fr);column-gap:72px}
.user-add-column{display:flex;flex-direction:column;align-items:center;text-align:center}.user-add-divider{width:1px;height:100%;background:linear-gradient(180deg,transparent,rgba(255,255,255,.2) 18%,rgba(255,255,255,.2) 82%,transparent)}
.user-flow-symbol{position:relative;display:grid;place-items:center;height:136px;font-size:92px;line-height:1;color:#fff}.user-add-symbol b{position:absolute;right:-34px;top:4px;font-size:56px;font-weight:300}.user-guest-symbol{font-size:98px}
.user-add-column h2{margin:24px 0 0;font-size:31px;font-weight:300}.user-add-column p{width:100%;min-height:88px;margin:58px 0 24px;text-align:left;color:rgba(255,255,255,.86);font-size:24px;line-height:1.55;font-weight:300}.user-guest-column p{margin-top:58px;text-align:center}
.user-flow-pill{display:flex;align-items:center;justify-content:center;width:84%;height:82px;margin:12px 0;padding:0 28px;border:1px solid rgba(255,255,255,.1);border-radius:42px;background:rgba(55,61,69,.72);color:#fff;font-size:29px;font-weight:500;cursor:pointer;transition:transform .3s cubic-bezier(.16,1,.3,1),background .3s ease,box-shadow .3s ease,opacity .3s ease}
.user-flow-pill:disabled{opacity:.3;cursor:default}.user-flow-primary{background:rgba(55,61,69,.72);color:#fff}.user-flow-legal-note{width:84%;margin-top:6px;color:rgba(255,255,255,.58);font-size:17px;line-height:1.45;text-align:left}
.user-agreement-layout{position:absolute;left:158px;right:158px;top:178px;bottom:86px;display:grid;grid-template-columns:minmax(0,1.35fr) minmax(360px,.65fr);gap:96px}.user-agreement-text{overflow:auto;padding:22px 28px;border:2px solid rgba(145,163,187,.55);background:rgba(24,29,38,.7);color:rgba(255,255,255,.92);font-size:23px;line-height:1.55;scrollbar-width:thin;scrollbar-color:rgba(164,181,205,.55) transparent}.user-agreement-text h2{margin:0 0 22px;font-size:28px;font-weight:700}.user-agreement-text p{margin:0 0 10px}.user-agreement-actions{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;padding-bottom:10px;gap:24px}.user-agreement-check{display:flex;align-items:center;gap:18px;border:0;background:transparent;color:rgba(255,255,255,.9);font-size:27px;font-weight:300;cursor:pointer}.agreement-checkbox{width:38px;height:38px;border-radius:6px;background:rgba(111,121,136,.55);box-shadow:inset 0 0 0 1px rgba(255,255,255,.18);transition:background .2s ease,box-shadow .2s ease}.user-agreement-check.checked .agreement-checkbox{background:#fff;box-shadow:inset 0 0 0 9px #343c49}.user-flow-confirm{width:82%;margin-top:18px}.user-flow-confirm:disabled{background:rgba(55,61,69,.42);color:rgba(255,255,255,.35)}
.user-flow-google-page{text-align:center}.user-flow-google-page h1{left:0;right:0;top:92px;text-align:center}.user-google-subtitle{position:absolute;left:0;right:0;top:194px;margin:0;font-size:32px;font-weight:300}.user-google-avatar{position:absolute;left:50%;top:310px;display:grid;place-items:center;width:360px;height:360px;border:0;border-radius:50%;font-size:0;transform:translateX(-50%);background-position:center;background-size:cover;box-shadow:0 24px 54px rgba(0,0,0,.3)}.user-flow-google-page .user-flow-pill{position:absolute;left:50%;bottom:112px;width:550px;transform:translateX(-50%)}.user-flow-google-page .user-flow-pill:hover,.user-flow-google-page .user-flow-pill:focus,.user-flow-google-page .user-flow-pill.focus-active{transform:translateX(-50%)}
.user-flow-login-page{background:radial-gradient(ellipse at 22% 8%,rgba(165,130,116,.22),transparent 30%),radial-gradient(ellipse at 22% 96%,rgba(113,122,141,.22),transparent 34%),linear-gradient(115deg,#1b1d2b 0%,#111522 48%,#080b15 100%)}
.user-flow-login-page h1{left:96px;top:78px;font-size:48px;font-weight:300}
.user-login-brand{position:absolute;right:96px;top:52px;display:flex;align-items:center;gap:22px;color:rgba(255,255,255,.86);font-size:34px;font-weight:300}.user-login-brand strong{font-weight:600}.user-login-brand b{font-size:58px;line-height:1;font-weight:800;letter-spacing:-.06em}
.user-login-layout{position:absolute;left:214px;right:214px;top:200px;bottom:132px;display:grid;grid-template-columns:minmax(0,1fr) 1px minmax(0,1fr);column-gap:84px}.user-login-manual,.user-login-wechat{display:flex;flex-direction:column;align-items:center}.user-login-manual h2,.user-login-wechat h2{margin:0 0 46px;font-size:31px;font-weight:300}.user-login-manual label{align-self:stretch;margin:0 0 12px;font-size:23px;color:rgba(255,255,255,.9)}.user-login-input{width:100%;height:78px;margin:0 0 28px;padding:0 24px;border:1px solid rgba(220,228,243,.58);border-radius:8px;background:rgba(72,77,91,.34);box-shadow:inset 0 0 24px rgba(255,255,255,.04);color:#fff;font:300 25px/1 "Segoe UI","Microsoft YaHei",sans-serif;outline:none}.user-login-input::placeholder{color:rgba(255,255,255,.34)}.user-login-input:focus{border-color:#e9edf7;background:rgba(112,117,130,.36)}.user-register-only{display:none}.user-flow-login-page.register-mode .user-register-only{display:block}.user-login-submit,.user-login-secondary{width:100%;height:78px;margin:8px 0}.user-login-message{min-height:30px;width:100%;margin:2px 0 14px;color:rgba(255,255,255,.62);font-size:18px;text-align:center}.user-login-message[data-tone="error"]{color:#ffb7b7}.user-login-message[data-tone="info"]{color:#b9d7ff}.user-login-question{margin:8px 0 10px;color:rgba(255,255,255,.8);font-size:22px}.user-login-divider{width:1px;height:100%;background:linear-gradient(180deg,transparent,rgba(255,255,255,.2) 16%,rgba(255,255,255,.2) 84%,transparent)}.user-login-wechat p{width:92%;margin:0 0 46px;color:rgba(255,255,255,.88);font-size:23px;line-height:1.55;text-align:left}.user-wechat-qr{position:relative;width:220px;height:220px;margin:4px 0 18px;border:14px solid #fff;background:#fff;box-shadow:0 8px 30px rgba(0,0,0,.26);overflow:hidden}.user-wechat-qr::before{content:"";position:absolute;inset:6px;background:repeating-linear-gradient(0deg,#111 0 5px,transparent 5px 11px),repeating-linear-gradient(90deg,transparent 0 4px,#111 4px 9px,transparent 9px 15px);opacity:.92}.user-wechat-qr.is-ready{background-position:center;background-size:cover;background-repeat:no-repeat}.user-wechat-qr.is-ready::before,.user-wechat-qr.is-ready .qr-corner,.user-wechat-qr.is-ready .qr-noise,.user-wechat-qr.is-ready b{opacity:0}.qr-corner{position:absolute;width:48px;height:48px;border:8px solid #111;background:#fff;box-shadow:inset 0 0 0 8px #111;z-index:1}.qr-corner-tl{left:8px;top:8px}.qr-corner-tr{right:8px;top:8px}.qr-corner-bl{left:8px;bottom:8px}.qr-noise{position:absolute;right:12px;bottom:18px;width:58px;height:62px;background:repeating-linear-gradient(135deg,#111 0 5px,#fff 5px 10px);z-index:1}.user-wechat-qr b{position:absolute;left:50%;top:50%;z-index:2;transform:translate(-50%,-50%);color:#111;font-size:22px;font-weight:700}.user-wechat-status{min-height:28px;color:rgba(255,255,255,.68);font-size:20px}.user-login-wechat .user-login-secondary{width:280px;height:66px;margin-top:22px}.user-login-bottom{position:absolute;right:96px;bottom:72px;width:430px;height:74px}.user-login-forgot{position:absolute;right:122px;bottom:28px;border:0;background:transparent;color:rgba(255,255,255,.85);font-size:21px;cursor:pointer}.user-login-forgot:hover{color:#fff}
.user-flow-focus-frame{position:absolute;z-index:5;left:0;top:0;width:100px;height:100px;padding:2px;border-radius:24px;background:linear-gradient(115deg,#7f8da0 0%,#f1f4f7 17%,#89a4c4 35%,#cbb9b8 54%,#f2ebe7 71%,#7891b3 86%,#aebdce 100%);background-size:320% 100%;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;box-shadow:0 0 0 .5px rgba(213,229,247,.28),0 0 12px rgba(141,181,229,.28);pointer-events:none;visibility:hidden;opacity:0;animation:focus-gradient 4.6s ease-in-out infinite;transition:opacity .18s ease-out,filter .28s cubic-bezier(.22,.61,.36,1)}
.user-flow-focus-frame.visible{visibility:visible;opacity:1}.user-flow-focus-frame.is-immediate{transition:none}.user-flow-focus-frame.user-flow-focus-switching{opacity:.14;transform:scale(.97);filter:blur(.65px)}.user-flow-focus-frame.focus-elastic-moving{transition:left .58s cubic-bezier(.16,1,.3,1),top .58s cubic-bezier(.16,1,.3,1),width .58s cubic-bezier(.16,1,.3,1),height .58s cubic-bezier(.16,1,.3,1),border-radius .58s cubic-bezier(.16,1,.3,1),opacity .18s ease-out,filter .28s cubic-bezier(.22,.61,.36,1)}.user-flow-focus-frame.user-flow-focus-appearing{animation:user-flow-focus-appear .72s cubic-bezier(.22,.61,.36,1) both,focus-gradient 4.6s linear infinite}
@keyframes user-flow-focus-appear{0%{opacity:0;filter:blur(1.2px);transform:scale(.97)}100%{opacity:1;filter:blur(0);transform:scale(1)}}

/* Match the console add-user panel: wider columns, tighter copy, longer actions. */
.user-flow-modal-mode #user-flow-switch,.user-flow-modal-mode #user-flow-add{inset:132px 260px 100px 202px}
.user-flow-modal-mode .user-flow-page h1{left:72px;top:54px;font-size:46px}
.user-flow-modal-mode .user-add-columns{left:72px;right:72px;top:170px;bottom:62px;column-gap:48px}
.user-flow-modal-mode .user-add-column h2{margin-top:22px;font-size:30px}
.user-flow-modal-mode .user-add-column p{margin-top:44px;min-height:72px;font-size:23px;line-height:1.55}
.user-flow-modal-mode .user-guest-column p{min-height:0;margin-top:44px;margin-bottom:24px}
.user-flow-modal-mode .user-flow-pill{width:100%;height:82px}
.user-flow-modal-mode .user-flow-legal-note{width:100%;font-size:16px}
.user-flow-modal-mode .user-add-symbol{width:78px;height:78px;border-radius:15px;background:#fff;color:#111;font-size:0}
.user-flow-modal-mode .user-add-symbol::before{content:'☺';font-size:50px;line-height:1;color:#111}
.user-flow-modal-mode .user-add-symbol b{right:-34px;top:-22px;color:#fff;font-size:52px}
.user-flow-modal-mode .user-guest-symbol{width:94px;height:136px;font-size:0}
.user-flow-modal-mode .user-guest-symbol::before{content:'';position:absolute;top:4px;width:42px;height:42px;border-radius:50%;background:#fff}
.user-flow-modal-mode .user-guest-symbol::after{content:'';position:absolute;bottom:8px;width:92px;height:60px;border-radius:48px 48px 8px 8px;background:#fff}

/* Fresh home game module: portrait 3:4 covers, rebuilt independently from the old rail. */
.library-module{position:absolute;left:88px;right:88px;top:118px;height:286px;z-index:4;isolation:isolate}
.library-viewport{position:absolute;left:0;top:0;width:100%;height:226px;overflow:visible}
.library-track{display:flex;align-items:flex-start;gap:24px;width:max-content;height:226px;padding:0 12px;overflow:visible;transition:transform .72s cubic-bezier(.16,1,.3,1)}
.library-card,.library-system{position:relative;flex:0 0 150px;width:150px;height:200px;aspect-ratio:3/4;margin:0;border-radius:16px;overflow:hidden}
.library-card{padding:0;border:1px solid rgba(255,255,255,.08);background:#0a1220;opacity:.5;transform:translateY(10px) scale(.94);transform-origin:50% 100%;box-shadow:0 16px 34px rgba(0,0,0,.25);transition:transform .72s cubic-bezier(.16,1,.3,1),opacity .58s cubic-bezier(.16,1,.3,1),filter .58s cubic-bezier(.16,1,.3,1),box-shadow .58s cubic-bezier(.16,1,.3,1)}
.library-card.selected{opacity:1;transform:translateY(0) scale(1);z-index:3;filter:brightness(1.08);box-shadow:0 24px 54px rgba(0,0,0,.5)}
.library-card img{display:block;width:100%;height:100%;object-fit:cover}
.library-card::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 55%,rgba(2,6,14,.62) 100%);pointer-events:none}
.library-card .card-label{position:absolute;left:14px;right:12px;bottom:12px;z-index:1;overflow:hidden;color:#fff;font-size:15px;font-weight:600;white-space:nowrap;text-overflow:ellipsis}
.library-system{display:grid;place-items:center;border:1px solid rgba(255,255,255,.1);background:rgba(10,22,39,.78);color:rgba(255,255,255,.72);font-size:42px;box-shadow:0 16px 34px rgba(0,0,0,.24)}
.library-module .library-system{opacity:.5;transform:translateY(10px) scale(.94);transform-origin:50% 100%;transition:transform .72s cubic-bezier(.16,1,.3,1),opacity .58s cubic-bezier(.16,1,.3,1),filter .58s cubic-bezier(.16,1,.3,1),box-shadow .58s cubic-bezier(.16,1,.3,1)}
.library-module .library-system.rail-selected{opacity:1;transform:translateY(0) scale(1);z-index:3;filter:brightness(1.08);box-shadow:0 24px 54px rgba(0,0,0,.5)}
.library-system.store-tile{font-size:24px}.library-system.store-tile span{display:grid;place-items:center;width:66px;height:66px;border-radius:12px;background:#f2f5f8;color:#0875c9;font-size:24px;font-weight:800}
.library-system.system-entry{display:flex;flex-direction:column;justify-content:center;gap:12px;padding:14px;text-align:center}.system-entry-icon{font-size:38px;line-height:1}.system-entry-label{color:rgba(255,255,255,.86);font-size:16px;font-weight:600;line-height:1.2;white-space:normal}
.library-selection{position:absolute;left:204px;top:220px;display:flex;align-items:baseline;gap:18px;pointer-events:none}
.library-selection h2{margin:0;color:rgba(255,255,255,.94);font-size:30px;font-weight:400;letter-spacing:.01em;white-space:nowrap}
.library-selection span{color:rgba(255,255,255,.48);font-size:16px;white-space:nowrap}
.library-module.is-shifting .library-card{animation:none}
.app-shell>.background{will-change:opacity,transform;backface-visibility:hidden;contain:paint}
.app-shell>.background.is-animated-background{filter:none;transform:scale(1.015) translateZ(0)}
.app-shell>.background{z-index:0;will-change:opacity,transform,filter;transition:opacity .76s cubic-bezier(.16,1,.3,1),transform 8s ease,filter .9s cubic-bezier(.22,.78,.36,1)}
.app-shell>.background.background-layer{opacity:0}
.library-track{transition:transform .76s cubic-bezier(.16,1,.3,1)}
.library-card{transition:transform .76s cubic-bezier(.16,1,.3,1),opacity .76s cubic-bezier(.16,1,.3,1),filter .76s cubic-bezier(.16,1,.3,1),box-shadow .76s cubic-bezier(.16,1,.3,1)}
.library-module .library-system{transition:transform .76s cubic-bezier(.16,1,.3,1),opacity .76s cubic-bezier(.16,1,.3,1),filter .76s cubic-bezier(.16,1,.3,1),box-shadow .76s cubic-bezier(.16,1,.3,1)}
main.is-game-shifting[data-direction="next"] .hero-copy,main.is-game-shifting[data-direction="next"] .game-info{animation:game-details-next .76s cubic-bezier(.16,1,.3,1) both}
main.is-game-shifting[data-direction="prev"] .hero-copy,main.is-game-shifting[data-direction="prev"] .game-info{animation:game-details-prev .76s cubic-bezier(.16,1,.3,1) both}
.library-module.is-shifting[data-direction="next"] .library-selection{animation:library-caption-next .76s cubic-bezier(.16,1,.3,1) both}
.library-module.is-shifting[data-direction="prev"] .library-selection{animation:library-caption-prev .76s cubic-bezier(.16,1,.3,1) both}
@keyframes game-details-next{0%{opacity:.18;transform:translateX(-22px)}42%{opacity:.72;transform:translateX(3px)}100%{opacity:1;transform:translateX(0)}}
@keyframes game-details-prev{0%{opacity:.18;transform:translateX(22px)}42%{opacity:.72;transform:translateX(-3px)}100%{opacity:1;transform:translateX(0)}}
@keyframes library-caption-next{0%{opacity:.22;transform:translateX(-15px)}45%{opacity:.78;transform:translateX(2px)}100%{opacity:1;transform:translateX(0)}}
@keyframes library-caption-prev{0%{opacity:.22;transform:translateX(15px)}45%{opacity:.78;transform:translateX(-2px)}100%{opacity:1;transform:translateX(0)}}
.focus-frame.rail-focus-moving{transition:none;will-change:left,top,width,height,border-radius,filter}
.app-shell.focus-animation-stiff .focus-frame.rail-focus-moving{transition:none}
.app-shell>.background{--bg-rest-scale:1.045;transform-origin:center center}
.app-shell>.background.is-animated-background{--bg-rest-scale:1.015}
.app-shell>.background.background-transition-in,.app-shell>.background.background-transition-out{transition:opacity .76s cubic-bezier(.16,1,.3,1),transform .76s cubic-bezier(.16,1,.3,1),filter .9s cubic-bezier(.22,.78,.36,1)!important}
.app-shell>.background.background-transition-in{opacity:0!important;transform:scale(calc(var(--bg-rest-scale) - .06)) translateZ(0)!important}
.app-shell>.background.background-transition-in.background-transition-visible{opacity:1!important;transform:scale(var(--bg-rest-scale)) translateZ(0)!important}
.app-shell>.background.background-transition-out{opacity:1!important;transform:scale(var(--bg-rest-scale)) translateZ(0)!important}
.app-shell>.background.background-transition-out.background-transition-hidden{opacity:0!important;transform:scale(calc(var(--bg-rest-scale) - .06)) translateZ(0)!important}
.app-shell.settings-mode>.background,.app-shell.settings-mode>.background-shade,.app-shell.settings-mode>.sheen,.app-shell.settings-mode>.topbar,.app-shell.settings-mode>main,.app-shell.settings-mode>.hint{opacity:0;transform:translateZ(0) scale(.99)}
.settings-screen{position:absolute;inset:0;z-index:14;visibility:hidden;opacity:0;transform:translateZ(0) scale(.94);transform-origin:center center;will-change:transform,opacity;backface-visibility:hidden;color:rgba(255,255,255,.9);pointer-events:none;transition:opacity .64s cubic-bezier(.22,.61,.36,1),transform .7s cubic-bezier(.16,1,.3,1)}
.settings-screen.visible{visibility:visible}.settings-screen.open{opacity:1;transform:translateZ(0) scale(1);pointer-events:auto}
.settings-screen-backdrop{position:absolute;inset:-90px;z-index:0;background:radial-gradient(ellipse at 18% 8%,rgba(156,128,126,.32),transparent 34%),radial-gradient(ellipse at 24% 86%,rgba(109,122,145,.18),transparent 40%),linear-gradient(115deg,#1d222c 0%,#111722 42%,#080d17 100%);pointer-events:none}
.settings-page-title{position:absolute;left:92px;top:78px;margin:0;z-index:1;font-size:48px;font-weight:300;letter-spacing:.01em;color:rgba(255,255,255,.92)}
.settings-content{position:absolute;left:300px;right:270px;top:188px;height:780px;z-index:1;overflow:hidden;transition:opacity .24s cubic-bezier(.22,.61,.36,1),transform .34s cubic-bezier(.16,1,.3,1)}
.settings-screen.settings-submenu-open .settings-content{opacity:0;transform:translateX(-28px);pointer-events:none}
.settings-submenu{position:absolute;left:300px;right:270px;top:154px;bottom:120px;z-index:1;visibility:hidden;opacity:0;transform:translateX(34px);pointer-events:none;transition:visibility 0s linear .34s,opacity .24s cubic-bezier(.22,.61,.36,1),transform .34s cubic-bezier(.16,1,.3,1)}
.settings-screen.settings-submenu-open .settings-submenu{visibility:hidden;opacity:0;transform:translateX(34px);pointer-events:none}
.settings-screen.settings-submenu-open .settings-submenu.settings-submenu-active{visibility:visible;opacity:1;transform:translateX(0);pointer-events:auto;transition-delay:0s}
.settings-submenu-title{margin:0 0 42px;font-size:36px;font-weight:300;color:rgba(255,255,255,.92)}
.transition-options{width:100%;display:flex;flex-direction:column}
.transition-item{position:relative;display:flex;align-items:center;justify-content:space-between;width:100%;height:90px;padding:0 30px;border:0;border-bottom:1px solid rgba(255,255,255,.14);background:transparent;color:rgba(255,255,255,.88);font-size:28px;font-weight:300;text-align:left;cursor:pointer}
.transition-item:last-child{border-bottom:0}
.transition-check{color:#fff;font-size:30px;opacity:0;transform:scale(.8);transition:opacity .2s ease,transform .24s cubic-bezier(.16,1,.3,1)}
.transition-item.selected .transition-check{opacity:1;transform:scale(1)}
.settings-submenu-hint{margin:34px 30px 0;color:rgba(255,255,255,.46);font-size:18px;font-weight:300}
.settings-list{width:100%;height:100%;padding-right:26px;overflow:hidden}
.settings-item{position:relative;display:flex;align-items:center;width:100%;height:90px;padding:0 30px;border:0;border-bottom:1px solid rgba(255,255,255,.14);background:transparent;color:rgba(255,255,255,.88);font-size:28px;font-weight:300;text-align:left;cursor:pointer;transition:background .24s ease,color .24s ease}
.settings-icon{display:grid;place-items:center;width:52px;margin-right:26px;color:rgba(255,255,255,.95);font-size:34px;line-height:1}
.settings-focus-fill,.settings-focus-box{position:absolute;left:0;top:0;width:100px;height:90px;visibility:hidden;opacity:0;pointer-events:none;transition:opacity .12s ease-out,transform .12s ease-out,filter .12s ease-out}
.settings-focus-fill{z-index:1;background:linear-gradient(135deg,rgba(255,255,255,.08),rgba(255,255,255,.18) 50%,rgba(255,255,255,.06));background-size:100% 100%;background-position:center;box-shadow:none;will-change:opacity;animation:settings-fill-pulse 6.8s cubic-bezier(.22,.61,.36,1) infinite}
.settings-focus-box{z-index:2;padding:2px;border:0;border-radius:8px;background:linear-gradient(115deg,#7f8da0 0%,#f1f4f7 17%,#89a4c4 35%,#cbb9b8 54%,#f2ebe7 71%,#7891b3 86%,#aebdce 100%);background-size:320% 100%;background-position:0 50%;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;box-shadow:0 0 0 .5px rgba(213,229,247,.28),0 0 9px rgba(141,181,229,.2);filter:drop-shadow(0 0 2px rgba(180,211,244,.25));animation:settings-focus-flow 4.6s linear infinite}
.settings-focus-fill.visible,.settings-focus-box.visible{visibility:visible;opacity:1}
.settings-focus-fill.is-immediate,.settings-focus-box.is-immediate{transition:none}
.settings-focus-fill.settings-focus-switching,.settings-focus-box.settings-focus-switching{opacity:.14;transform:scale(.97);filter:blur(.85px) drop-shadow(0 0 0 rgba(180,211,244,0))}
.settings-focus-box.settings-focus-appearing{animation:settings-focus-appear .24s cubic-bezier(.22,.61,.36,1) both,settings-focus-flow 4.6s linear infinite}
.settings-focus-fill.settings-focus-appearing{transform:scale(1);filter:blur(0);animation:settings-fill-pulse 6.8s cubic-bezier(.22,.61,.36,1) infinite}
@keyframes settings-focus-appear{0%{opacity:.14;transform:scale(.97);filter:blur(.85px)}100%{opacity:1;transform:scale(1);filter:blur(0)}}
@keyframes settings-focus-flow{0%{background-position:0% 50%}100%{background-position:320% 50%}}
@keyframes settings-fill-pulse{0%,70%{opacity:0}72%{opacity:.08}74%{opacity:.2}80%{opacity:.17}100%{opacity:0}}

/* User-selectable system transition modes. Scale remains the default. */
.app-shell.transition-mode-fade .settings-screen,.app-shell.transition-mode-fade .profile-screen{transform:translateZ(0)!important;transition:opacity .64s cubic-bezier(.22,.61,.36,1)!important}
.app-shell.transition-mode-fade.settings-mode>.background,.app-shell.transition-mode-fade.settings-mode>.background-shade,.app-shell.transition-mode-fade.settings-mode>.sheen,.app-shell.transition-mode-fade.settings-mode>.topbar,.app-shell.transition-mode-fade.settings-mode>main,.app-shell.transition-mode-fade.settings-mode>.hint,.app-shell.transition-mode-fade.profile-mode>.background,.app-shell.transition-mode-fade.profile-mode>.background-shade,.app-shell.transition-mode-fade.profile-mode>.sheen,.app-shell.transition-mode-fade.profile-mode>.topbar,.app-shell.transition-mode-fade.profile-mode>main,.app-shell.transition-mode-fade.profile-mode>.hint{opacity:0;transform:translateZ(0)!important}
.app-shell.transition-mode-fade>.background,.app-shell.transition-mode-fade>.background-shade,.app-shell.transition-mode-fade>.sheen,.app-shell.transition-mode-fade>.topbar,.app-shell.transition-mode-fade>main,.app-shell.transition-mode-fade>.hint{transition:opacity .64s cubic-bezier(.22,.61,.36,1)!important}
.app-shell.transition-mode-fade.home-entering>.background,.app-shell.transition-mode-fade.home-entering>.background-shade,.app-shell.transition-mode-fade.home-entering>.sheen,.app-shell.transition-mode-fade.home-entering>.topbar,.app-shell.transition-mode-fade.home-entering>main,.app-shell.transition-mode-fade.home-entering>.hint{transition:opacity 2.1s cubic-bezier(.22,.78,.36,1)!important;transform:translateZ(0)!important}
.app-shell.transition-mode-fade.settings-mode>.background,.app-shell.transition-mode-fade.profile-mode>.background,.app-shell.transition-mode-fade.home-entering>.background{transform:scale(var(--bg-rest-scale)) translateZ(0)!important}
.app-shell.transition-mode-fade:not(.settings-mode):not(.profile-mode):not(.home-entering)>.topbar,.app-shell.transition-mode-fade:not(.settings-mode):not(.profile-mode):not(.home-entering)>main,.app-shell.transition-mode-fade:not(.settings-mode):not(.profile-mode):not(.home-entering)>.hint{opacity:1!important;transform:translateZ(0)!important}
.app-shell.transition-mode-fade>.background{transform:scale(var(--bg-rest-scale)) translateZ(0)!important;transition:opacity .64s cubic-bezier(.22,.61,.36,1)!important}
.app-shell.transition-mode-fade>.background-shade,.app-shell.transition-mode-fade>.sheen,.app-shell.transition-mode-fade>.topbar,.app-shell.transition-mode-fade>main,.app-shell.transition-mode-fade>.hint{transform:translateZ(0)!important}
.app-shell.transition-mode-fade>.background.background-transition-in,.app-shell.transition-mode-fade>.background.background-transition-visible,.app-shell.transition-mode-fade>.background.background-transition-out,.app-shell.transition-mode-fade>.background.background-transition-hidden{transform:scale(var(--bg-rest-scale)) translateZ(0)!important}

/* System card preview: the selected card reveals the destination below it before ↓ opens the full screen. */
.app-shell.system-preview-mode>main .hero-copy,.app-shell.system-preview-mode>main .game-info{opacity:0!important;visibility:hidden!important;pointer-events:none!important}
.system-screen.preview{z-index:3;visibility:visible;opacity:1;transform:translateZ(0);clip-path:inset(302px 0 0);pointer-events:none;transition:opacity .42s cubic-bezier(.22,.61,.36,1),transform .52s cubic-bezier(.16,1,.3,1)}
.system-screen.preview .system-screen-backdrop{inset:270px -120px -120px;background:linear-gradient(180deg,rgba(3,7,14,0) 0%,rgba(3,7,14,.58) 18%,rgba(2,5,11,.9) 100%);opacity:1}
.system-screen.preview .system-screen-header,.system-screen.preview .system-screen-tabs{display:none}
.system-screen.preview .system-library-content{top:350px}
.system-screen.preview .system-store-placeholder{inset:300px 0 0}
.system-screen.preview .system-focus-frame{display:none}
.app-shell.system-preview-mode .system-screen.preview .system-library-content,.app-shell.system-preview-mode .system-screen.preview .system-store-placeholder{animation:system-preview-rise .58s cubic-bezier(.16,1,.3,1) both}
.app-shell.system-preview-no-reveal .system-screen.preview .system-library-content,.app-shell.system-preview-no-reveal .system-screen.preview .system-store-placeholder{animation:none!important;opacity:1!important;transform:none!important}
.system-focus-frame{--focus-motion-duration:.58s;--focus-shape-duration:.46s;--focus-motion-ease:cubic-bezier(.16,1,.3,1)}.system-focus-frame.focus-elastic-moving{transition:left var(--focus-motion-duration) var(--focus-motion-ease),top var(--focus-motion-duration) var(--focus-motion-ease),width var(--focus-motion-duration) var(--focus-motion-ease),height var(--focus-motion-duration) var(--focus-motion-ease),border-radius var(--focus-motion-duration) var(--focus-motion-ease),opacity .18s ease-out,filter .28s var(--focus-motion-ease);will-change:left,top,width,height,filter}.system-focus-frame.focus-shape-elastic-x{animation:focus-shape-elastic-x var(--focus-shape-duration) var(--focus-motion-ease) both,focus-gradient 4.6s ease-in-out infinite}.system-focus-frame.focus-shape-elastic-y{animation:focus-shape-elastic-y var(--focus-shape-duration) var(--focus-motion-ease) both,focus-gradient 4.6s ease-in-out infinite}.system-focus-frame.focus-shape-elastic-both{animation:focus-shape-elastic-both var(--focus-shape-duration) var(--focus-motion-ease) both,focus-gradient 4.6s ease-in-out infinite}
.system-screen-tab.system-tab-confirmed{animation:system-tab-confirm .36s cubic-bezier(.22,.61,.36,1) both}
@keyframes system-tab-confirm{0%{filter:brightness(1);transform:scale(1)}45%{filter:brightness(1.22);transform:scale(1.025)}100%{filter:brightness(1);transform:scale(1)}}
.system-library-grid.system-library-switching{animation:system-library-switch .32s cubic-bezier(.22,.61,.36,1) both}
@keyframes system-library-switch{0%{opacity:.28;transform:translateY(8px);filter:blur(2px)}100%{opacity:1;transform:translateY(0);filter:blur(0)}}
@keyframes system-preview-rise{0%{opacity:0;transform:translateY(26px)}100%{opacity:1;transform:translateY(0)}}

/* System preview layout follows the console library composition: square tiles, a side caption, and an even grid. */
.system-screen.preview .system-library-content{left:184px;top:460px}
.system-library-card{aspect-ratio:1}

/* System cards expand from their existing preview instead of using the profile/settings page transition. */
.app-shell.system-opening>.topbar,.app-shell.system-opening>.hint{opacity:0!important;transition:opacity .42s cubic-bezier(.22,.61,.36,1)}
.app-shell.system-opening>main .library-module{opacity:0!important;transition:opacity .82s cubic-bezier(.22,.61,.36,1)}
.app-shell.system-opening>main .hero-copy,.app-shell.system-opening>main .game-info{opacity:0!important;visibility:hidden!important;pointer-events:none!important}
.system-screen.system-expanding{z-index:3;visibility:visible;opacity:1;transform:translateZ(0);clip-path:inset(0);pointer-events:auto;transition:clip-path .82s cubic-bezier(.16,1,.3,1),opacity .82s cubic-bezier(.22,.61,.36,1),transform .82s cubic-bezier(.16,1,.3,1)}
.system-screen.system-expanding .system-screen-backdrop{inset:-120px;background:linear-gradient(180deg,rgba(3,7,14,0) 0%,rgba(3,7,14,.58) 18%,rgba(2,5,11,.9) 100%);box-shadow:inset 0 0 0 1000px rgba(2,5,11,0);animation:system-backdrop-fade .82s cubic-bezier(.22,.61,.36,1) both}
.system-screen.system-expanding .system-screen-header,.system-screen.system-expanding .system-screen-tabs{display:flex;opacity:0;animation:system-ui-expand .44s cubic-bezier(.22,.61,.36,1) .38s both}
.system-screen.system-expanding .system-library-content{left:172px;top:270px;transition:left .82s cubic-bezier(.16,1,.3,1),top .82s cubic-bezier(.16,1,.3,1)}
.system-screen.system-expanding .system-store-placeholder{inset:300px 0 0}
.system-screen.open .system-library-content{left:172px;top:270px}
.app-shell.system-returning-preview>.topbar,.app-shell.system-returning-preview>.hint{animation:system-home-return .82s cubic-bezier(.16,1,.3,1) both}
.app-shell.system-returning-preview>main .hero-copy,.app-shell.system-returning-preview>main .game-info{opacity:0!important;visibility:hidden!important;pointer-events:none!important}
.app-shell.system-returning-preview>main .library-module{animation:system-home-return .82s cubic-bezier(.16,1,.3,1) both}
.system-screen.system-collapsing{z-index:3;visibility:visible;opacity:1;transform:translateZ(0);clip-path:inset(302px 0 0);pointer-events:none;transition:clip-path .82s cubic-bezier(.16,1,.3,1),opacity .82s cubic-bezier(.22,.61,.36,1),transform .82s cubic-bezier(.16,1,.3,1)}
.system-screen.system-collapsing .system-library-content{left:184px;top:460px;transition:left .82s cubic-bezier(.16,1,.3,1),top .82s cubic-bezier(.16,1,.3,1)}
@keyframes system-backdrop-fade{0%{box-shadow:inset 0 0 0 1000px rgba(2,5,11,0)}100%{box-shadow:inset 0 0 0 1000px rgba(2,5,11,.58)}}
@keyframes system-ui-expand{0%{opacity:0;transform:translateY(-12px)}100%{opacity:1;transform:translateY(0)}}
@keyframes system-home-return{0%{opacity:0;transform:translateY(-12px)}100%{opacity:1;transform:translateY(0)}}

/* The system detail view stays on the theme background; no separate black panel slides over the home view. */
.system-screen .system-screen-backdrop,.system-screen.preview .system-screen-backdrop,.system-screen.system-expanding .system-screen-backdrop{inset:-120px;background:transparent;box-shadow:none!important;animation:none!important}
@keyframes system-focus-fade-in{0%{opacity:0;filter:blur(1.2px)}100%{opacity:1;filter:blur(0)}}
.system-focus-frame.system-focus-appearing{animation:system-focus-fade-in .72s cubic-bezier(.22,.61,.36,1) both,focus-gradient 4.6s ease-in-out infinite}
@keyframes home-focus-return-appear{0%{opacity:0;filter:blur(1.2px)}100%{opacity:1;filter:blur(0)}}
.focus-frame.home-focus-returning{animation:home-focus-return-appear .72s cubic-bezier(.22,.61,.36,1) both,focus-gradient 4.6s ease-in-out infinite}

/* Account creation is a separate page, so the login layout never changes shape in place. */
.user-flow-register-page{background:radial-gradient(ellipse at 22% 8%,rgba(165,130,116,.22),transparent 30%),radial-gradient(ellipse at 78% 92%,rgba(113,122,141,.2),transparent 36%),linear-gradient(115deg,#1b1d2b 0%,#111522 48%,#080b15 100%)}
.user-flow-register-page h1{left:96px;top:78px;font-size:48px;font-weight:300}
.user-register-layout{position:absolute;left:214px;right:214px;top:184px;bottom:112px;display:grid;grid-template-columns:minmax(0,1fr) 1px minmax(0,1fr);column-gap:84px}
.user-register-form,.user-register-copy{display:flex;flex-direction:column;align-items:center}
.user-register-form h2,.user-register-copy h2{margin:0 0 38px;font-size:31px;font-weight:300}
.user-register-form label{align-self:stretch;margin:0 0 12px;font-size:23px;color:rgba(255,255,255,.9)}
.user-register-form .user-login-input{margin-bottom:22px}
.user-register-form .user-login-submit,.user-register-form .user-login-secondary{width:100%;height:78px;margin:8px 0}
.user-register-form .user-login-message{margin:2px 0 10px}
.user-register-divider{width:1px;height:100%;background:linear-gradient(180deg,transparent,rgba(255,255,255,.2) 16%,rgba(255,255,255,.2) 84%,transparent)}
.user-register-copy{justify-content:center;text-align:center;padding:0 46px}
.user-register-mark{display:grid;place-items:center;width:148px;height:148px;margin-bottom:38px;border-radius:34px;background:rgba(45,69,106,.68);box-shadow:0 18px 40px rgba(0,0,0,.25);color:#fff;font-size:48px;font-weight:700;letter-spacing:-.08em}
.user-register-copy h2{margin-bottom:24px;font-size:38px}
.user-register-copy p{max-width:560px;margin:0 0 22px;color:rgba(255,255,255,.72);font-size:23px;line-height:1.6}

/* Account identity is rendered from the authenticated user, never from a demo profile. */
.account-avatar-surface{--account-avatar-hue:210;background:radial-gradient(circle at 34% 28%,hsl(var(--account-avatar-hue) 72% 68%),hsl(var(--account-avatar-hue) 62% 40%) 44%,hsl(var(--account-avatar-hue) 48% 16%) 86%);}
.account-avatar-mark{font-weight:700;text-align:center;}
.user-avatar.account-avatar-surface{border:1px solid rgba(255,255,255,.34);color:#f4f8ff;}
.profile-page-avatar.account-avatar-surface{color:#d9efff;}
.profile-page-avatar>.account-avatar-mark{position:static;right:auto;bottom:auto;width:auto;height:auto;border-radius:0;background:none;box-shadow:none;}
.profile-page-avatar>.profile-online-dot{position:absolute;right:4px;bottom:9px;width:24px;height:24px;border-radius:50%;background:#20e69a;box-shadow:0 0 12px rgba(32,230,154,.72);}
.user-wechat-qr{display:grid;place-items:center;background:rgba(255,255,255,.08)!important}
.user-wechat-qr::before{display:none}
.user-wechat-qr.is-ready{background-position:center;background-size:cover;background-repeat:no-repeat}
.qr-placeholder-label{color:rgba(255,255,255,.62);font-size:20px;line-height:1.4;text-align:center}
.qr-placeholder-label small{font-size:15px;color:rgba(255,255,255,.42)}
.user-wechat-qr.is-ready .qr-placeholder-label{opacity:0}
