:root{color-scheme:dark;--ink:#f7fbff;--muted:#aebdd0;--line:rgba(194,220,255,.18)}
*{box-sizing:border-box}html,body{width:100%;height:100%;min-height:100%;margin:0}
body{display:grid;place-items:center;overflow:hidden;background:#03070d;color:var(--ink);font-family:"PingFang SC","Microsoft YaHei","Segoe UI",sans-serif;min-height:100vh;min-height:100dvh}
.portal-shell{position:relative;width:100vw;height:100vh;width:min(100vw,calc(100vh * 9 / 16));height:min(100vh,calc(100vw * 16 / 9));width:min(100vw,calc(100dvh * 9 / 16));height:min(100dvh,calc(100vw * 16 / 9));overflow:hidden;background:#07111f;isolation:isolate}
.portal-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0}
.portal-shade{position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,rgba(1,6,13,.05) 0%,rgba(1,6,13,.02) 27%,rgba(1,6,13,.18) 55%,rgba(1,6,13,.74) 100%),radial-gradient(circle at 50% 47%,rgba(128,177,230,.08),transparent 48%);pointer-events:none}
.portal-content{position:relative;z-index:2;height:100%;padding:19.5% 22px 18px;display:flex;flex-direction:column}
.portal-head{text-align:center;margin-bottom:15px}.eyebrow{color:#8fa7c2;font-size:9px;font-weight:800;letter-spacing:.2em}.portal-head h1{margin:8px 0 5px;font-size:clamp(24px,6vw,30px);line-height:1.1;letter-spacing:-.04em;font-weight:900;text-shadow:0 2px 18px rgba(0,0,0,.3)}.portal-head p{margin:0;color:var(--muted);font-size:12px;letter-spacing:.08em}
.app-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.app-card{min-height:86px;padding:13px 12px;border:1px solid var(--line);border-radius:18px;background:linear-gradient(145deg,rgba(14,27,44,.78),rgba(5,12,23,.66));box-shadow:0 12px 30px rgba(0,0,0,.16),inset 0 1px 0 rgba(255,255,255,.08);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);display:grid;grid-template-columns:42px 1fr auto;align-items:center;gap:10px;text-decoration:none;color:var(--ink);opacity:0;transform:translateY(10px);animation:rise .55s cubic-bezier(.2,.75,.25,1) forwards;animation-delay:calc(var(--i) * 60ms + 100ms)}.app-card:nth-child(5){grid-column:1/-1}.app-card:focus-visible{outline:2px solid #b8dcff;outline-offset:3px}.app-card.pending{opacity:.6}.app-card.pending .app-action{color:#96a7ba;font-size:10px}
.app-icon{width:42px;height:42px;border-radius:14px;display:grid;place-items:center;font-size:18px;font-weight:900;color:#f8fcff;border:1px solid rgba(255,255,255,.2);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 6px 16px rgba(0,0,0,.2)}
.tone-biology .app-icon{background:linear-gradient(145deg,#2d9b72,#17644d)}.tone-english .app-icon{background:linear-gradient(145deg,#4d8bd8,#315ba9)}.tone-math .app-icon{background:linear-gradient(145deg,#8a6fd0,#5c44a1)}.tone-chinese .app-icon{background:linear-gradient(145deg,#d98b42,#a75430)}.tone-physics .app-icon{background:linear-gradient(145deg,#56a6b5,#2f6b91)}
.app-copy{min-width:0}.app-copy strong{display:block;font-size:15px;font-weight:850;line-height:1.25}.app-copy small{display:block;margin-top:5px;color:#aab9ca;font-size:9px;line-height:1.35;white-space:nowrap}.app-action{color:#d6eaff;font-size:16px;font-weight:800}
.portal-foot{margin-top:auto;padding:14px 2px 2px;display:flex;justify-content:space-between;gap:12px;color:rgba(220,234,249,.72);font-size:9px;font-weight:600;letter-spacing:.03em}
.sound-toggle{position:absolute;z-index:3;right:16px;top:16px;width:36px;height:36px;border-radius:50%;border:1px solid rgba(200,225,255,.26);background:rgba(5,14,25,.45);color:#d9edff;backdrop-filter:blur(10px);font-size:16px;display:grid;place-items:center;cursor:pointer}.sound-toggle.on{background:rgba(117,181,230,.2);box-shadow:0 0 18px rgba(126,194,255,.2)}
@keyframes rise{to{opacity:1;transform:translateY(0)}}
@media(max-width:380px){.portal-content{padding-left:16px;padding-right:16px}.app-card{min-height:80px;padding:11px 10px;grid-template-columns:38px 1fr auto}.app-icon{width:38px;height:38px;border-radius:12px;font-size:16px}.app-copy strong{font-size:14px}.app-copy small{font-size:8px}}
@media(min-height:760px) and (min-width:420px){.app-card{min-height:92px}}
@media(prefers-reduced-motion:reduce){.app-card{animation-duration:.01ms}}

.splash-shade{background:linear-gradient(180deg,rgba(1,6,13,.02) 0%,rgba(1,6,13,.06) 30%,rgba(1,6,13,.24) 64%,rgba(1,6,13,.58) 100%)}
.splash-content{position:absolute;inset:0;z-index:2;display:flex;flex-direction:column;align-items:center;padding-top:22%;}
.enter-button{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;min-width:168px;padding:13px 30px;border:1px solid rgba(209,237,255,.85);border-radius:999px;background:rgba(9,20,31,.46);color:#f7fbff;font-size:17px;font-weight:800;letter-spacing:.06em;text-shadow:0 0 14px rgba(150,212,255,.75);box-shadow:0 0 0 1px rgba(120,185,240,.14),0 0 24px rgba(92,164,231,.42),inset 0 0 18px rgba(145,208,255,.12);backdrop-filter:blur(14px);cursor:pointer;transition:transform .22s ease,box-shadow .22s ease,background .22s ease}
.enter-button:hover{transform:translateY(-1px) scale(1.02);background:rgba(25,54,78,.6);box-shadow:0 0 0 1px rgba(160,215,255,.2),0 0 32px rgba(105,183,246,.58),inset 0 0 22px rgba(145,208,255,.18)}
.enter-button:active{transform:scale(.98)}
.enter-button.launching{pointer-events:none;animation:enterPulse .7s ease-in-out infinite alternate}
.enter-hint{margin:18px 0 0;color:rgba(214,231,246,.7);font-size:10px;letter-spacing:.18em}
@keyframes enterPulse{from{box-shadow:0 0 0 1px rgba(160,215,255,.2),0 0 20px rgba(105,183,246,.35)}to{box-shadow:0 0 0 2px rgba(185,228,255,.32),0 0 42px rgba(125,200,255,.72)}}
.cloud-ring{position:absolute;left:50%;top:25%;width:180px;height:70px;transform:translateX(-50%);border:1px solid rgba(162,217,255,.16);border-radius:50%;opacity:0;pointer-events:none}
.enter-button.launching ~ .enter-hint{opacity:.35}

.apps-page .portal-content{padding-top:25.5%}
.apps-page .portal-head h1{font-size:26px;margin-top:5px}
.apps-page .eyebrow{font-size:8px}
.portal-back{position:absolute;z-index:4;left:16px;top:16px;width:36px;height:36px;border-radius:50%;border:1px solid rgba(200,225,255,.22);background:rgba(5,14,25,.42);color:#d9edff;backdrop-filter:blur(10px);display:grid;place-items:center;text-decoration:none;font-size:25px;line-height:1}

/* desktop launcher */
.apps-page .portal-content{padding-top:22%}
.apps-page .portal-video{filter:brightness(.72) saturate(.9);transform:scale(1.03)}
.apps-page .portal-shade{background:linear-gradient(180deg,rgba(2,8,15,.34) 0%,rgba(2,8,15,.15) 26%,rgba(2,8,15,.4) 62%,rgba(2,8,15,.84) 100%),radial-gradient(circle at 50% 42%,rgba(118,177,232,.08),transparent 50%)}
.apps-page .portal-head{text-align:left;padding-left:8px;margin-bottom:24px}
.apps-page .portal-head h1{font-size:25px;margin:5px 0 3px}
.apps-page .portal-head p{font-size:10px}
.apps-page .app-grid{grid-template-columns:repeat(6,1fr);column-gap:8px;row-gap:26px}
.apps-page .app-card{grid-column:span 2;min-height:0;padding:0;border:0;background:transparent;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none;display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center}
.apps-page .app-card:nth-child(4){grid-column:2/span 2}
.apps-page .app-card:nth-child(5){grid-column:4/span 2}
.desktop-icon{position:relative;width:82px;height:82px;border-radius:23px;display:grid;place-items:center;font-size:30px;font-weight:900;color:#fff;border:1px solid rgba(255,255,255,.22);box-shadow:inset 0 1px 0 rgba(255,255,255,.24),0 14px 28px rgba(0,0,0,.28);transition:transform .22s ease,box-shadow .22s ease}
.app-card:active .desktop-icon{transform:scale(.94)}
@media(hover:hover){.app-card:hover .desktop-icon{transform:translateY(-4px) scale(1.04);box-shadow:inset 0 1px 0 rgba(255,255,255,.3),0 18px 34px rgba(0,0,0,.34)}}
.tone-biology .desktop-icon{background:linear-gradient(145deg,#44bb8c,#177252)}
.tone-english .desktop-icon{background:linear-gradient(145deg,#67a1e7,#315fb5)}
.tone-math .desktop-icon{background:linear-gradient(145deg,#a487e0,#6546b2)}
.tone-chinese .desktop-icon{background:linear-gradient(145deg,#e7a45e,#b45c32)}
.tone-physics .desktop-icon{background:linear-gradient(145deg,#66bdca,#2e7399)}
.launch-dot{position:absolute;right:-4px;top:-4px;width:23px;height:23px;border-radius:50%;background:#f4fbff;color:#31536d;display:grid;place-items:center;font-size:10px;font-style:normal;border:2px solid rgba(5,15,28,.82)}
.pending-dot{position:absolute;left:50%;bottom:-9px;transform:translateX(-50%);white-space:nowrap;padding:3px 7px;border-radius:99px;background:rgba(5,14,24,.82);border:1px solid rgba(190,216,240,.2);color:#b7c7d8;font-size:7px;font-style:normal;font-weight:700}
.desktop-label{font-size:13px;font-weight:800;color:#f6fbff;text-shadow:0 2px 10px rgba(0,0,0,.5)}
.desktop-sub{font-size:8px;color:rgba(213,229,244,.7);line-height:1.35;white-space:nowrap}
.apps-page .app-card.pending{opacity:.58}
.apps-page .app-card.pending .desktop-icon{filter:saturate(.55)}
.apps-page .portal-foot{margin-top:auto}
@media(max-width:380px){.desktop-icon{width:74px;height:74px;border-radius:21px;font-size:27px}.desktop-label{font-size:12px}.desktop-sub{font-size:7px}.apps-page .app-grid{row-gap:22px}}

/* compact desktop icons for future apps */
.apps-page .app-grid{row-gap:23px}
.apps-page .app-card{gap:7px}
.desktop-icon{width:66px;height:66px;border-radius:19px;font-size:25px;box-shadow:inset 0 1px 0 rgba(255,255,255,.22),0 11px 23px rgba(0,0,0,.26)}
.desktop-label{font-size:12px}
.desktop-sub{display:none}
.launch-dot{width:20px;height:20px;font-size:9px;right:-3px;top:-3px}
.pending-dot{bottom:-8px;padding:2px 6px;font-size:6px}
@media(max-width:380px){.desktop-icon{width:60px;height:60px;border-radius:17px;font-size:23px}.desktop-label{font-size:11px}.apps-page .app-grid{row-gap:20px}}

.apps-page .portal-content{padding-top:27%}
.apps-page .portal-head{display:none}

.splash-content{padding-top:20.5%}
.splash-brand{font-size:34px;line-height:1;font-weight:900;letter-spacing:-.045em;color:#f7fbff;text-shadow:0 2px 18px rgba(0,0,0,.42),0 0 22px rgba(156,211,255,.16);margin-bottom:16px}
.enter-button{min-width:132px;min-height:40px;padding:9px 22px;font-size:14px;letter-spacing:.08em;border-color:rgba(209,237,255,.62);box-shadow:0 0 0 1px rgba(120,185,240,.08),0 0 16px rgba(92,164,231,.28),inset 0 0 12px rgba(145,208,255,.08)}
.enter-button:hover{box-shadow:0 0 0 1px rgba(160,215,255,.14),0 0 22px rgba(105,183,246,.38),inset 0 0 16px rgba(145,208,255,.12)}
.enter-hint{display:none}
@media(max-width:380px){.splash-brand{font-size:30px}.enter-button{font-size:13px;min-width:124px}}

.splash-content{padding-top:24.5%}
.splash-brand{display:none}

.splash-content{padding-top:29.5%}

.enter-button.launching{min-width:150px}

.splash-content{padding-top:31.5%}
.enter-button{min-width:106px;min-height:30px;padding:6px 15px;font-size:9px;letter-spacing:.12em;border-color:rgba(209,237,255,.52);box-shadow:0 0 0 1px rgba(120,185,240,.06),0 0 12px rgba(92,164,231,.22),inset 0 0 9px rgba(145,208,255,.06)}
.enter-button.launching{min-width:112px;font-size:9px}
@media(max-width:380px){.enter-button{min-width:100px;font-size:8px;padding:6px 13px}.splash-content{padding-top:31%}}

/* light wireframe app page */
.static-apps-shell{background:#f7f4e9 url("assets/apps-bg.jpg?v=1") center center / cover no-repeat}
.apps-layout{position:absolute;inset:0;z-index:2}
.apps-page .app-grid{position:absolute;left:34px;right:34px;top:31.5%;display:grid;grid-template-columns:repeat(6,1fr);column-gap:8px;row-gap:20px}
.apps-page .app-card{grid-column:span 2;background:none;border:0;box-shadow:none;backdrop-filter:none;display:flex;flex-direction:column;align-items:center;gap:7px;text-align:center;padding:0;min-height:0;opacity:1;transform:none;animation:none}
.apps-page .app-card:nth-child(4){grid-column:2/span 2}
.apps-page .app-card:nth-child(5){grid-column:4/span 2}
.apps-page .desktop-icon{width:62px;height:62px;border-radius:18px;font-size:23px;box-shadow:0 12px 22px rgba(18,39,64,.18),inset 0 1px 0 rgba(255,255,255,.24)}
.apps-page .desktop-label{color:#26364b;font-size:12px;text-shadow:none}
.apps-page .desktop-sub{display:none}
.apps-page .pending-dot{background:rgba(255,255,255,.9);color:#5d6b79;border-color:rgba(35,57,79,.12)}
.apps-page .launch-dot{background:#fff;color:#31536d;border-color:rgba(20,42,64,.14)}
@media(max-width:380px){.apps-page .app-grid{left:24px;right:24px;top:31%;row-gap:16px}.apps-page .desktop-icon{width:58px;height:58px;border-radius:16px;font-size:22px}}

.splash-content .enter-button{margin-top:1cm}

.enter-button{font-size:10px;min-width:112px;min-height:32px;padding:7px 16px}
.enter-button.launching{font-size:10px;min-width:118px}
@media(max-width:380px){.enter-button{font-size:9px;min-width:106px}}

/* final five-app desktop row: keeps the icons between the title and the wireframe cube */
.apps-page .app-grid{left:18px;right:18px;top:27.8%;grid-template-columns:repeat(5,minmax(0,1fr));column-gap:4px;row-gap:22px;align-items:start}
.apps-page .app-card,
.apps-page .app-card:nth-child(4),
.apps-page .app-card:nth-child(5){grid-column:auto;gap:7px}
.apps-page .desktop-icon{width:54px;height:54px;border-radius:16px;font-size:21px}
.apps-page .desktop-label{font-size:11px;line-height:1.2;letter-spacing:.01em}
.apps-page .desktop-sub{display:none}
.apps-page .pending-dot{left:auto;right:-12px;top:-7px;bottom:auto;transform:none;padding:2px 5px;font-size:6px;line-height:1.3}
@media(max-width:380px){.apps-page .app-grid{left:12px;right:12px;top:27.3%;column-gap:2px}.apps-page .desktop-icon{width:50px;height:50px;border-radius:15px;font-size:19px}.apps-page .desktop-label{font-size:10px}.apps-page .pending-dot{right:-10px;font-size:5.5px}}
/* compact five-app row: reduce icon footprint without moving the row */
.apps-page .app-card,
.apps-page .app-card:nth-child(4),
.apps-page .app-card:nth-child(5){gap:6px}
.apps-page .desktop-icon{width:46px;height:46px;border-radius:14px;font-size:18px}
.apps-page .launch-dot{width:17px;height:17px;font-size:8px;right:-2px;top:-2px}
.apps-page .desktop-label{font-size:10px}
@media(max-width:380px){.apps-page .desktop-icon{width:43px;height:43px;border-radius:13px;font-size:17px}.apps-page .desktop-label{font-size:9.5px}}
/* shown only when the browser blocks audible autoplay */
.sound-hint{display:inline-flex;align-items:center;justify-content:center;margin-top:10px;padding:5px 10px;border:1px solid rgba(202,230,255,.28);border-radius:999px;background:rgba(6,16,28,.34);color:rgba(228,242,255,.78);font-size:9px;letter-spacing:.04em;cursor:pointer;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.sound-hint[hidden]{display:none}
.sound-hint::before{content:"♪";margin-right:5px;font-size:10px}
/* readable enter label */
.enter-button{font-size:14px;min-width:132px;min-height:38px;padding:8px 22px;letter-spacing:.08em}
.enter-button.launching{font-size:14px;min-width:140px}
@media(max-width:380px){.enter-button{font-size:13px;min-width:124px;min-height:36px;padding:8px 20px}}
/* WeChat inline video autoplay fallback */
.portal-video-fallback{display:none;object-fit:cover}
.wechat-fallback .portal-video-fallback{display:block}
.wechat-fallback .portal-video:not(.portal-video-fallback){opacity:0;pointer-events:none}
/* optional PWA install entry */
.portal-install{position:absolute;top:16px;right:16px;z-index:5;padding:7px 11px;border:1px solid rgba(36,58,82,.16);border-radius:999px;background:rgba(255,255,255,.82);color:#31465d;font-size:10px;font-weight:800;letter-spacing:.04em;box-shadow:0 6px 18px rgba(20,42,64,.1);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);cursor:pointer}
.portal-install[hidden]{display:none}
/* six-app desktop grid */
.apps-page .app-grid{left:32px;right:32px;top:24.8%;grid-template-columns:repeat(3,minmax(0,1fr));column-gap:10px;row-gap:16px;align-items:start}
.apps-page .app-card,.apps-page .app-card:nth-child(4),.apps-page .app-card:nth-child(5),.apps-page .app-card:nth-child(6){grid-column:auto;gap:5px}
.apps-page .desktop-icon{width:48px;height:48px;border-radius:15px;font-size:19px}
.apps-page .desktop-label{font-size:10px}
.apps-page .launch-dot{width:17px;height:17px;font-size:8px}
.tone-chemistry .desktop-icon{background:linear-gradient(145deg,#65d39b,#18845e)}
@media(max-width:380px){.apps-page .app-grid{left:20px;right:20px;top:24.3%;column-gap:7px;row-gap:13px}.apps-page .desktop-icon{width:44px;height:44px;border-radius:14px;font-size:18px}}
.legal-links{position:absolute;left:0;right:0;bottom:12px;z-index:6;text-align:center;font-size:9px;color:#6d7b89}.legal-links a{color:#52677c;text-decoration:none;margin:0 7px}.legal-links a:hover{text-decoration:underline}
.tone-leying .desktop-icon{background:linear-gradient(145deg,#b97855,#5d392b)}
.apps-page .app-card.tone-leying{grid-column:2}
@media(max-width:380px){.apps-page .app-card.tone-leying{grid-column:2}}
.desktop-icon-image{width:100%;height:100%;display:block;object-fit:cover;border-radius:inherit}.tone-leying .desktop-icon{padding:0;overflow:visible;background:#17392a}

.filing-links{position:absolute;left:0;right:0;bottom:31px;z-index:8;display:flex;justify-content:center;align-items:center;gap:10px;flex-wrap:wrap;padding:0 8px;font:700 8px/1.25 "Microsoft YaHei","PingFang SC",sans-serif;color:#52677c;pointer-events:auto}.filing-links a{display:inline-flex;align-items:center;gap:3px;color:#52677c;text-decoration:none;white-space:nowrap}.filing-links a:hover{text-decoration:underline}.filing-links img{width:14px;height:14px;display:block;object-fit:contain;flex:0 0 auto}.apps-page .filing-links{bottom:48px}.splash-shell .filing-links{bottom:34px}@media(max-width:680px){.filing-links{gap:7px;font-size:7px}.filing-links img{width:12px;height:12px}.apps-page .filing-links{bottom:47px}.splash-shell .filing-links{bottom:34px}}
