
:root{--ink:#24304a;--cream:#fffaf0;--white:#fff;--purple:#7657e8;--pink:#ff6fae;--cyan:#35c9d4;--yellow:#ffd34e;--green:#62d49a}
*{box-sizing:border-box}
.portal-page{margin:0;background:#f7f4ff;color:var(--ink);font-family:"Trebuchet MS","Segoe UI",sans-serif;overflow-x:hidden}
[hidden]{display:none!important}
.welcome-screen{position:fixed;inset:0;z-index:9999;display:grid;place-items:center;overflow:hidden;background:linear-gradient(150deg,#7861e9 0%,#5d45bf 46%,#322e78 100%);animation:portalFade .7s ease}
.welcome-screen:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 15% 18%,#fff6 0 2px,transparent 3px),radial-gradient(circle at 75% 30%,#fff8 0 3px,transparent 4px),radial-gradient(circle at 60% 80%,#fff7 0 2px,transparent 3px);background-size:140px 120px;animation:stars 10s linear infinite}
.welcome-sky i{position:absolute;color:#fff;font-style:normal;font-size:2rem;animation:floatStar 3s ease-in-out infinite}
.welcome-sky i:nth-child(1){left:8%;top:16%}.welcome-sky i:nth-child(2){left:88%;top:18%;animation-delay:.4s}.welcome-sky i:nth-child(3){left:13%;bottom:20%;animation-delay:.8s}.welcome-sky i:nth-child(4){right:16%;bottom:18%;animation-delay:1.2s}.welcome-sky i:nth-child(5){left:48%;top:8%;animation-delay:1.6s}.welcome-sky i:nth-child(6){right:42%;bottom:8%;animation-delay:2s}
.welcome-cloud{position:absolute;width:250px;height:80px;background:#fff;border-radius:80px;opacity:.16;filter:blur(1px);animation:cloud 15s linear infinite}
.cloud-a{left:-280px;top:16%}.cloud-b{right:-300px;bottom:18%;animation-delay:7s}
.welcome-card{position:relative;width:min(720px,92vw);padding:44px 42px 38px;text-align:center;border:5px solid #fff;border-radius:48px;background:linear-gradient(145deg,#fff,#fff6fb);box-shadow:0 24px 0 #f6d15c,0 42px 100px #18134277;animation:cardIn .9s cubic-bezier(.2,1.2,.3,1)}
.welcome-mascot{font-size:5.2rem;filter:drop-shadow(0 7px 0 #ffd34e);animation:mascot 2.6s ease-in-out infinite}
.welcome-kicker,.account-kicker{font-weight:1000;letter-spacing:.16em;color:#7657e8;font-size:.78rem}
.welcome-card h1{margin:8px 0 8px;font-size:clamp(2.4rem,7vw,5.4rem);line-height:.94;color:#27304a}
.welcome-card h1 strong{color:#7657e8;text-shadow:4px 4px 0 #ffd34e}
.welcome-card p{font-size:1.05rem;line-height:1.6;max-width:560px;margin:16px auto;color:#58627a}
.welcome-path{display:flex;justify-content:center;align-items:center;gap:10px;flex-wrap:wrap;margin:22px auto;padding:12px;border:3px dashed #c7baf5;border-radius:20px;background:#f7f3ff;color:#6652c7}
.big-kid-button{border:0;cursor:pointer;color:#fff;font:inherit;font-weight:1000;background:linear-gradient(135deg,#ff6fae,#7657e8);border-radius:18px;padding:15px 22px;box-shadow:0 7px 0 #4e3aa4,0 12px 24px #6248bf44;transition:.2s transform,.2s box-shadow}
.big-kid-button:hover{transform:translateY(-3px) rotate(-1deg);box-shadow:0 10px 0 #4e3aa4,0 18px 30px #6248bf55}
.big-kid-button:active{transform:translateY(3px);box-shadow:0 3px 0 #4e3aa4}
.account-screen{min-height:100vh;display:grid;place-items:center;padding:28px;background:linear-gradient(145deg,#f0edff,#fff8e9)}
.account-card{width:min(560px,94vw);padding:32px;border:5px solid #7657e8;border-radius:36px;background:#fff;box-shadow:9px 10px 0 #ffd34e,0 30px 70px #493d8730;animation:cardIn .6s ease}
.account-mascot{text-align:center;font-size:3.6rem}
.account-card h1{text-align:center;margin:5px 0;font-size:2rem;color:#313a54}
.account-sub{text-align:center;color:#68718a;line-height:1.5}
.account-tabs{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:7px;background:#f0edff;border-radius:18px;margin:22px 0}
.account-tab{border:0;background:transparent;padding:12px;border-radius:13px;font-weight:1000;color:#6855bd;cursor:pointer}
.account-tab.active{background:#7657e8;color:#fff;box-shadow:4px 4px 0 #ffd34e}
.account-form{display:grid;gap:12px}
.account-form label{font-weight:900;color:#454e65;display:grid;gap:6px}
.account-form input{border:3px solid #d9d2fa;border-radius:14px;padding:12px 13px;font:inherit;outline:0}
.account-form input:focus{border-color:#7657e8;box-shadow:0 0 0 4px #7657e822}
.account-message{min-height:22px;text-align:center;font-weight:900}.account-message.error{color:#d93463}.account-message.ok{color:#16965b}
.account-note{margin-top:14px;padding:11px;border-radius:14px;background:#fff8db;border:2px dashed #f0c83d;color:#6b5b26;text-align:center;font-size:.84rem;font-weight:800}
.portal-header{position:sticky;top:0;z-index:80;display:flex;justify-content:space-between;align-items:center;gap:15px;padding:12px max(18px,calc((100vw - 1280px)/2));background:#ffffffed;border-bottom:3px solid #e8e1fb;backdrop-filter:blur(14px)}
.portal-logo{display:grid;grid-template-columns:auto 1fr;column-gap:9px;align-items:center;text-decoration:none;color:#28324c}
.portal-logo span{grid-row:span 2;font-size:2rem}.portal-logo strong{font-size:1.05rem;color:#7657e8}.portal-logo small{font-weight:800;color:#7d8598}
.portal-user{display:flex;align-items:center;gap:10px}.portal-user span{font-weight:1000;color:#4d5872}.portal-user button{border:3px solid #7657e8;border-radius:13px;background:#fff;color:#5d49ba;padding:9px 12px;font-weight:1000;cursor:pointer}
.portal-main{width:min(1280px,calc(100% - 28px));margin:auto;padding:24px 0 70px}
.portal-hero{position:relative;overflow:hidden;display:flex;align-items:center;justify-content:space-between;gap:25px;padding:38px 42px;border:5px solid #7657e8;border-radius:40px 40px 70px 40px;background:linear-gradient(135deg,#7657e8,#8e73f0 60%,#ff77ad);box-shadow:10px 11px 0 #ffd34e}
.portal-hero:before{content:"";position:absolute;right:-70px;top:-120px;width:300px;height:300px;border:28px dotted #fff6;border-radius:50%;animation:spin 25s linear infinite}
.hero-copy{position:relative;z-index:2;color:#fff;max-width:850px}.portal-badge{display:inline-block;padding:7px 11px;border-radius:12px;background:#fff2;color:#fff;border:2px solid #fff5;font-weight:1000;font-size:.76rem}
.hero-copy h1{font-size:clamp(2rem,5vw,4.5rem);line-height:1;margin:13px 0 10px}.hero-copy h1 em{font-style:normal;color:#fff0a6;text-shadow:3px 3px 0 #5b43ba}
.hero-copy p{max-width:760px;line-height:1.65;font-size:1rem}
.hero-sparkles{position:absolute;right:35%;top:16px;color:#fff8;font-size:1.3rem;letter-spacing:10px}.hero-character{position:relative;z-index:2;display:grid;place-items:center;font-size:7rem;filter:drop-shadow(0 9px 0 #ffcf46);animation:mascot 3s ease-in-out infinite}.hero-character span{font-size:.85rem;background:#fff;color:#6a52c9;padding:8px 12px;border-radius:12px;font-weight:1000;box-shadow:4px 4px 0 #ffd34e}
.progress-board{margin:26px 0;padding:18px;border:4px solid #6fd2a1;border-radius:26px;background:#fff;box-shadow:6px 7px 0 #b9f1d2;display:flex;align-items:center;gap:20px}.progress-title{display:flex;align-items:center;gap:12px;min-width:230px}.progress-title>span{font-size:2.3rem}.progress-title b{display:block;color:#34415e}.progress-title small{color:#7d8598}.progress-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;width:100%}.progress-stats div{padding:10px;text-align:center;border:3px solid #ece8ff;border-radius:16px;background:#faf9ff}.progress-stats strong{display:block;color:#7657e8;font-size:1.45rem}.progress-stats span{font-size:.78rem;font-weight:900;color:#68718a}
.world-heading{display:flex;align-items:center;gap:12px;margin:35px 0 16px}.world-heading>span{font-size:2.5rem}.world-heading h2{margin:0;color:#303a54;font-size:2rem}.world-heading p{margin:3px 0;color:#7a8396}
.world-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.world-card{position:relative;min-height:360px;display:flex;flex-direction:column;text-decoration:none;color:#26304a;background:#fff;border:4px solid var(--a);border-radius:28px;overflow:hidden;box-shadow:6px 7px 0 var(--b),0 14px 28px #2c315016;transition:.22s transform,.22s box-shadow}
.world-card:hover{transform:translateY(-8px) rotate(-.5deg);box-shadow:9px 12px 0 var(--b),0 24px 40px #2c315025}
.world-number{position:absolute;top:11px;left:11px;z-index:3;background:#fff;color:var(--a);border:2px solid var(--a);border-radius:10px;padding:5px 8px;font-size:.68rem;font-weight:1000}
.world-art{height:145px;position:relative;display:grid;place-items:center;overflow:hidden;background:linear-gradient(135deg,var(--a),var(--c))}
.world-art:before{content:"";position:absolute;width:170px;height:170px;border:20px dotted #fff6;border-radius:50%;transform:rotate(20deg);animation:spin 18s linear infinite}
.world-art:after{content:"";position:absolute;width:85px;height:85px;right:-20px;bottom:-30px;border-radius:24px;transform:rotate(28deg);background:var(--b)}
.world-art span{position:relative;z-index:2;font-size:5rem;filter:drop-shadow(0 7px 0 #0002);animation:mascot 3s ease-in-out infinite}
.world-art i,.world-art b{position:absolute;display:block;border-radius:50%;background:#fff8}.world-art i{width:17px;height:17px;left:25px;bottom:23px}.world-art b{width:10px;height:10px;right:80px;top:22px}
.world-body{padding:15px 16px 16px;display:flex;flex-direction:column;flex:1}.world-body h3{margin:0 0 7px;font-size:1.05rem;color:#303a54}.world-body p{margin:0;color:#70798c;font-size:.84rem;line-height:1.45;min-height:48px}.world-tags{display:flex;gap:5px;margin:10px 0}.world-tags span{display:grid;place-items:center;width:30px;height:28px;border-radius:9px;background:#f5f2ff;border:2px solid #e5defc;font-size:.85rem}.world-progress{height:8px;background:#eeeaf9;border-radius:20px;overflow:hidden;margin-top:auto}.world-progress span{display:block;height:100%;background:linear-gradient(90deg,var(--a),var(--c));border-radius:20px}.world-enter{margin-top:10px;color:var(--a);font-size:.82rem}
@keyframes portalFade{from{opacity:0}to{opacity:1}}@keyframes cardIn{from{opacity:0;transform:translateY(30px) scale(.94)}to{opacity:1;transform:none}}@keyframes mascot{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-10px) rotate(2deg)}}@keyframes floatStar{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-15px) rotate(12deg)}}@keyframes stars{to{background-position:140px 120px}}@keyframes cloud{to{transform:translateX(calc(100vw + 600px))}}@keyframes spin{to{transform:rotate(360deg)}}
@media(max-width:900px){.world-grid{grid-template-columns:repeat(2,1fr)}.portal-hero{padding:30px}.hero-character{font-size:5rem}.progress-board{display:block}.progress-title{margin-bottom:12px}}
@media(max-width:600px){.world-grid{grid-template-columns:1fr}.portal-header{align-items:flex-start}.portal-user{flex-direction:column;align-items:flex-end}.hero-character{display:none}.portal-hero{border-radius:28px;padding:26px}.welcome-card{padding:30px 20px}.welcome-path{font-size:.8rem}.progress-stats{grid-template-columns:repeat(2,1fr)}}
.world-01{--a:#67c587;--b:#b8f28d;--c:#ffe66d}
.world-02{--a:#4f8df7;--b:#80e9ff;--c:#ffe17a}
.world-03{--a:#b85cf6;--b:#f2a0ff;--c:#ffd56a}
.world-04{--a:#36b87c;--b:#a5efc5;--c:#f7c86b}
.world-05{--a:#ff7b54;--b:#ffc46b;--c:#ffeaa7}
.world-06{--a:#ff5d8f;--b:#ff9ec3;--c:#ffd66b}
.world-07{--a:#25a9a0;--b:#83f0d6;--c:#ffe27b}
.world-08{--a:#7c6cf2;--b:#bca9ff;--c:#ff9ac5}
.world-09{--a:#e05d8e;--b:#ff9fbd;--c:#f7d86b}
.world-10{--a:#ad72e8;--b:#e1b8ff;--c:#8ee9d1}
.world-11{--a:#3d9ee8;--b:#9bdcff;--c:#ffe074}
.world-12{--a:#26b49b;--b:#83ebcb;--c:#f7dd78}
.world-13{--a:#ef655d;--b:#ffad7b;--c:#ffe27b}
.world-14{--a:#5f8eea;--b:#a5c8ff;--c:#ffd66f}
.world-15{--a:#e5a72f;--b:#ffe18b;--c:#ff9e8b}
.world-16{--a:#a85cd9;--b:#d9a7ff;--c:#8fdcf5}
.world-17{--a:#43b66d;--b:#a7ee9b;--c:#ffda72}
.world-18{--a:#f17c3a;--b:#ffc27a;--c:#a9d4ff}
.world-19{--a:#2e9db5;--b:#86e9f0;--c:#ffd66d}
.world-20{--a:#d95a79;--b:#ffabc0;--c:#a8e6cf}
.world-21{--a:#8b73d8;--b:#c9bbff;--c:#ffcb70}
.world-22{--a:#4aa7d8;--b:#99e1ff;--c:#ffaecc}
.world-23{--a:#ce8a35;--b:#ffd36e;--c:#91e2c0}
.world-24{--a:#51bd74;--b:#a8f0ac;--c:#ffc2d9}
.world-25{--a:#566fe5;--b:#aab7ff;--c:#ffcf62}
.world-26{--a:#ee7644;--b:#ffc18e;--c:#a8b9ff}
.world-27{--a:#27a7b8;--b:#8be8ee;--c:#ffb2cf}
.world-28{--a:#d95b91;--b:#ffabc9;--c:#ffe080}
.world-29{--a:#4dba91;--b:#a8efd3;--c:#ffcf67}

.world-30{--a:#7b5fc8;--b:#c7b5ff;--c:#ffd86f}
