@import url('https://fonts.googleapis.com/css2?family=Fredoka:wght@400;500;600;700&family=Nunito:wght@400;500;600;700;800;900&display=swap');
:root{--ink:#382d58;--muted:#756c8c;--purple:#7b54b5;--dark:#2c2350;--lav:#ece2ff;--paper:#fffcfb;--pink:#fae3f0;--line:#e9e4ef;--teal:#4b998f;--shadow:0 14px 40px rgba(64,39,99,.1)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:#f5f1fa;color:var(--ink);font-family:Nunito,system-ui,sans-serif;line-height:1.55}button,input,select,textarea{font:inherit}button{cursor:pointer}a{color:#6442a4}a:hover{text-decoration:none}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid #e8ab43;outline-offset:3px}h1,h2,h3,h4{font-family:Fredoka,system-ui,sans-serif;line-height:1.2;margin:0}h2{font-size:clamp(1.5rem,2.6vw,2.15rem)}h3{font-size:1.28rem}h4{font-size:1.05rem}p{margin:.4rem 0 1rem}.skip{position:fixed;left:8px;top:-60px;background:white;color:#111;padding:10px;z-index:500}.skip:focus{top:8px}.app{display:grid;grid-template-columns:265px minmax(0,1fr);min-height:100vh}.sidebar{background:#292145;color:#fff;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;z-index:40;box-shadow:5px 0 40px #2b24511a}.brand{display:flex;align-items:center;gap:10px;padding:27px 22px 20px;border-bottom:1px solid #ffffff23;line-height:.99}.brand strong{font-family:Fredoka;font-size:25px;font-weight:700;letter-spacing:1.3px;color:#ffecbd}.brand small{display:block;margin-top:8px;font-size:9px;letter-spacing:2px;color:#c9bce7}.brand-sparkle{font-size:37px;color:#ffd6be}.sidebar-intro{background:#463765;margin:14px 15px;border-radius:13px;font-weight:800;padding:10px 14px;font-size:12px;color:#fff1d9}.nav-label{font-size:10px;letter-spacing:1.7px;font-weight:900;color:#b7a5d4;margin:12px 23px 8px}.mission-nav{display:grid;gap:4px;padding:0 12px;overflow-y:auto;scrollbar-width:thin}.nav-mission{display:flex;gap:11px;align-items:center;width:100%;color:#dad2e8;background:transparent;border:1px solid transparent;text-align:left;border-radius:13px;padding:9px 10px;transition:background .2s,transform .2s}.nav-mission:hover{background:#ffffff17;transform:translateX(3px)}.nav-mission.active{background:#eee5ff;color:#463268;font-weight:900;box-shadow:0 5px 14px #0002}.nav-emoji{font-size:21px;display:grid;place-items:center;width:33px;height:33px;background:#ffffff19;border-radius:10px;flex:none}.nav-mission.active .nav-emoji{background:#d3c0ec}.nav-description{display:grid;line-height:1.15;gap:3px;flex:1;min-width:0}.nav-description strong{font-size:12px}.nav-description small{font-size:10px;opacity:.75}.nav-check{font-size:15px;color:#e6c46e}.sidebar-bottom{margin-top:auto;padding:17px 21px 22px;border-top:1px solid #fff2}.sidebar-bottom p{font-size:11px;color:#d3c7e7}.progress-head{display:flex;justify-content:space-between;font-size:12px;font-weight:800}.progress-track{height:9px;background:#45365f;border-radius:99px;margin-top:8px;overflow:hidden}.progress-fill{background:linear-gradient(90deg,#eeb3da,#f5d581);width:0;height:100%;transition:width .4s}.plain-btn{border:0;background:none;color:#ddcff8;display:block;font-size:11px;text-align:left;padding:5px 0}.plain-btn:hover{color:white}.main-column{min-width:0}.topbar{height:68px;display:flex;align-items:center;justify-content:space-between;background:#fffefc;padding:0 31px;border-bottom:1px solid #e6ddeb;position:sticky;top:0;z-index:30;box-shadow:0 4px 18px #38264e09}.breadcrumbs{display:flex;gap:12px;align-items:center;color:#7a7190;font-weight:800;font-size:12px}.crumb-home{font-family:Fredoka;letter-spacing:1px;color:var(--dark)}.top-controls{display:flex;gap:9px}.control-btn{background:#f5effc;border:1px solid #e8def2;border-radius:99px;padding:8px 12px;color:#59487d;font-weight:900;font-size:11px}.control-btn:hover{background:#e8dcfb}.mobile-menu{display:none;border:0;background:none;font-size:22px;color:#463269}.hero{height:370px;position:relative;overflow:hidden;color:white;background:#42315f;isolation:isolate}.hero-sky{position:absolute;inset:0;background-position:center 49%;background-size:cover;transition:background-image .3s}.hero-overlay{position:absolute;inset:0;background:linear-gradient(90deg,rgba(28,24,67,.84),rgba(28,24,67,.4) 48%,rgba(33,25,65,.10))}.hero-content{position:relative;max-width:800px;padding:70px 5vw 40px;z-index:2}.eyebrow{display:inline-block;border:1px solid #fff8;color:#fff4cf;background:#ffffff19;border-radius:25px;padding:7px 15px;font-size:11px;font-weight:900;letter-spacing:1.3px;margin-bottom:18px}.hero h1{font-size:clamp(2.4rem,5.7vw,4.75rem);color:#fff7e3;text-shadow:0 3px 12px #26154058;letter-spacing:-1px}.hero p{font-size:clamp(14px,1.4vw,17px);max-width:660px;margin:16px 0 21px;color:#f9edff;font-weight:700}.hero-chips{display:flex;gap:8px;flex-wrap:wrap}.hero-chips span{font-size:10px;padding:6px 10px;background:#ffffff25;border:1px solid #ffffff4f;border-radius:99px;backdrop-filter:blur(7px);font-weight:900}.hero-scroll{position:absolute;right:27px;bottom:25px;font-size:10px;letter-spacing:1.2px;font-weight:900;color:#fff9df}.hero-scroll span{font-size:20px}.particle{position:absolute;color:#fff0c9;z-index:1;text-shadow:0 0 16px #fff8;animation:float 7s ease-in-out infinite;pointer-events:none}.p1{left:20%;top:20%;font-size:30px}.p2{left:59%;top:15%;font-size:38px;animation-delay:1.2s}.p3{right:8%;top:55%;font-size:38px;animation-delay:3s}.p4{left:72%;top:34%;font-size:34px;animation:butterfly 12s ease-in-out infinite}.p5{right:34%;bottom:19%;font-size:26px;animation-delay:2s}.p6{right:20%;top:13%;font-size:28px;animation-delay:1.7s}@keyframes float{0%,100%{transform:translateY(0) rotate(-5deg);opacity:.6}50%{transform:translateY(-24px) rotate(11deg);opacity:1}}@keyframes butterfly{0%,100%{transform:translate(-5px,10px) rotate(-8deg)}45%{transform:translate(-130px,-75px) rotate(15deg)}75%{transform:translate(-75px,25px) rotate(-7deg)}}.motion-off *,.motion-off *:before,.motion-off *:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.content{max-width:1240px;margin:auto;padding:0 clamp(20px,4vw,58px) 60px}.story-strip{display:flex;gap:17px;align-items:center;position:relative;z-index:2;background:#fffbf7;margin:-33px 0 34px;padding:20px 26px;border-radius:19px;box-shadow:var(--shadow);border:1px solid #f4e7de}.story-avatar{height:50px;width:50px;flex:none;display:grid;place-items:center;border-radius:18px;background:linear-gradient(130deg,#f9dce7,#ded3ff);font-size:31px}.story-label{font-size:10px;letter-spacing:1.5px;font-weight:900;color:#a269a1}.story-strip p{font-weight:750;font-size:13px;margin:3px 0 0}.section{margin:32px 0 38px}.section-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;margin-bottom:17px}.section-heading h2{color:#423165}.section-heading .sub{font-size:13px;color:var(--muted);max-width:730px;margin-top:7px}.section-tag{font-size:10px;font-weight:900;color:#8461a8;letter-spacing:1px}.panel,.mini-card,.glass-card{border:1px solid var(--line);border-radius:19px;background:var(--paper);box-shadow:0 9px 27px rgba(49,29,80,.045)}.panel{padding:24px}.mini-card{padding:20px}.grid{display:grid;gap:16px}.cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.mini-card .icon-spot{font-size:35px;display:inline-grid;place-items:center;width:59px;height:59px;border-radius:19px;background:#f0e8fb;margin-bottom:12px}.mini-card p{font-size:13px;color:#665d77}.mini-card h3{color:#49366d;margin-bottom:7px}.info-note{background:#f4efff;border:1px solid #e4d6ff;color:#594675;border-radius:14px;padding:15px 18px;font-size:13px;margin:16px 0}.warm-note{background:#fff4e7;border-color:#ffdec1;color:#805a46}.small{font-size:12px;color:var(--muted)}.muted{color:var(--muted)}.primary-button,.outline-button,.soft-button,.selected-button{border-radius:13px;padding:12px 19px;font-weight:900;font-size:13px;transition:transform .2s,box-shadow .2s;border:0}.primary-button{background:linear-gradient(110deg,#7851ae,#b569ad);color:white;box-shadow:0 7px 15px #885aaf35}.primary-button:hover,.soft-button:hover,.outline-button:hover{transform:translateY(-2px)}.outline-button{background:#fff;color:#71549e;border:2px solid #e5d8f5}.soft-button{background:#f0e7fb;color:#69468d}.selected-button{background:#7560a2;color:white;box-shadow:0 0 0 3px #e2d6f0}.tiny-btn{font-size:11px;padding:8px 12px;border-radius:9px}.mission-bottom{display:flex;justify-content:space-between;align-items:center;gap:10px;border-top:1px dashed #e2d6ea;padding-top:27px;margin-top:44px}.mission-bottom #stepCounter{font-weight:900;font-family:Fredoka;color:#917bb2}.option-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:18px 0}.choice{padding:15px;text-align:left;border:2px solid #e9e0ee;border-radius:14px;background:white;color:#514568;font-weight:800;min-height:60px}.choice:hover{border-color:#a186c5;background:#f9f4ff}.choice.correct{border-color:#62a983;background:#e8f8e8}.choice.wrong{border-color:#df8e9f;background:#fff0f1}.feedback{background:#f2f6f3;color:#326e55;padding:13px 16px;border-radius:12px;min-height:38px;font-weight:800;font-size:13px;margin:12px 0}.feedback:empty{display:none}.feedback.warn{background:#fff2e5;color:#956142}.pill-list{display:flex;gap:9px;flex-wrap:wrap}.chip{padding:7px 11px;background:#f3eefa;border-radius:99px;font-size:11px;font-weight:900}.callout{padding:22px;background:linear-gradient(115deg,#eee7fd,#ffedf4);border-radius:18px}.callout p:last-child{margin-bottom:0}.art-sample{position:relative;overflow:hidden;border-radius:14px;background:#fff9ef;padding:12px;display:grid;place-items:center;min-height:220px;box-shadow:inset 0 0 0 1px #e4d7dc}.art-sample svg{width:100%;max-height:270px}.art-sample small{position:absolute;left:8px;bottom:6px;background:#fff9;padding:3px 7px;border-radius:5px;font-size:9px;font-weight:900}.color-swatches{display:flex;gap:12px;flex-wrap:wrap;margin:14px 0}.color-pair{display:flex;gap:7px;align-items:center;background:white;padding:8px 13px;border:1px solid #e5daed;border-radius:14px;font-size:12px;font-weight:900}.dot{height:25px;width:25px;border-radius:99px;display:inline-block;border:2px solid #fff;box-shadow:0 0 0 1px #eee}.color-pair b{padding:0 3px}.stepper{display:flex;gap:7px;flex-wrap:wrap;margin:14px 0}.step-button{border:1px solid #e6d6ee;background:white;border-radius:10px;width:36px;height:36px;color:#6d5291;font-weight:900}.step-button.current{background:#7357a1;color:white}.steps-large{display:grid;grid-template-columns:190px 1fr;gap:22px;align-items:center}.steps-illustration{height:190px;border:2px solid #f0e4ec;background:#fff8f6;border-radius:18px;display:grid;place-items:center;font-size:82px}.steps-text h3{margin-bottom:8px}.pair-match{display:flex;gap:14px;flex-wrap:wrap;align-items:center;margin:15px 0}.draggable-chip{font-weight:900;padding:12px 17px;background:white;border:2px solid #e8d9f3;border-radius:12px;cursor:grab}.drop-zone{background:#f7f0ff;border:2px dashed #c4acd9;border-radius:12px;min-width:160px;padding:14px;text-align:center;font-weight:900}.lab-simulator{display:grid;grid-template-columns:1fr 1fr;gap:10px;height:175px;background:#fff;padding:9px;border-radius:14px;border:1px solid #e6e0ec}.lab-simulator>div{border-radius:11px;display:grid;place-items:center;font-size:28px;font-weight:900;text-shadow:0 1px 2px #fff7}.editor-shell{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(255px,.8fr);gap:20px}.editor-canvas-wrap{border:1px solid #e4d8e7;padding:14px;background:linear-gradient(45deg,#efe7ea 25%,#fff 25%,#fff 75%,#efe7ea 75%);background-size:20px 20px;border-radius:15px}.editor-canvas{width:100%;height:auto;background:white;border-radius:6px;touch-action:none;display:block;box-shadow:0 8px 17px #0001}.tool-group{margin-bottom:18px}.tool-group label{display:block;font-size:11px;letter-spacing:1px;font-weight:900;color:#827194;margin-bottom:9px}.toolrow{display:flex;gap:7px;flex-wrap:wrap}.tool-pick{display:grid;justify-items:center;gap:3px;min-width:60px;border:2px solid #ebdfeb;background:#fff;padding:10px;border-radius:12px;color:#5e4e70;font-size:11px;font-weight:900}.tool-pick span{font-size:25px}.tool-pick.picked{background:#ede1fa;border-color:#9a74c3}.swatch{border-radius:50%;height:34px;width:34px;border:3px solid white;box-shadow:0 0 0 1px #cabfd3;cursor:pointer}.swatch.picked{outline:3px solid #7351a6;outline-offset:3px}.canvas-actions{display:flex;gap:6px;flex-wrap:wrap}.material-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}.material-card{padding:13px;text-align:center;border:1px solid #e9dfe9;background:#fff;border-radius:14px;min-height:132px}.material-card .emoji{font-size:33px;display:block}.material-card strong{display:block;font-size:12px;margin:9px 0 2px}.material-card p{font-size:10px;margin:0;color:#756983}.source-photo{display:block;width:100%;object-fit:cover;aspect-ratio:5/3;border-radius:10px;background:#f4eaff}.source-card h3{margin:12px 0 4px}.source-card p{font-size:12px}.source-card figcaption{font-size:11px;color:#756e82}.source-card figure{margin:0}.source-card .art-sample{min-height:155px}.quote-text{font-family:Fredoka;font-size:1.15rem;color:#6d5597;line-height:1.45}.form-stack{display:grid;gap:9px}.form-stack label{font-weight:900;font-size:12px;color:#675483}.form-stack textarea,.form-stack input,.form-stack select{border:1px solid #ded4e8;background:#fff;border-radius:11px;padding:12px;width:100%;font-size:13px;color:var(--ink)}.quiz-question{padding:19px;background:#fff;border:1px solid #ece5f1;border-radius:15px;margin:12px 0}.quiz-question h3{font-size:1.1rem}.quiz-question .option-grid{margin-bottom:0}.scorebox{padding:24px;background:linear-gradient(120deg,#ebdffb,#fff2e6);border-radius:18px;text-align:center}.scorebox .score-number{font-family:Fredoka;font-size:54px;color:#6948a0;line-height:1.1}.badge-art{display:grid;place-items:center;text-align:center;max-width:260px;margin:0 auto;padding:32px;background:radial-gradient(circle,#fff6cc 0,#e5d5f4 60%,#bba8dd 100%);border:11px double #f5de9e;aspect-ratio:1;border-radius:50%;box-shadow:0 0 0 9px #f2eafb,0 14px 32px #907cb747}.badge-art .badge-big{font-size:60px}.badge-art b{font-family:Fredoka;font-size:21px;color:#59427c}.badge-art span{font-size:10px;font-weight:900}.profile-layout{display:grid;grid-template-columns:180px 1fr;gap:24px;align-items:start}.profile-layout img{width:100%;border-radius:18px;object-fit:cover;aspect-ratio:3/4;object-position:50% 25%}.dialog{width:min(680px,calc(100vw - 32px));border:0;border-radius:22px;padding:32px;max-height:90vh;overflow:auto;box-shadow:0 25px 100px #160d2955}.dialog::backdrop{background:#211832ad;backdrop-filter:blur(5px)}.dialog-close{position:absolute;top:13px;right:13px;border:0;border-radius:50%;background:#f1e5f4;padding:8px 13px;font-size:16px}.dialog h2{margin:6px 0 18px}.dialog h3{margin:16px 0 7px}.dialog p,.dialog li{font-size:13px}.dialog li{margin:4px 0}.refs-list{font-size:12px;word-break:break-word}.refs-list li{margin:11px 0}.toast{position:fixed;bottom:20px;right:20px;z-index:100;max-width:310px;background:#312649;color:white;padding:13px 18px;border-radius:14px;box-shadow:var(--shadow);opacity:0;pointer-events:none;transition:opacity .25s}.toast.show{opacity:1}.footer{display:flex;flex-wrap:wrap;justify-content:space-between;gap:10px;border-top:1px solid #e6deeb;padding:23px 33px;background:white;color:#978da6;font-size:10px;font-weight:900}.checklist{padding-left:21px;font-size:13px}.checklist li{margin:8px 0}.checklist strong{color:#66518a}.print-only{display:none}@media(max-width:1120px){.app{grid-template-columns:230px minmax(0,1fr)}.brand{padding:23px 15px}.brand strong{font-size:22px}.hero-content{padding-left:38px}.cols-4{grid-template-columns:repeat(2,minmax(0,1fr))}.material-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:860px){.app{grid-template-columns:1fr}.sidebar{position:fixed;left:0;top:0;width:265px;transform:translateX(-110%);transition:transform .25s}.sidebar.menu-open{transform:translateX(0)}.mobile-menu{display:inline-flex}.topbar{padding:0 18px}.hero{height:340px}.hero-content{padding:64px 24px}.editor-shell{grid-template-columns:1fr}.content{padding-left:19px;padding-right:19px}.sidebar-bottom{padding-top:12px}}@media(max-width:580px){.topbar{height:auto;min-height:68px;gap:5px;flex-wrap:wrap;padding:11px 12px}.breadcrumbs{font-size:10px;gap:6px}.top-controls{gap:4px}.control-btn{padding:7px 8px;font-size:10px}.hero{height:330px}.hero h1{font-size:2.7rem}.hero-chips span{font-size:9px}.story-strip{margin-top:-16px;padding:14px;align-items:flex-start}.story-avatar{height:40px;width:40px;font-size:25px}.story-strip p{font-size:11px}.cols-2,.cols-3,.cols-4{grid-template-columns:1fr}.option-grid{grid-template-columns:1fr}.material-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.steps-large{grid-template-columns:1fr}.steps-illustration{height:150px}.panel{padding:17px}.mission-bottom button{font-size:11px;padding:11px}.profile-layout{grid-template-columns:1fr}.profile-layout img{max-width:170px}.dialog{padding:28px 17px}.source-photo{aspect-ratio:4/3}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}@media print{.sidebar,.topbar,.hero,.hero-scroll,.mission-bottom,.footer,.control-btn,.toast{display:none!important}.app{display:block}.content{padding:10px}.panel,.mini-card{break-inside:avoid}.print-only{display:block}}

/* Illustrated ten-step demonstration and artwork uploads */
.steps-large{grid-template-columns:minmax(230px, 1.1fr) minmax(0, 1fr);gap:26px}
.steps-visual{margin:0;background:#f8edf8;border:1px solid #e6d8ec;border-radius:18px;overflow:hidden;box-shadow:0 10px 23px #4b357d12}
.steps-visual img{width:100%;display:block;object-fit:contain;aspect-ratio:420 / 260}
.steps-visual figcaption{padding:7px;text-align:center;color:#866e9d;font-size:10px;font-weight:900;letter-spacing:1px}
.upload-layout{display:grid;grid-template-columns:1fr 1fr;gap:24px;align-items:start}
.upload-label{display:block;font-size:12px;font-weight:900;color:#76599c;margin-bottom:12px}
#artPhotoInput{width:100%;border:1px solid #d9c9e6;background:#fff;padding:10px;border-radius:9px;max-width:100%}
.upload-preview{margin:0;min-height:230px;border:2px dashed #d9c5e4;border-radius:14px;overflow:hidden;background:#fff9f2;display:flex;flex-direction:column;justify-content:center;align-items:center}
.upload-preview img{display:block;width:100%;max-height:350px;object-fit:contain}
.upload-preview figcaption{padding:9px;color:#856c96;font-size:10px;font-weight:800}
.art-placeholder{min-height:230px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;text-align:center;padding:20px;font-size:38px;color:#9684a9}
.art-placeholder strong{font-size:18px;color:#745591}.art-placeholder span{font-size:12px}
.hero[data-scene="1"] .p2{animation:portal-orbit 10s linear infinite}.hero[data-scene="3"] .particle{animation-name:lab-bubble}.hero[data-scene="7"] .particle{animation-name:confetti}.hero[data-scene="8"] .particle{animation-name:petal-drift}
@keyframes portal-orbit{0%{transform:rotate(0deg) translateX(25px) rotate(0deg)}100%{transform:rotate(360deg) translateX(25px) rotate(-360deg)}}
@keyframes lab-bubble{0%,100%{transform:translateY(24px) scale(.7);opacity:.25}45%{transform:translateY(-30px) scale(1.2);opacity:1}}
@keyframes confetti{0%,100%{transform:translate(0,-30px) rotate(-25deg);opacity:.8}50%{transform:translate(25px,55px) rotate(55deg);opacity:1}}
@keyframes petal-drift{0%,100%{transform:translate(-15px,-18px) rotate(0deg)}50%{transform:translate(55px,20px) rotate(35deg)}}
@media(max-width:700px){.upload-layout{grid-template-columns:1fr}.steps-large{grid-template-columns:1fr}.steps-visual img{max-height:250px}}

.material-photo-heading{margin-top:25px}.material-photo-card{margin:0;padding:12px}.material-photo-card .source-photo{height:130px;aspect-ratio:auto;object-fit:cover}.material-photo-card figcaption{padding:8px 4px}.material-photo-card figcaption p{font-size:11px}.material-photo-card a{font-size:11px}.steps-visual img{animation:step-appear .85s ease-out both}@keyframes step-appear{from{opacity:.2;transform:translateY(9px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}
/* ====================================================================
   THE COLOURVERSE 2.0 — animated fantasy world / CASPER visual system
   Original educational activities and accessible interactions preserved.
   ==================================================================== */
:root{
 --ink:#382653;--muted:#694d87;--dark:#332054;--purple:#7540be;
 --lav:#f5e6ff;--paper:#fffdfc;--pink:#ffe5f4;--line:#e7d4fb;
 --shadow:0 15px 48px rgba(76,34,132,.16);
 --mission-a:#c594ff;--mission-b:#5dcff4;--mission-c:#ffe3a4;
 --frame:linear-gradient(135deg,#fff 0%,#fff8fd 52%,#fff8e9 100%);
}
body{background:linear-gradient(130deg,#faefff,#ecf8ff 38%,#fff1da 75%,#fce5ff);color:var(--ink)}
body[data-mission="1"]{--mission-a:#a87dff;--mission-b:#69dcff;--mission-c:#ffe18e;background-color:#f4eaff}
body[data-mission="2"]{--mission-a:#44c8a3;--mission-b:#9be6aa;--mission-c:#ffdc83;background-color:#eefff2}
body[data-mission="3"]{--mission-a:#b674ff;--mission-b:#ff84d1;--mission-c:#ffda5b;background-color:#ffeffb}
body[data-mission="4"]{--mission-a:#ff85bb;--mission-b:#8e8bff;--mission-c:#ffe387;background-color:#fff0fb}
body[data-mission="5"]{--mission-a:#ffb968;--mission-b:#ff89c2;--mission-c:#9ce2ff;background-color:#fff6e9}
body[data-mission="6"]{--mission-a:#a9a0ff;--mission-b:#ffb9e5;--mission-c:#f8e395;background-color:#f9f1ff}
body[data-mission="7"]{--mission-a:#ff94cb;--mission-b:#a0b4ff;--mission-c:#fcd36a;background-color:#fdf2ff}
body[data-mission="8"]{--mission-a:#76cfaf;--mission-b:#ffb3d8;--mission-c:#ffd878;background-color:#f6fff3}
body::before{content:"";position:fixed;inset:0;pointer-events:none;z-index:-1;opacity:.48;
 background:radial-gradient(circle at 75% 18%,var(--mission-a) 0%,transparent 28%),radial-gradient(circle at 30% 67%,var(--mission-b) 0%,transparent 33%),radial-gradient(circle at 88% 92%,var(--mission-c) 0%,transparent 22%);
 animation:ambient-breath 16s ease-in-out infinite alternate}
@keyframes ambient-breath{0%{opacity:.3;filter:hue-rotate(0deg)}100%{opacity:.52;filter:hue-rotate(9deg)}}
.app{grid-template-columns:285px minmax(0,1fr)}
.sidebar{background:linear-gradient(180deg,#362257,#603d98 55%,#42306f);box-shadow:8px 0 36px #341e622b}
.brand{padding:25px 19px 23px}.brand strong{font-size:26px;color:#ffe4ff;text-shadow:0 3px 15px #fc7fff58}.brand-sparkle{animation:twinkle 4s ease-in-out infinite}
.sidebar-intro{background:linear-gradient(110deg,#ff74b5a6,#ac8cff78);border:1px solid #ffffff50;font-size:13px;box-shadow:0 6px 18px #180f3c29}
.side-home{margin:0 15px 12px;padding:10px;border:1px solid #fff7;border-radius:14px;color:#fff9e6;font-size:12px;font-weight:900;background:#ffffff16;text-align:center;transition:.3s;width:calc(100% - 30px)}
.side-home:hover{transform:translateY(-3px);background:#ffffff35}
.nav-label{color:#f6d5ff}
.nav-mission{border:1px solid #fff1;transition:transform .25s,background .25s,box-shadow .25s}
.nav-mission:hover{transform:translateX(5px) scale(1.02);background:#ffffff2b}
.nav-mission.active{background:linear-gradient(115deg,#fff9ef,#f5dfff);color:#5d348c;box-shadow:0 6px 20px #120a302f;border-color:#fff}
.nav-emoji{background:#ffffff25;font-size:23px}.nav-mission.active .nav-emoji{background:linear-gradient(125deg,#ffe9a6,#eccdff);animation:float-small 3s ease-in-out infinite}
.sidebar-bottom{background:#2b1e4b4a}.progress-fill{background:linear-gradient(90deg,#ff98d0,#ffcb6a,#9deac9)}
.topbar{background:#fffdfdee;backdrop-filter:blur(18px);border-bottom:2px solid #f4dbff;height:74px;box-shadow:0 4px 22px #4c207f12}
.crumb-home{color:#7543b2;font-weight:900}
.control-btn{background:linear-gradient(135deg,#fff1fc,#eae5ff);color:#552e8d;border:1px solid #d8c4f4;font-size:12px;box-shadow:0 3px 9px #7e39aa0d;transition:.2s}
.control-btn:hover{background:#f4dcff;transform:translateY(-2px)}
.control-btn[aria-pressed="true"]{background:#dbffef;border-color:#70cda6;color:#23654b}
.hero{height:480px;background:linear-gradient(135deg,#bb91ef,#6dcbea);border-bottom:6px solid #ffe8a8;box-shadow:inset 0 -12px 35px #6345a238}
.hero::before{content:"";position:absolute;inset:0;background:linear-gradient(120deg,var(--mission-a),var(--mission-b),var(--mission-c));opacity:.37;mix-blend-mode:overlay;z-index:1;animation:ambient-breath 9s ease-in-out infinite alternate;pointer-events:none}
.hero::after{content:"";position:absolute;left:12%;top:-110%;width:85%;height:200%;border:2px solid #ffffff39;border-radius:50%;transform:rotate(18deg);z-index:1;pointer-events:none;animation:hero-halo 24s linear infinite}
@keyframes hero-halo{to{transform:rotate(378deg)}}
.hero-sky{transform:scale(1.03);animation:hero-pan 20s ease-in-out infinite alternate;filter:saturate(1.2) brightness(1.13)}
@keyframes hero-pan{0%{transform:scale(1.03) translateX(0)}100%{transform:scale(1.13) translateX(-1.2%)}}
.hero-overlay{background:linear-gradient(90deg,rgba(40,22,77,.9) 0%,rgba(53,26,97,.74) 39%,rgba(65,30,107,.28) 65%,rgba(65,30,107,.02) 100%);z-index:1}
.hero-content{padding:74px 4.5vw 55px;max-width:740px;z-index:4;animation:rise-on-load .65s ease-out both}
.hero h1{font-size:clamp(2.5rem,5vw,5.1rem);line-height:1.08;letter-spacing:.1px;color:#fffdf3;max-width:660px;-webkit-text-stroke:.3px #fff4bf;text-shadow:0 5px 0 #5b369e,0 9px 20px #22114e9c;animation:title-sway 4.8s ease-in-out infinite alternate}
@keyframes title-sway{0%{transform:translateY(0) rotate(-.2deg)}100%{transform:translateY(-5px) rotate(.3deg)}}
.hero p{max-width:520px;font-weight:900;font-size:clamp(1rem,1.6vw,1.28rem);line-height:1.45;color:#ffefcf;text-shadow:0 2px 6px #2a1d63}
.eyebrow{border-color:#ffffffa1;background:linear-gradient(100deg,#ff79bf80,#7ec8ff77);font-weight:900;font-size:13px;letter-spacing:1px;box-shadow:0 6px 19px #1e11504f}
.hero-chips span{background:#fffefa29;border-color:#fff9d8a6;font-size:11px;box-shadow:0 3px 8px #2e205331}
.hero-scroll{z-index:4;animation:jump 3s ease-in-out infinite;color:#fff8da}
.particle{z-index:3;filter:drop-shadow(0 0 10px #fff8);font-size:32px}
.hero-illustrations{position:absolute;inset:0;z-index:3;pointer-events:none}
.hero-sticker{position:absolute;width:clamp(280px,34vw,495px);max-width:none;height:auto;right:-3%;bottom:-38px;object-fit:contain;filter:drop-shadow(0 17px 14px #3e236848);transform-origin:58% 80%;animation:mascot-wave 3.4s ease-in-out infinite}
.hero-mini{position:absolute;width:clamp(120px,13vw,205px);right:34%;top:0;filter:drop-shadow(0 0 16px #fff8);animation:butterfly-dance 8s ease-in-out infinite}
.hero-wave{position:absolute;right:25.4%;top:26%;font-size:50px;transform-origin:65% 95%;filter:drop-shadow(0 5px 8px #f4d5b89e);animation:handwave 1.15s ease-in-out infinite}
.hero-paint-star{position:absolute;right:16%;top:6%;font-size:46px;color:#fff1a4;text-shadow:0 0 25px #fff;animation:twinkle 2.5s ease-in-out infinite}
@keyframes handwave{0%,100%{transform:rotate(-26deg)}50%{transform:rotate(26deg)}}
@keyframes mascot-wave{0%,100%{transform:translateY(1%) rotate(-2deg)}45%{transform:translateY(-3%) rotate(3deg)}}
@keyframes jump{0%,100%{transform:translateY(0)}48%{transform:translateY(-9px)}}
@keyframes twinkle{0%,100%{transform:scale(.85) rotate(-8deg);opacity:.65}55%{transform:scale(1.18) rotate(12deg);opacity:1}}
@keyframes butterfly-dance{0%,100%{transform:translate(0,0) rotate(-8deg)}30%{transform:translate(-25px,-35px) rotate(11deg)}60%{transform:translate(12px,15px) rotate(-12deg)}}
@keyframes float-small{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
@keyframes rise-on-load{0%{opacity:0;transform:translateY(22px)}100%{opacity:1;transform:translateY(0)}}
/* Different cartoon animation vocabulary for each mission. */
.act-explore{animation:mascot-explore 5s ease-in-out infinite}.act-bubble{animation:bubble-drift 5s ease-in-out infinite}
.act-challenge{animation:mascot-jump 1.9s cubic-bezier(.37,.04,.37,1) infinite}
.act-paint{animation:mascot-paint 2.3s ease-in-out infinite}
.act-present{animation:mascot-present 3s ease-in-out infinite}
.act-celebrate{animation:mascot-jump 1.65s ease-in-out infinite}
.act-victory{animation:mascot-victory 3.3s ease-in-out infinite}
.act-mini-bubble{animation:bubble-drift 4.5s ease-in-out infinite}
.act-mini-paint{animation:mascot-paint 3.4s ease-in-out infinite}
.act-mini-explore{animation:butterfly-dance 5.5s ease-in-out infinite}
.act-mini-challenge{animation:mascot-jump 3s ease-in-out infinite}
.act-mini-victory{animation:butterfly-dance 3.7s ease-in-out infinite}
@keyframes mascot-explore{0%,100%{transform:translateX(0) rotate(-2deg)}25%{transform:translateX(-8px) rotate(-9deg)}60%{transform:translateX(2px) rotate(5deg)}}
@keyframes bubble-drift{0%,100%{transform:translate(0,5px) rotate(5deg)}50%{transform:translate(-20px,-32px) rotate(-9deg)}}
@keyframes mascot-jump{0%,100%{transform:translateY(12px) scale(1)}50%{transform:translateY(-35px) scale(1.03)}}
@keyframes mascot-paint{0%,100%{transform:rotate(-5deg) translateX(-7px)}50%{transform:rotate(9deg) translateX(10px)}}
@keyframes mascot-present{0%,100%{transform:rotate(-3deg) translateY(4px)}50%{transform:rotate(4deg) translateY(-9px)}}
@keyframes mascot-victory{0%,100%{transform:rotate(-4deg) scale(.96)}50%{transform:rotate(5deg) scale(1.06)}}
/* A vivid but readable canvas below the hero */
.main-column{background:transparent}
.content{max-width:1340px;padding:0 clamp(20px,4vw,62px) 76px;position:relative}
.magical-progress-banner{margin:25px 0 21px;border:2px solid #fff;border-radius:18px;background:linear-gradient(105deg,#ffbcde,#ffedbc 50%,#c6f6ee);color:#4a2674;display:flex;align-items:center;gap:16px;padding:12px 18px;box-shadow:0 8px 24px #8c53a924}
.magical-progress-banner .progress-deco{font-size:27px;animation:twinkle 2s ease-in-out infinite}
.magical-progress-banner strong{font-family:Fredoka,system-ui,sans-serif;font-size:19px}
.magical-progress-banner span:last-child{font-size:12px;margin-left:auto;font-weight:800}
.story-strip{background:linear-gradient(110deg,#fffefa,#f7efff,#effcff);border:2px solid #eed6ff;border-left:7px solid #a46aff;box-shadow:0 9px 28px #7747a625;border-radius:22px;margin-top:0;position:relative;overflow:hidden}
.story-strip::after{content:"✦ ✧ ✿ ✧";position:absolute;right:10px;top:5px;font-size:25px;color:#bd91e866;animation:float-small 5s ease-in-out infinite;pointer-events:none}
.story-avatar{font-size:32px;background:linear-gradient(135deg,#ffb4ce,#cfa7ff);border-radius:20px;box-shadow:0 4px 15px #ac66ae2a;animation:mascot-wave 2.5s ease-in-out infinite}
.story-label{color:#8140b2}.story-strip p{color:#513d70;font-size:15px;font-weight:700}
.section{padding-top:32px;margin-top:22px;position:relative}
.section-heading{border-left:6px solid var(--mission-a);padding:8px 0 8px 19px;margin-bottom:23px}
.section-heading h2,.magic-note-heading h2{font-family:Fredoka,sans-serif;color:#583386;font-size:clamp(1.65rem,2.8vw,2.3rem);text-shadow:0 2px 0 #fff9}
.section-tag{background:linear-gradient(110deg,#ffd4ed,#e8d1ff);border-radius:99px;padding:5px 12px;letter-spacing:1px;color:#7134a3;font-size:11px;font-weight:900}
.section-heading .sub{font-size:14px;color:#705888;max-width:900px}
.panel,.mini-card,.glass-card,.source-card{background:var(--frame);border:2px solid #ead8f6;border-radius:20px;box-shadow:0 7px 25px #754b9930}
.panel{background:linear-gradient(125deg,#fffdfc,#fef4ff);padding:25px}
.mini-card{transition:transform .3s ease,box-shadow .3s ease,border-color .2s;position:relative;overflow:hidden}
.mini-card:hover{transform:translateY(-6px);box-shadow:0 19px 33px #8555ac3b;border-color:#cca2f5}
.mini-card .icon-spot{background:linear-gradient(135deg,#ffd0e9,#ffe6af,#c5e8fd);border-radius:18px;box-shadow:0 6px 14px #693b961c;animation:float-small 4s ease-in-out infinite}
.mini-card h3{color:#6b3c98}.mini-card p{color:#635078}
.primary-button{background:linear-gradient(100deg,#ff75bc,#8a5bf3);border:2px solid #fff;color:white;box-shadow:0 7px 0 #6536ac,0 12px 24px #a76bda50;transition:transform .2s,box-shadow .2s}
.primary-button:hover{background:linear-gradient(100deg,#ff58ab,#7349df);transform:translateY(-3px);box-shadow:0 10px 0 #6536ac,0 18px 30px #a76bda64}
.primary-button:active{transform:translateY(4px);box-shadow:0 2px 0 #6536ac}
.outline-button,.soft-button{background:linear-gradient(135deg,#fff9ec,#f4e8ff);color:#5a3688;border-color:#dbc3f6}
.choice,.tool-pick,.step-button,.color-pair,.draggable-chip{transition:transform .18s ease,box-shadow .18s ease,background .18s}
.choice:hover,.tool-pick:hover,.step-button:hover,.color-pair:hover,.draggable-chip:hover{transform:translateY(-4px) scale(1.015);box-shadow:0 9px 19px #8e4cbb2b;background:#fff5ff}
.choice:active,.step-button:active{transform:scale(.98)}
.choice.correct{background:#d9fff0;border-color:#51bb92}.choice.wrong{background:#ffe8ea;border-color:#f58b9c}
.editor-shell,.upload-layout,.source-card,.steps-visual{position:relative}
.editor-canvas{background:linear-gradient(145deg,#fffefa,#fffbf1)}
.mission-bottom{border-top:2px dashed #cdadee;padding-top:27px;margin-top:40px}
.toast{border:2px solid #fff4bc;background:linear-gradient(115deg,#7441b4,#9a58cb);box-shadow:0 12px 45px #291d69a8}
.footer{background:#f9f2ff;box-shadow:inset 0 2px #edd6ff;color:#724e9b}
/* Flip cards. Entire visual is a real button, accessible to touch and keyboard. */
.magic-notes{padding-top:32px}
.magic-note-heading{margin-bottom:18px;display:flex;flex-direction:column;align-items:flex-start;gap:8px}
.magic-note-heading h2{animation:title-sway 4s ease-in-out infinite}
.magic-note-heading p{color:#6f5686;font-size:14px;margin:0}
.flip-deck{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin:18px 0 24px}
.flip-card{display:block;border:0;background:transparent;padding:0;height:222px;perspective:1000px;border-radius:22px;text-align:center}
.flip-card-inner{position:relative;display:block;width:100%;height:100%;transform-style:preserve-3d;transition:transform .7s cubic-bezier(.2,.8,.15,1)}
.flip-card.flipped .flip-card-inner{transform:rotateY(180deg)}
.flip-front,.flip-back{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:19px 20px;backface-visibility:hidden;border-radius:22px;box-shadow:0 9px 23px #825ba13d;border:2px solid #fff;overflow:hidden}
.flip-front::before,.flip-back::before{content:"✦";position:absolute;right:13px;top:4px;font-size:32px;color:#ffffff8f;animation:twinkle 3s ease-in-out infinite}
.flip-front{background:linear-gradient(145deg,#b73e90,#7751c7 55%,#337db0);color:#fff;text-shadow:0 2px 5px #5a318d77}
.flip-card:nth-child(2) .flip-front{background:linear-gradient(145deg,#288b81,#4677bd,#7951b7)}
.flip-card:nth-child(3) .flip-front{background:linear-gradient(145deg,#b96834,#bf4f91,#8848b8)}
.flip-back{background:linear-gradient(145deg,#fffbe3,#fff0ff,#ddf7ff);color:#4e3479;transform:rotateY(180deg);border-color:#b591e8}
.flip-symbol{font-size:39px;filter:drop-shadow(0 5px 8px #6a359d4e);animation:float-small 2.8s ease-in-out infinite}
.flip-label{font-weight:900;letter-spacing:1.5px;font-size:10px}
.flip-front strong,.flip-back strong{font-family:Fredoka,system-ui,sans-serif;font-size:clamp(19px,2vw,25px);line-height:1.1}
.flip-tap{font-size:11px;font-weight:900;opacity:.94}
.flip-body{font-size:13px;font-weight:800;line-height:1.45}
.flip-card:hover .flip-card-inner{filter:brightness(1.045);transform:translateY(-6px) rotate(-1deg)}
.flip-card.flipped:hover .flip-card-inner{transform:translateY(-6px) rotateY(180deg)}
.flip-card:focus-visible{outline:4px solid #f7b14c;outline-offset:5px}
/* Welcome / game title screen uses the generated cover illustration. */
.welcome-screen{position:fixed;inset:0;z-index:1000;overflow:hidden;background:#433388;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;isolation:isolate}
.welcome-screen.welcome-closed{display:none}
.welcome-art{position:absolute;inset:-2%;background-image:url('assets/cover-art.webp');background-position:center 47%;background-size:cover;z-index:-3;animation:cover-breathe 15s ease-in-out infinite alternate}
@keyframes cover-breathe{0%{transform:scale(1.01)}100%{transform:scale(1.08)}}
.welcome-screen::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#2a177c00 40%,#36245a19 57%,#1d164dc9 93%);z-index:-1;pointer-events:none}
.welcome-mascot{position:absolute;right:1.5%;bottom:10%;width:clamp(150px,22vw,330px);filter:drop-shadow(0 20px 18px #24165fa6);animation:mascot-jump 3.1s ease-in-out infinite;pointer-events:none;z-index:2}
.welcome-mascot img{width:100%;display:block}
.greeting-hand{position:absolute;font-size:clamp(28px,4vw,64px);right:7%;top:3%;animation:handwave 1.1s ease-in-out infinite;transform-origin:50% 95%}
.welcome-control{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;gap:10px;margin-bottom:clamp(25px,4vh,50px);max-width:min(95%,750px);text-align:center}
.welcome-small{background:#31204dba;color:#fff5d6;border:1px solid #ffecbcb2;box-shadow:0 5px 20px #2317559c;border-radius:99px;font-size:12px;padding:7px 18px;letter-spacing:1.2px;font-weight:900}
.welcome-start{background:linear-gradient(115deg,#ffd973,#ff8ab9 49%,#b489ff);color:#3c235a;border:3px solid #fff8d2;border-radius:999px;padding:18px 38px;font-size:clamp(16px,2vw,24px);font-family:Fredoka,system-ui,sans-serif;font-weight:900;box-shadow:0 8px 0 #7143ad,0 14px 25px #26185d9e;text-shadow:0 1px 0 #fff6;animation:start-pulse 2.7s ease-in-out infinite}
.welcome-start span{font-size:25px;margin-left:7px;display:inline-block;animation:float-small 2s infinite}
.welcome-start:hover{filter:brightness(1.12);transform:scale(1.04)}
@keyframes start-pulse{0%,100%{box-shadow:0 8px 0 #7143ad,0 14px 25px #26185d9e}50%{box-shadow:0 8px 0 #7143ad,0 15px 42px #ffe9a4c7}}
.welcome-control p{font-size:12px;font-weight:900;letter-spacing:.5px;color:#fff3d7;text-shadow:0 2px 7px #281d4e;margin:0}
.cover-sound{position:absolute;top:18px;right:23px;border:2px solid #ffffffbf;color:white;background:#37265b94;border-radius:99px;padding:9px 16px;font-size:12px;font-weight:900;z-index:3;backdrop-filter:blur(8px)}
.welcome-glitter{position:absolute;inset:0;pointer-events:none;z-index:1}
.welcome-glitter span{position:absolute;color:#ffe9a9;font-size:34px;text-shadow:0 0 18px #fff7;animation:twinkle 3s ease-in-out infinite}
.welcome-glitter span:nth-child(1){left:11%;top:13%}.welcome-glitter span:nth-child(2){left:75%;top:21%;animation-delay:.8s}.welcome-glitter span:nth-child(3){left:8%;top:63%;animation-delay:1.4s}.welcome-glitter span:nth-child(4){left:85%;top:61%;animation-delay:2s}.welcome-glitter span:nth-child(5){left:56%;top:80%;animation-delay:1.1s}
/* Animations can be paused from the always-visible header. */
.motion-off *,.motion-off *::before,.motion-off *::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition-duration:0s!important;scroll-behavior:auto!important}}
@media(max-width:1100px){.app{grid-template-columns:240px minmax(0,1fr)}.hero-sticker{right:-7%;width:39vw}.hero-mini{right:26%}.hero-content{max-width:610px;padding-left:34px}.hero h1{font-size:clamp(2.6rem,4.5vw,4.2rem)}.hero-wave{right:21%}.magical-progress-banner span:last-child{display:none}}
@media(max-width:860px){.app{grid-template-columns:1fr}.hero{height:440px}.hero-sticker{width:360px;right:-8%}.hero-mini{right:19%;width:150px}.hero-content{padding:58px 25px}.hero h1{font-size:clamp(2.55rem,7vw,4.2rem);max-width:70%}.hero p{max-width:65%}.hero-wave{right:20%;top:23%}.top-controls{gap:5px}.control-btn{padding:7px 8px}.welcome-mascot{width:220px}}
@media(max-width:650px){.hero{height:465px}.hero-content{padding:45px 19px 35px}.hero h1{font-size:clamp(2.3rem,9.4vw,3.8rem);max-width:96%}.hero p{max-width:85%;font-size:15px}.hero-overlay{background:linear-gradient(90deg,#322052d9 0%,#38245f9c 60%,#4025574d)}.hero-sticker{width:230px;right:-12%;bottom:-39px;opacity:.86}.hero-mini{width:105px;right:34%;top:9%}.hero-wave{right:20%;top:64%;font-size:35px}.hero-chips{max-width:83%}.hero-chips span{font-size:9px}.hero-scroll{bottom:12px;right:13px}.flip-deck{grid-template-columns:1fr;gap:12px}.flip-card{height:195px}.magic-notes{padding-top:24px}.magical-progress-banner{display:flex;padding:10px}.magical-progress-banner strong{font-size:15px}.topbar{height:auto;min-height:65px;padding:8px 10px;gap:9px}.crumb-home{display:none}.breadcrumbs{font-size:10px;gap:5px}.control-btn{font-size:10px;padding:7px 8px}.content{padding:0 16px 50px}.welcome-art{background-size:auto 100%;background-repeat:no-repeat;background-position:center}.welcome-control{margin-bottom:42px}.welcome-start{padding:13px 19px;font-size:15px}.welcome-mascot{width:175px;right:-12px;bottom:14%;opacity:.94}.cover-sound{font-size:10px;padding:7px 11px}.welcome-small{font-size:10px}.welcome-control p{font-size:10px}.welcome-glitter span{font-size:24px}}
@media(max-width:390px){.hero h1{font-size:2.4rem}.hero-sticker{right:-20%}.top-controls .control-btn{padding:6px 5px;font-size:9px}.welcome-mascot{width:130px}.welcome-start{font-size:13px}.breadcrumbs{max-width:120px;overflow:hidden;white-space:nowrap}}

/* Mobile title makes the original widescreen generated illustration legible. */
.welcome-mobile-title{display:none}
.hero-wave{right:26%;top:40%;font-size:42px}
@media(max-width:650px){
 .welcome-screen{background:linear-gradient(155deg,#7e57d5 0%,#c489ef 38%,#f7b8de 65%,#8367b9 100%)}
 .welcome-art{background-image:url('assets/cover-art.webp'),radial-gradient(circle at 50% 29%,#fff6dc 0%,#edd8ff 43%,#a474d9 100%);background-position:center top,center;background-size:100% auto,cover;background-repeat:no-repeat;inset:0;}
 .welcome-screen::after{background:linear-gradient(180deg,transparent 0%,transparent 35%,#7f4cc116 60%,#302056ad 100%)}
 .welcome-mobile-title{display:flex;position:absolute;top:34%;left:12px;right:12px;flex-direction:column;align-items:center;text-align:center;gap:10px;z-index:2;color:white;text-shadow:0 3px 0 #6b37a7,0 5px 14px #402169c8}
 .welcome-mobile-title span{font-size:clamp(23px,7.5vw,37px);font-family:Fredoka,system-ui,sans-serif;font-weight:900;letter-spacing:.8px;color:#ffe895}
 .welcome-mobile-title strong{font-size:clamp(29px,10vw,48px);font-family:Fredoka,system-ui,sans-serif;font-weight:900;line-height:1.05;color:#fff9e9;max-width:410px}
 .welcome-mobile-title small{font-size:11px;font-weight:900;padding:8px 13px;border-radius:50px;background:#6c3fac9c;color:#fff6b3;text-shadow:none}
 .welcome-mascot{bottom:18%;right:-26px;width:175px}
 .welcome-control{margin-bottom:30px}
 .hero-wave{right:19%;top:65%;font-size:34px}
}
/* Robust card-face visibility across Chromium GPU and reduced-motion modes. */
.flip-front,.flip-back{-webkit-backface-visibility:hidden;backface-visibility:hidden}
.flip-card:not(.flipped) .flip-back{opacity:0;visibility:hidden}
.flip-card.flipped .flip-front{opacity:0;visibility:hidden}
.flip-card.flipped .flip-back{opacity:1;visibility:visible}
/* 2D fallback for card turning: reliable readable fronts/backs on every device. */
.flip-card-inner,.flip-card.flipped .flip-card-inner,
.flip-card:hover .flip-card-inner,.flip-card.flipped:hover .flip-card-inner{transform:translateY(0)!important;transform-style:flat!important}
.flip-front,.flip-back{transform:none!important;-webkit-backface-visibility:visible!important;backface-visibility:visible!important}
.flip-card:not(.flipped) .flip-front{visibility:visible;opacity:1}
.flip-card:not(.flipped) .flip-back{visibility:hidden;opacity:0}
.flip-card.flipped .flip-front{visibility:hidden;opacity:0}
.flip-card.flipped .flip-back{visibility:visible;opacity:1;animation:note-turn .48s ease-out both}
@keyframes note-turn{0%{transform:perspective(600px) rotateY(-88deg) scale(.94);filter:brightness(.7)}70%{transform:perspective(600px) rotateY(9deg) scale(1.04)}100%{transform:perspective(600px) rotateY(0deg) scale(1);filter:brightness(1)}}
@media(max-width:650px){.hero-sticker{width:212px;right:-3%;bottom:-35px;opacity:.96}}

/* === Penambahbaikan BM mantap dan visual lebih terang === */
body{background-image:radial-gradient(circle at top left,rgba(255,255,255,.65),transparent 33%),radial-gradient(circle at top right,rgba(255,255,255,.45),transparent 26%)}
body[data-mission="1"]{--mission-a:#b155ff;--mission-b:#39d6ff;--mission-c:#ffe35e;background-color:#f0ddff}
body[data-mission="2"]{--mission-a:#1ed39b;--mission-b:#8cff8e;--mission-c:#ffe162;background-color:#e8ffe8}
body[data-mission="3"]{--mission-a:#cd66ff;--mission-b:#ff5fc8;--mission-c:#ffe34d;background-color:#ffe4fb}
body[data-mission="4"]{--mission-a:#ff62aa;--mission-b:#8176ff;--mission-c:#ffd74e;background-color:#ffe8f9}
body[data-mission="5"]{--mission-a:#ffa840;--mission-b:#ff6cb4;--mission-c:#78daff;background-color:#fff0da}
body[data-mission="6"]{--mission-a:#9892ff;--mission-b:#ffa7df;--mission-c:#ffeb7c;background-color:#f7e8ff}
body[data-mission="7"]{--mission-a:#ff72bb;--mission-b:#92a9ff;--mission-c:#ffd34b;background-color:#ffe9fb}
body[data-mission="8"]{--mission-a:#47d19c;--mission-b:#ff9fcb;--mission-c:#ffd45d;background-color:#f0fff2}
.section{position:relative}
.section::before{content:"";position:absolute;left:0;right:0;top:28px;bottom:-8px;background:linear-gradient(135deg,rgba(255,255,255,.42),rgba(255,255,255,.08));border-radius:28px;z-index:-1;filter:blur(.5px)}
.panel,.mini-card,.glass-card,.story-strip{box-shadow:0 16px 35px rgba(87,43,123,.14)}
.mini-card,.choice,.flip-front,.flip-back,.source-pill,.control-btn{transition:transform .22s ease,box-shadow .22s ease,filter .22s ease,background .22s ease}
.mini-card:hover,.choice:hover,.source-pill:hover{transform:translateY(-6px) scale(1.01);box-shadow:0 16px 28px rgba(109,49,161,.22)}
.info-glow,.source-pill{position:relative;overflow:hidden}
.info-glow::after,.source-pill::after,.choice::after,.flip-front::after,.flip-back::after{content:"";position:absolute;inset:auto -35% -120% auto;width:85px;height:220px;transform:rotate(20deg);background:linear-gradient(180deg,transparent,rgba(255,255,255,.7),transparent);opacity:.0;pointer-events:none}
.info-glow:hover::after,.source-pill:hover::after,.choice:hover::after,.flip-card:hover .flip-front::after,.flip-card:hover .flip-back::after{animation:shine-sweep .9s ease}
@keyframes shine-sweep{0%{opacity:0;transform:translateX(-20px) rotate(20deg)}25%{opacity:1}100%{opacity:0;transform:translateX(-290px) rotate(20deg)}}
.flash-on{box-shadow:0 0 0 4px rgba(255,255,255,.55),0 0 22px rgba(255,219,101,.85),0 0 42px rgba(255,112,212,.45)!important;filter:brightness(1.08)}
.choice{position:relative;background:linear-gradient(180deg,#ffffff,#fff8ff)}
.choice input{accent-color:#8b50d6}
.choice:hover{border-color:#8c59dc}
.quiz-question{animation:soft-float 4.8s ease-in-out infinite alternate}
.quiz-question:nth-child(2n){animation-delay:.6s}
@keyframes soft-float{from{transform:translateY(0)}to{transform:translateY(-4px)}}
.flip-card{animation:none}
.flip-card-inner{animation:card-bob 4.5s ease-in-out infinite}
.flip-card:nth-child(2) .flip-card-inner{animation-delay:.5s}.flip-card:nth-child(3) .flip-card-inner{animation-delay:1s}
@keyframes card-bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
.flip-front,.flip-back{box-shadow:0 12px 25px rgba(66,26,106,.18)}
.flip-card:hover .flip-front,.flip-card:hover .flip-back{box-shadow:0 14px 30px rgba(99,38,149,.26);filter:saturate(1.08)}
.source-link-panel{margin-top:18px;background:linear-gradient(135deg,#fffef8,#fbe8ff)}
.source-link-grid{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}
.source-pill{display:inline-flex;align-items:center;gap:8px;padding:10px 14px;border-radius:999px;text-decoration:none;background:linear-gradient(135deg,#814dcd,#ef6db7);color:#fff;font-weight:800;box-shadow:0 10px 18px rgba(128,75,205,.25)}
.source-pill:hover{color:#fff;text-decoration:none}
.hero h1,.brand strong{letter-spacing:.3px}
.control-btn{font-weight:900;background:linear-gradient(180deg,#fff4ff,#ecdfff)}
.control-btn:hover{box-shadow:0 8px 18px rgba(135,88,184,.24)}
.info-note{background:linear-gradient(135deg,#f5ecff,#fff7da);border-color:#e9d3ff;color:#533e72}
.warm-note{background:linear-gradient(135deg,#fff0dc,#ffe4f6);border-color:#ffd39b}
.hero-scroll,.eyebrow,.section-tag{font-weight:900}
@media(max-width:650px){.source-link-grid{flex-direction:column}.source-pill{justify-content:center;width:100%}}

/* === Naik taraf akhir: biodata kreatif, neon magis, galeri sumber === */
body{overflow-x:hidden}
body::before,body::after{content:"";position:fixed;top:0;bottom:0;width:14px;z-index:0;pointer-events:none;filter:blur(1px)}
body::before{left:0;background:linear-gradient(180deg,#ff6fd8,#ffe96a,#4df6ff,#b861ff);box-shadow:0 0 18px #ff72c7,0 0 36px #4df6ff;animation:led-rainbow 8s linear infinite}
body::after{right:0;background:linear-gradient(180deg,#4df6ff,#ffe96a,#ff6fd8,#7eff8e);box-shadow:0 0 18px #5cf2ff,0 0 36px #ff72c7;animation:led-rainbow 7s linear infinite reverse}
@keyframes led-rainbow{0%{filter:hue-rotate(0deg)}100%{filter:hue-rotate(360deg)}}
.sidebar{position:sticky;overflow:hidden;border-right:2px solid rgba(255,255,255,.22)}
.sidebar::before,.sidebar::after{content:"";position:absolute;left:4px;right:4px;height:4px;border-radius:999px;background:linear-gradient(90deg,#ff77ca,#ffe36a,#71f6ff,#b667ff,#ff77ca);box-shadow:0 0 10px #fff,0 0 20px #ff77ca,0 0 28px #71f6ff;animation:sidebar-led 4s linear infinite}
.sidebar::before{top:0}.sidebar::after{bottom:0;animation-direction:reverse}
@keyframes sidebar-led{0%{transform:translateX(-18%)}50%{transform:translateX(18%)}100%{transform:translateX(-18%)}}
.nav-mission{position:relative;border:1px solid rgba(255,255,255,.08)}
.nav-mission::before{content:"";position:absolute;left:0;top:7px;bottom:7px;width:4px;border-radius:99px;background:linear-gradient(180deg,#ff74d7,#fff07a,#5defff);box-shadow:0 0 10px #ff72cb,0 0 20px #5defff;opacity:.55;transition:opacity .25s,transform .25s}
.nav-mission:hover::before,.nav-mission.active::before{opacity:1;transform:scaleY(1.1)}
.nav-mission.active{box-shadow:0 0 0 1px rgba(255,255,255,.22),0 0 22px rgba(212,185,255,.38)}
.brand strong{font-size:27px;text-shadow:0 0 10px rgba(255,239,189,.35),0 0 24px rgba(194,142,255,.28)}
.brand small,.sidebar-intro,.nav-label{letter-spacing:2px}
.topbar,.footer{position:relative;z-index:1}
.hero,.content,.story-strip,.section,.footer{position:relative;z-index:1}
.hero{box-shadow:inset 0 -20px 45px rgba(255,255,255,.16),0 18px 45px rgba(89,47,141,.18)}
.hero h1{font-family:Fredoka, "Trebuchet MS", "Comic Sans MS", cursive}
.section-heading h2{font-family:Fredoka, "Trebuchet MS", "Comic Sans MS", cursive; text-shadow:0 2px 0 #fff7,0 0 14px rgba(255,255,255,.32)}
.section-heading .sub,.story-strip p,.mini-card p,.info-note,.callout p{font-weight:800}
.story-strip{background:linear-gradient(135deg,#fffefa,#fff0ff 45%,#effcff);border:1px solid #f2dbff;animation:story-glow 5s ease-in-out infinite}
@keyframes story-glow{0%,100%{box-shadow:0 14px 32px rgba(93,54,139,.12)}50%{box-shadow:0 14px 38px rgba(255,125,206,.22),0 0 20px rgba(92,240,255,.16)}}
.info-note,.callout,.panel,.mini-card{backdrop-filter:blur(8px)}
.info-note,.callout{animation:note-drift 4.8s ease-in-out infinite alternate}
@keyframes note-drift{from{transform:translateY(0)}to{transform:translateY(-5px)}}
.section-heading{animation:heading-spark 4.4s ease-in-out infinite alternate}
@keyframes heading-spark{from{transform:translateX(0)}to{transform:translateX(3px)}}

/* Muka depan dengan biodata kreatif */
.welcome-screen{background:radial-gradient(circle at top left,#fff7b4 0,#ffb9ef 20%,#8ae5ff 45%,#7f69ff 82%,#3b265f 100%)}
.welcome-screen::before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.55),transparent 16%),radial-gradient(circle at 88% 14%,rgba(255,255,255,.26),transparent 18%),radial-gradient(circle at 68% 70%,rgba(255,255,255,.18),transparent 14%);animation:aurora 10s ease-in-out infinite alternate}
@keyframes aurora{from{transform:scale(1) translateY(0)}to{transform:scale(1.05) translateY(-8px)}}
.welcome-art{filter:saturate(1.15) brightness(1.08);opacity:.92}
.welcome-control{background:rgba(41,22,73,.58);border:1px solid rgba(255,255,255,.18);box-shadow:0 0 20px rgba(255,145,220,.25),0 0 34px rgba(119,230,255,.16);border-radius:26px;padding:24px 26px;backdrop-filter:blur(12px)}
.welcome-small{display:inline-block;padding:8px 14px;border-radius:999px;background:rgba(255,255,255,.18);box-shadow:0 0 14px rgba(255,255,255,.14)}
.welcome-start{background:linear-gradient(135deg,#ff5bc5,#934dff,#4ee7ff);box-shadow:0 0 18px rgba(255,104,200,.5),0 0 30px rgba(86,235,255,.28);font-family:Fredoka, "Trebuchet MS", cursive;letter-spacing:.5px}
.welcome-start:hover{transform:translateY(-3px) scale(1.03)}
.welcome-profile{position:absolute;left:4.5vw;right:4.5vw;bottom:24px;display:grid;grid-template-columns:170px minmax(0,1fr);gap:20px;align-items:center;background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.26);border-radius:28px;padding:18px 20px 18px 18px;box-shadow:0 0 20px rgba(255,150,217,.28),0 0 28px rgba(115,240,255,.18);backdrop-filter:blur(14px);z-index:3;animation:profile-float 4.8s ease-in-out infinite}
@keyframes profile-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
.welcome-profile-photo{position:relative;width:150px;height:170px;border-radius:24px;overflow:hidden;border:3px solid rgba(255,255,255,.55);box-shadow:0 0 18px rgba(255,248,167,.42),0 0 28px rgba(255,143,215,.28)}
.welcome-profile-photo::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 58%,rgba(255,255,255,.16));pointer-events:none}
.welcome-profile-photo img{width:100%;height:100%;object-fit:cover}
.welcome-profile-tag{display:inline-block;padding:6px 12px;border-radius:999px;background:linear-gradient(135deg,#ff81cf,#ffd95f);color:#4a2a74;font-weight:900;margin-bottom:8px;box-shadow:0 0 14px rgba(255,233,95,.25)}
.welcome-profile h2{font-size:clamp(1.3rem,2vw,2rem);color:#fffef6;text-shadow:0 2px 8px rgba(44,17,76,.72)}
.welcome-profile p{margin:.45rem 0 1rem;color:#fff8ea;font-weight:800;max-width:900px}
.welcome-bio-pills{display:flex;flex-wrap:wrap;gap:9px}
.welcome-bio-pills span{padding:8px 12px;border-radius:999px;background:rgba(255,255,255,.18);color:#fffef8;font-weight:800;border:1px solid rgba(255,255,255,.18);box-shadow:0 0 12px rgba(255,255,255,.08)}
.cover-sound{z-index:4;background:rgba(255,255,255,.2);border:1px solid rgba(255,255,255,.3);box-shadow:0 0 15px rgba(120,243,255,.18)}

/* Galeri sumber */
.origin-gallery{align-items:stretch}
.origin-card{display:grid;grid-template-rows:auto 1fr;gap:0;padding:0;overflow:hidden;background:linear-gradient(135deg,#fffefd,#fff1fc 52%,#f0fcff)}
.origin-image{width:100%;aspect-ratio:4/3;object-fit:cover;display:block;animation:gallery-float 5.2s ease-in-out infinite alternate}
.origin-card figcaption{padding:16px 16px 18px}
.origin-card h3{margin-bottom:6px;color:#4a2f75}
.origin-card p{font-size:13px;color:#5f5572}
.link-only-card{display:grid;place-items:center;min-height:100%}
.origin-link-stack{padding:18px;display:grid;gap:12px;place-items:start}
.origin-link-stack .icon-spot{margin-bottom:0}
@keyframes gallery-float{from{transform:scale(1) translateY(0)}to{transform:scale(1.04) translateY(-8px)}}

/* Penerangan dan latihan lebih kreatif */
.section .mini-card,.section .panel,.callout,.feedback,.choice{position:relative;overflow:hidden}
.section .mini-card::before,.section .panel::before,.callout::before{content:"";position:absolute;inset:-100% -20%;background:linear-gradient(120deg,transparent,rgba(255,255,255,.14),transparent);transform:translateX(-30%);animation:glass-sweep 8s linear infinite;pointer-events:none}
@keyframes glass-sweep{0%{transform:translateX(-40%) rotate(0)}100%{transform:translateX(40%) rotate(0)}}
.feedback{background:linear-gradient(135deg,#eefef2,#f8f1ff);border:1px solid #e0d2ff}
.choice{box-shadow:0 8px 20px rgba(90,45,135,.08)}
.choice.correct{box-shadow:0 0 0 2px rgba(98,169,131,.3),0 0 18px rgba(98,169,131,.22)}
.choice.wrong{box-shadow:0 0 0 2px rgba(223,142,159,.3),0 0 18px rgba(223,142,159,.22)}
.magical-progress-banner{background:linear-gradient(135deg,#5d33a4,#9d58ff,#ff70c6,#58ebff);box-shadow:0 0 24px rgba(120,74,221,.25)}

/* Animasi berbeza mengikut misi */
body[data-mission="1"] .story-avatar{animation:spin-slow 5s linear infinite}
body[data-mission="2"] .mini-card{animation:leaf-sway 4.5s ease-in-out infinite alternate}
body[data-mission="3"] .info-note, body[data-mission="3"] .callout{animation:bubble-rise 3.6s ease-in-out infinite alternate}
body[data-mission="4"] .choice{animation:wiggle-soft 3s ease-in-out infinite}
body[data-mission="5"] .panel{animation:paint-pulse 4s ease-in-out infinite}
body[data-mission="6"] .origin-card, body[data-mission="6"] .upload-preview{animation:gallery-show 4.8s ease-in-out infinite alternate}
body[data-mission="7"] .quiz-question{animation:quiz-hop 3.6s ease-in-out infinite alternate}
body[data-mission="8"] .badge-art{animation:celebrate-pop 2.7s ease-in-out infinite}
@keyframes spin-slow{from{transform:rotate(0)}to{transform:rotate(360deg)}}
@keyframes leaf-sway{from{transform:translateY(0) rotate(-1.1deg)}to{transform:translateY(-4px) rotate(1.1deg)}}
@keyframes bubble-rise{from{transform:translateY(0) scale(1)}to{transform:translateY(-6px) scale(1.01)}}
@keyframes wiggle-soft{0%,100%{transform:translateX(0)}25%{transform:translateX(1px)}75%{transform:translateX(-1px)}}
@keyframes paint-pulse{0%,100%{box-shadow:0 16px 35px rgba(87,43,123,.14)}50%{box-shadow:0 0 0 2px rgba(255,176,86,.2),0 0 24px rgba(255,125,194,.18)}}
@keyframes gallery-show{from{transform:translateY(0)}to{transform:translateY(-6px)}}
@keyframes quiz-hop{from{transform:translateY(0)}to{transform:translateY(-5px)}}
@keyframes celebrate-pop{0%,100%{transform:scale(1)}50%{transform:scale(1.04)}}

/* Dialog biodata lebih menarik */
.dialog{background:linear-gradient(135deg,#fffefa,#fff0ff 55%,#eefcff);border:2px solid #edd8ff;box-shadow:0 0 30px rgba(255,120,210,.18),0 0 30px rgba(82,232,255,.12)}
.profile-layout figure img{border-radius:18px;box-shadow:0 0 18px rgba(255,161,223,.24),0 0 22px rgba(104,230,255,.18)}

@media(max-width:900px){
  .welcome-profile{grid-template-columns:120px 1fr;left:18px;right:18px;bottom:18px;padding:14px}
  .welcome-profile-photo{width:110px;height:132px}
}
@media(max-width:650px){
  .welcome-profile{position:relative;left:auto;right:auto;bottom:auto;margin:12px 14px 0;grid-template-columns:1fr;text-align:center;justify-items:center}
  .welcome-profile p{font-size:13px}
  .welcome-bio-pills{justify-content:center}
  .welcome-control{margin:20px 14px 0}
  .welcome-mascot{display:none}
  .origin-gallery{grid-template-columns:1fr}
}
