/* The lobby and collection share one navigation shell. Gameplay keeps its viewport. */
.app-shell{grid-template-columns:270px minmax(0,1fr)}
.sidebar{position:sticky;top:0;height:100svh;padding:25px 18px 18px;background:#1f1140;color:#e1d8f7;border:0;overflow:hidden}
.sidebar .brand{color:#e3dbf7;margin:0 10px 24px}.sidebar .brand-mark{background:#c5b3ee;color:#2c185a}.sidebar .brand-dot{color:#c5b3ee}
.menu-kicker{font-size:11px;font-weight:800;letter-spacing:1.5px;color:#6c56a0}.sidebar .menu-kicker{color:#a88ee6}
.menu-navigation{display:grid;gap:4px;flex:none;margin-bottom:22px}.menu-nav-button{display:flex;align-items:center;gap:14px;padding:11px 14px;min-height:46px;border:0;border-radius:12px;background:transparent;text-align:left;font-size:14px;font-weight:750;color:#b7a2ea}
.menu-nav-button svg,.game-menu svg,.daily-card svg,.daily-mini svg,.path-location svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:none}
.menu-nav-button.active{background:#c5b3ee;color:#2c185a}.sidebar-route{overflow-y:auto;min-height:0;padding:0 6px 20px;scrollbar-width:thin;scrollbar-color:#7059a655 transparent;overscroll-behavior:contain;flex:1}
.path-band summary{display:flex;align-items:center;gap:9px;cursor:pointer;list-style:none;padding:18px 0 12px;min-height:44px}.path-band summary::-webkit-details-marker{display:none}.path-band summary>span{font-size:12px;background:#ffffff15;padding:6px 8px;border-radius:7px;font-weight:800}.path-band summary strong{font-size:12px;font-weight:600}.path-band summary::after{content:'⌄';margin-left:auto}.path-band:not([open]) summary::after{transform:rotate(-90deg)}
.world-path{position:relative;display:grid;gap:9px;padding:6px 0 14px}.world-path::before{content:'';position:absolute;left:28px;top:20px;bottom:34px;border-left:2px dashed #7660aa55}
.path-location{position:relative;display:flex;align-items:center;gap:11px;padding:7px 5px;width:100%;min-height:66px;color:#b69fea;border:1px solid transparent;border-radius:14px;background:transparent;text-align:left}.path-location:nth-child(2){padding-left:18px}.path-location-icon{display:grid;place-items:center;flex:none;width:44px;height:44px;border-radius:16px;background:#341c6b;border:1px solid #6a549d55;box-shadow:0 3px 0 #140b2944}.path-location strong{display:block;font-size:14px}.path-location small{display:block;font-size:11px;margin-top:5px;line-height:1.4}.path-location.current{background:#2c185b;border-color:#a589e555;color:#dfd5f6}.path-location.current .path-location-icon{background:#c3b1ee;color:#2b1858;box-shadow:0 3px 0 #9483bc}.path-location>i{width:6px;height:6px;border-radius:50%;background:#bba6ec;margin-left:auto}.path-location.locked{cursor:pointer;opacity:1;color:#9180ba}.path-location.locked .path-location-icon{background:#281652;color:#9180ba}.path-unlock-note{font-size:11px;line-height:1.6;color:#9786be;margin:0 0 18px 12px}.sidebar-bottom{flex:none;padding:15px 7px 0;border-color:#8c79b733}.sidebar-bottom .language-badge{background:#ffffff10;color:#d1c2f2}.sidebar-bottom small{color:#ab91e7;font-size:11px;margin:0}
.mobile-header,.bottom-menu{display:none}.topbar{max-width:1000px;margin:0 auto}.play-layout{gap:30px}.game-frame:not(.playing) .hud{visibility:hidden}.topic-tabs{display:none}.start-overlay{padding:26px 24px 32px;align-items:flex-start}.start-content{margin:0 auto}.start-content h2{font-size:30px;margin:15px 0 10px}.start-content .chapter-intro{font-size:13px;display:block}.daily-mini{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-bottom:22px;padding-bottom:15px;border-bottom:1px solid #c8b7ef33;text-align:left;font-size:11px;color:#cabaf0}.daily-mini svg{width:18px;height:20px;color:#efc780}.daily-mini strong{margin-right:auto;color:#e0d6f6}.daily-mini>span{font-size:10px}.lesson-stop{min-height:62px}.home-links button{min-height:44px}.details-heading{margin-top:25px}.how-to{display:none}.session-xp{padding:9px 12px;background:#d4c6f3;border-radius:12px;color:#3f2282!important;font-weight:750}
.game-menu{max-width:840px;margin:0 auto;padding:20px 0 60px;color:#2a1756}.game-menu h1{font-size:34px;letter-spacing:-1.2px;line-height:1.2;margin:9px 0 10px}.game-menu h2{font-size:19px;letter-spacing:-.3px;margin:0}.game-menu h3{font-size:17px;margin:0}.menu-heading{margin-bottom:30px}.menu-heading>p{color:#715ba6;font-size:14px;line-height:1.6;margin:0}.menu-topic-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:22px}.menu-topic-tabs button{padding:11px 15px;min-height:52px;border:1px solid #d2c4f2;border-radius:14px;background:#fff;color:#381f73;font-size:14px;font-weight:750;text-align:left}.menu-topic-tabs small{display:block;margin-top:4px;color:#6e58a3;font-size:11px;font-weight:500}.menu-topic-tabs button.selected{background:#d3c6f2;border-color:#907eba}.menu-topic-tabs button:disabled{opacity:.65;cursor:default}.menu-progress{height:6px;border-radius:5px;background:#d7cbf3;overflow:hidden}.menu-progress i{display:block;height:100%;background:#7f6aaf;border-radius:inherit}.collection-summary{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:14px;padding:22px;background:#e1d8f7;border:1px solid #d0c2f2;border-radius:20px}.collection-summary strong{display:block;font-size:15px;margin-top:8px}.collection-summary>span{font-size:12px;color:#685399}.collection-summary .menu-progress{width:100%}.collection-summary>p{margin:0;color:#665197;font-size:12px;line-height:1.65}.collection-tier-heading{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:28px 0 15px}.collection-tier-heading h2 span{font-size:13px;font-weight:500;color:#7762aa;margin-left:7px}.collection-tier-heading>span{font-size:12px;color:#6f58a4}
.album-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}.album-word{min-width:0;padding:8px 8px 13px;border:1px solid #d4c7f3;border-radius:17px;background:#fff;color:#2a1756;text-align:center}.album-picture{position:relative;display:grid;place-items:center;aspect-ratio:1}.album-picture img{width:88%;height:88%;object-fit:contain}.album-word strong{font-size:13px;display:block;overflow-wrap:anywhere}.album-word small{font-size:10px;color:#6f59a4;display:block;margin-top:5px;line-height:1.4;min-height:28px}.album-word.unopened{opacity:1;cursor:default;background:#e8e1f9;border-color:#d9cef4}.album-word.unopened img{filter:brightness(0);opacity:.17}.album-word.unopened strong{color:#8773b4;font-size:12px}.album-word.unopened .album-picture svg{position:absolute;width:18px;height:18px;bottom:7px;right:3px;color:#8a77b6}.album-word.opened:hover{border-color:#8470b2}.future-collection{display:flex;align-items:center;gap:18px;padding:24px;background:#e7dff8;border:1px dashed #a68be5;border-radius:18px;margin-top:20px}.future-collection>span{color:#836fb2}.future-collection p{font-size:13px;line-height:1.7;margin:8px 0 0;color:#6a549c}
.skin-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.skin-card{border:1px solid #d2c4f2;border-radius:22px;overflow:hidden;background:#fff}.skin-card.equipped{border:2px solid #826db1}.skin-preview{position:relative;height:235px;min-width:0;overflow:hidden;background:radial-gradient(ellipse at 50% 85%,#9988bf55 0,transparent 55%),#e7dff8}.skin-preview.office{background:radial-gradient(ellipse at 50% 85%,#c6c5a566 0,transparent 55%),#f0eee4}.skin-preview img{position:absolute;inset:0;display:block;width:100%;height:100%;max-width:none;max-height:100%;padding:16px 20px;object-fit:contain;object-position:center;pointer-events:none}.skin-lock{position:absolute;right:14px;top:14px;display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:#ffffffa8;color:#69539b}.skin-copy{padding:18px}.skin-copy p{font-size:13px;min-height:36px;line-height:1.6;color:#715ba6;margin:7px 0 15px}.skin-copy button{width:100%;min-height:44px;border-radius:12px;margin-top:14px;border:1px solid #a78ce6;background:#d2c4f2;font-size:14px;font-weight:750;color:#351d6d}.skin-copy .skin-selected{background:#e2d9f7;opacity:1;color:#5c4988;cursor:default}.skin-card.locked button{background:#e9e2f9;cursor:default;opacity:1;border-color:#d1c3f2;color:#7f6baf}.menu-note{font-size:12px;line-height:1.7;color:#735ca8;text-align:center;margin-top:28px}
.daily-card{padding:21px;background:#fff;border:1px solid #d6c9f3;border-radius:20px;margin-bottom:22px}.daily-title{display:flex;align-items:center;gap:12px}.daily-flame{color:#c3893a;display:grid;place-items:center;width:42px;height:46px;background:#faf0d8;border-radius:13px;flex:none}.daily-title strong{font-size:15px}.daily-title p{font-size:11px;line-height:1.5;margin:5px 0 0;color:#7761aa}.daily-done{margin-left:auto;color:#675297}.week-strip{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;margin-top:19px}.week-day{text-align:center;color:#8875b5;font-size:10px}.week-day i{display:grid;place-items:center;aspect-ratio:1;max-width:38px;margin:7px auto 0;border-radius:50%;background:#e8e1f9;font-style:normal;font-size:20px}.week-day i svg{width:17px;height:17px}.week-day.today i{outline:1px solid #c0a163;outline-offset:2px}.week-day.done i{background:#c8b8ef;color:#52417a}.details .daily-card{padding:15px}.achievement-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.achievement{display:flex;align-items:flex-start;gap:15px;padding:20px;background:#e8e1f9;border:1px solid #d7cbf3;border-radius:18px;color:#7963ab}.achievement-medal{width:44px;height:49px;background:#d8ccf4;border:1px solid #c3b1ee;border-radius:14px;display:grid;place-items:center;flex:none}.achievement>div{flex:1}.achievement h2{font-size:15px}.achievement p{font-size:12px;line-height:1.5;min-height:35px;margin:6px 0 14px}.achievement small{display:block;font-size:10px;margin-top:7px}.achievement.unlocked{background:#fbfbf1;border-color:#bca8ec;color:#3c217c}.achievement.unlocked .achievement-medal{background:#f5e6b8;color:#927037;border-color:#e8d596}
.league-card{display:flex;align-items:center;gap:28px;padding:30px;background:#281652;border-radius:24px;color:#e5ddf8}.league-emblem{display:grid;place-items:center;flex:none;width:95px;height:109px;background:#e8d898;border:5px solid #c1af6d;border-radius:26px;color:#412385;transform:rotate(-6deg)}.league-emblem svg{width:50px;height:50px}.league-card .menu-kicker{color:#a589e5}.league-card strong{display:block;font-size:42px;margin:8px 0 5px}.league-card strong small{font-size:18px;color:#b29ae9}.league-card p{font-size:12px;margin:0;color:#b49dea}.league-personal{display:flex;align-items:center;gap:15px;padding:18px;margin-top:18px;background:#e0d6f6;border:1px solid #a394c6;border-radius:15px}.league-avatar{display:grid;place-items:center;width:42px;height:42px;border-radius:50%;background:#c5b3ee;color:#5e4b8a}.league-personal>strong{margin-left:auto;font-size:15px;white-space:nowrap}.league-personal p{font-size:11px;color:#725ca7;margin:5px 0 0}.league-coming{padding:24px 4px}.league-coming h2{font-size:17px}.league-coming p,.league-plan p{font-size:13px;line-height:1.8;color:#6c569f}.xp-rules{background:#fff;border:1px solid #d2c5f2;border-radius:19px;padding:23px}.xp-rules h2{margin-bottom:17px}.xp-rules>div{display:flex;gap:12px;justify-content:space-between;font-size:13px;padding:13px 0;border-bottom:1px solid #e7dff8}.xp-rules strong{color:#5f4c8d}.xp-rules p{font-size:11px;line-height:1.8;color:#7d68ad}.league-plan{margin-top:20px;padding:0 4px}.league-plan summary{font-size:13px;color:#5e4b8a;min-height:44px;cursor:pointer;padding-top:12px}
.route-dialog{background:#1f1140;color:#e1d8f7;position:fixed;inset:0 auto 0 0;margin:0;width:min(360px,calc(100% - 28px));height:100dvh;max-height:100dvh;max-width:none;padding:max(24px,env(safe-area-inset-top)) 22px max(28px,env(safe-area-inset-bottom));border:0;border-radius:0 24px 24px 0;overflow:auto;overscroll-behavior:contain}.route-dialog .menu-kicker{color:#a387e5}.route-dialog-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-bottom:14px}.route-dialog-heading h2{font-size:25px;margin:9px 0}.route-close{width:44px;height:44px;flex:none;border:1px solid #9887bf44;border-radius:12px;background:#ffffff08;color:#d7cbf3;font-size:25px}.route-dialog::backdrop{background:#160c2caa;backdrop-filter:blur(4px)}
@media(min-width:641px) and (max-width:1150px){.app-shell{grid-template-columns:235px minmax(0,1fr)}main{padding:0 24px}.play-layout{grid-template-columns:minmax(300px,510px)}.details{display:none}.sidebar{padding:25px 13px 18px}.game-menu{padding-top:8px}.album-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.achievement-grid{grid-template-columns:1fr}}
@media(max-width:640px){
 .app-shell{display:block}.sidebar{display:none}.mobile-header{display:flex;align-items:center;gap:9px}.mobile-brand{font-size:23px}.topbar{position:fixed;padding-left:16px;padding-right:16px;background:linear-gradient(#1f113ffa,#1f113fee 72%,#1f113f00);height:calc(72px + env(safe-area-inset-top,0px))}.topbar-actions{gap:6px}.topbar .install-button{font-size:12px;padding:8px 10px}.topbar .install-button span{font-size:19px}body{background:#f0ebfb}main{padding:0}.game-frame{height:100svh;min-height:500px;border-radius:0}.start-overlay{padding:calc(85px + env(safe-area-inset-top,0px)) 22px calc(110px + env(safe-area-inset-bottom,0px));align-items:flex-start}.start-content{margin:0 auto;max-width:420px}.start-content h2{font-size:31px;margin:15px 0 11px}.start-content .chapter-intro{display:block;font-size:13px}.daily-mini{margin-bottom:20px}.lesson-stop{min-height:65px}.lesson-stop strong{font-size:14px}.start-footnote{display:block;font-size:11px}.game-menu{padding:calc(97px + env(safe-area-inset-top,0px)) 20px calc(112px + env(safe-area-inset-bottom,0px));margin:0;min-height:100svh}.game-menu h1{font-size:28px}.menu-heading{margin-bottom:25px}.menu-heading>p{font-size:13px}.bottom-menu{position:fixed;z-index:30;bottom:0;left:0;right:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:3px;padding:8px 9px calc(9px + env(safe-area-inset-bottom,0px));background:#efebfafa;border-top:1px solid #baa5ebaa;box-shadow:0 -5px 25px #20114210}.bottom-menu .menu-nav-button{display:flex;flex-direction:column;justify-content:center;gap:5px;padding:7px 1px 5px;min-height:53px;font-size:11px;text-align:center;color:#7964ab;border-radius:13px}.bottom-menu .menu-nav-button.active{background:#d6c9f3;color:#3e2280}.bottom-menu svg{width:22px;height:22px}.album-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.album-word{border-radius:14px;padding:7px 5px 10px}.album-word small{font-size:10px}.collection-summary{padding:18px;gap:12px}.collection-tier-heading h2 span{font-size:12px}.future-collection{gap:12px;padding:20px 16px}.future-collection h3{font-size:15px}.future-collection p{font-size:12px}.skin-grid{gap:10px}.skin-preview{height:195px}.skin-card{border-radius:18px}.skin-copy{padding:13px}.skin-copy h3{font-size:15px}.skin-copy p{font-size:12px;min-height:39px}.skin-copy button{font-size:13px}.achievement-grid{grid-template-columns:1fr;gap:11px}.achievement p{min-height:0}.league-card{padding:25px 20px;gap:22px}.league-emblem{width:76px;height:92px}.league-card strong{font-size:35px}.league-coming h2{font-size:16px;line-height:1.5}.league-personal{gap:10px;padding:15px 12px}.league-personal>strong{font-size:13px}.xp-rules{padding:20px}.xp-rules>div{font-size:12px;line-height:1.7}.collection-tier-heading{margin-top:23px}
}
@media(max-width:359px){.mobile-brand{display:none}.skin-preview{height:170px}.game-menu{padding-left:15px;padding-right:15px}.start-overlay{padding-left:17px;padding-right:17px}.daily-mini>span{font-size:9px}.bottom-menu .menu-nav-button{font-size:10px}.collection-tier-heading h2 span{display:block;margin:4px 0 0}}
.collection-world-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px}.collection-world{display:flex;flex-direction:column;align-items:flex-start;gap:7px;padding:20px;border:1px solid #d0c2f2;border-radius:19px;background:#e7e0f8;text-align:left;min-width:0;min-height:169px;color:#3f2382}.collection-world.ready{background:#fff;border-color:#a596c7}.world-collection-icon{display:grid;place-items:center;width:39px;height:39px;border-radius:12px;background:#d3c6f2;color:#6c56a0;margin-bottom:6px}.collection-world strong{font-size:15px;line-height:1.4}.collection-world>span:not(.world-collection-icon){font-size:12px}.collection-world small{font-size:10px;color:#7d68ad}.collection-back{display:flex;align-items:center;gap:9px;padding:0 0 14px;margin-bottom:16px;min-height:44px;background:transparent;border:0;color:#675299;font-size:13px}.collection-back svg{width:20px;height:20px}.vocabulary-source{margin-top:26px;border-top:1px solid #d2c5f2;padding-top:15px}.vocabulary-source summary,.planned-vocabulary summary{cursor:pointer;min-height:44px;font-size:13px;color:#644f94;padding:12px 0}.vocabulary-source p,.planned-vocabulary p{font-size:12px;line-height:1.85;color:#7660aa}.vocabulary-source a{color:#422488;text-underline-offset:3px}.planned-vocabulary{margin-top:20px}.planned-vocabulary>div{display:flex;flex-wrap:wrap;gap:7px}.planned-vocabulary>div>span{font-size:13px;border:1px solid #d2c5f2;border-radius:9px;padding:8px 11px;color:#634f93;background:#e8e1f9}
@media(max-width:900px){.collection-world-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){.collection-world{padding:16px 13px;min-height:162px}.collection-world strong{font-size:14px}.collection-world-grid{gap:10px}.collection-world>span:not(.world-collection-icon){font-size:11px}.planned-vocabulary>div>span{font-size:12px}}
/* Keep Play reachable while the lesson list scrolls above it. */
.start-overlay{flex-direction:column;overflow:hidden;align-items:stretch}.start-content{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#b9a3eb33 transparent;padding:0 2px 12px}.home-actions{flex:none;padding-top:12px;text-align:center;width:100%;max-width:420px;margin:0 auto}.home-actions .home-links{margin-top:8px}.home-actions .start-footnote{margin-top:2px}.daily-mini{margin-bottom:14px;padding-bottom:12px}.start-content h2{letter-spacing:-.9px;font-size:30px;margin:12px 0 10px}.start-content .chapter-intro{margin-bottom:15px}.sidebar [inert]{opacity:.5}
@media(max-width:640px){.start-overlay{padding-bottom:calc(90px + env(safe-area-inset-bottom,0px))}.home-actions{padding-top:12px}.home-actions .start-footnote{font-size:10px}.home-actions .home-links button{min-height:38px}.start-content{touch-action:pan-y}.start-content h2{font-size:31px}}

.collection-world .collection-open{display:flex;align-items:center;justify-content:space-between;width:100%;gap:12px;margin-top:auto;padding-top:10px;color:#55447e;font-size:12px;font-weight:700}.collection-open svg{width:18px;height:18px;transform:rotate(180deg)}.collection-world:hover{border-color:#8572b3}.collection-world:active{background:#d5c8f3}.path-location.locked:hover{background:#ffffff08}

.lab-scenes{display:grid;grid-template-columns:1fr 1fr;gap:8px}.lab-scenes button{font-size:13px;min-height:54px;margin:0}.lab-report{text-align:left;margin-top:20px;padding:14px;border-radius:14px;background:#e0d6f6}.lab-report strong{font-size:15px}.lab-report p{font-size:12px;margin:8px 0}.world-title strong{max-width:190px;font-size:17px;line-height:1.2}.world-title{min-width:0}.world-title span{letter-spacing:1px}

.profile-account-card{display:grid;grid-template-columns:48px 1fr;text-align:left;gap:4px 14px;width:100%;border:2px solid #d8c2fa;border-radius:22px;background:linear-gradient(115deg,#eee3ff,#e5f6fb);padding:19px;margin:18px 0;cursor:pointer;color:#593780;font:inherit;box-shadow:0 5px 0 #d6bfef}.profile-account-card>span{grid-row:1/3;align-self:center;font-size:36px;color:#9763ec}.profile-account-card strong{font-size:20px}.profile-account-card small{font-size:14px;color:#876d9f;line-height:1.5}

.site-links{display:flex;flex-wrap:wrap;justify-content:center;gap:4px 20px;margin:14px 0;font-size:13px;color:#795b95}.site-links a{display:inline-flex;align-items:center;min-height:44px;color:inherit;text-underline-offset:4px}.site-links a:focus-visible{outline:3px solid #9865dc;outline-offset:4px}.sidebar>.site-links{flex-shrink:0;margin:0;font-size:12px}

.learning-goal{background:#f5effc;border:1px solid #dfd2ee;border-radius:18px;padding:16px;margin:0 0 18px;color:#513176;max-width:640px}.learning-goal>strong{display:flex;gap:8px;align-items:center;margin-bottom:10px;font-size:17px}.learning-goal>div{display:flex;justify-content:space-between;gap:12px;font-size:14px;margin:6px 0}.learning-goal progress{display:block;width:100%;height:7px;accent-color:#8652e8}.learning-goal button{font-size:14px;min-height:38px;padding:7px 14px;margin-top:8px;display:flex;align-items:center;gap:8px}.learning-goal svg{width:20px;height:20px}.learning-report{text-align:left;font-size:14px;line-height:1.5;margin:12px 0}.learning-report p{margin:10px 0}.learning-report strong,.learning-report span{display:block}.game-panel .learning-goal{margin:12px 0;text-align:left}.daily-mini{gap:8px;font-size:12px}.daily-mini strong{white-space:nowrap}
