@import"https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Fredoka:wght@400;500;600;700&display=swap";:root{font-family:DM Sans,sans-serif;color:#302a46;background:#ece9f5;font-synthesis:none;--ink:#302a46;--purple:#7557ce;--muted:#7b748a;--paper:#fffdf6;--yellow:#f8cd60}*{box-sizing:border-box}body{margin:0;background-image:radial-gradient(#b9accb44 .8px,transparent .8px);background-size:18px 18px}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer;transition:transform .16s,background .16s}button:focus-visible,a:focus-visible{outline:3px solid #e59a35;outline-offset:5px}button:hover{transform:translateY(-2px)}button:active{transform:translateY(1px)}a{color:inherit;text-decoration:none}.masthead{height:90px;margin:0 auto;max-width:1280px;padding:0 40px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #302a4615}.brand{display:flex;align-items:center;font-size:25px;font-weight:800;letter-spacing:-1.3px;gap:10px}.brand-mark{position:relative;display:grid;place-items:center;background:var(--purple);color:#fff;width:33px;height:35px;border-radius:10px;font-size:30px;font-family:Fredoka,sans-serif;padding-bottom:5px}.brand-mark span{font-size:13px;position:absolute;right:-5px;top:-7px;color:#e4ab3e}.brand-dot{font-size:10px;align-self:flex-start;margin-top:8px;margin-left:-6px}.original{font-size:10px;letter-spacing:2px;color:#7b728c;font-weight:700}.icon-button{background:#ffffff60;border:1px solid #b8accb70;border-radius:50%;width:42px;height:42px;font-size:22px;display:flex;align-items:center;justify-content:center;gap:2px}.sound-state{font-size:9px}main{width:min(940px,calc(100% - 48px));margin:36px auto 0}.intro{display:flex;justify-content:space-between;align-items:center;padding:0 13px 26px}.eyebrow{font-size:10px;letter-spacing:2px;font-weight:700;color:var(--purple);display:flex;align-items:center;gap:7px}.eyebrow>span{width:6px;height:6px;border-radius:50%;background:var(--purple)}h1{font-family:Fredoka,sans-serif;font-size:82px;letter-spacing:-5px;font-weight:600;line-height:1;margin:5px 0 9px}.period{color:var(--purple)}.title-star{display:inline-block;color:#eeb744;font-size:41px;vertical-align:top;margin:7px 0 0 17px;transform:rotate(12deg)}.intro p{font-size:15px;color:#787083;margin:0}.intro-note{font-size:13px;line-height:1.8;color:#80788d;position:relative;transform:rotate(-3deg);margin-right:28px}.note-arrow{position:absolute;font-size:39px;left:-48px;top:29px;color:#a59ab5;transform:rotate(-15deg)}.game-shell{position:relative;border:2px solid #3b324e;border-radius:21px;overflow:hidden;background:var(--paper);box-shadow:0 7px #cec4df,0 14px 30px #5140710a}.game-top{display:flex;justify-content:space-between;align-items:center;padding:20px 27px}.level-button{display:flex;gap:9px;align-items:center;border:0;background:transparent;font-size:11px;font-weight:700;letter-spacing:1px;padding:0}.grid-icon{font-size:20px;color:var(--purple)}.chapter{font-size:9px;letter-spacing:2px;color:#a39bab}.progress-count{display:flex;align-items:center;gap:8px;font-size:12px;color:#81738e}.progress-count>span:first-child{font-size:21px;color:#d8a12c}.puzzle-heading{text-align:center;padding:8px 20px 0}#puzzle-category{font-size:9px;font-weight:700;letter-spacing:2.5px;color:#9a8aa7}h2{font-family:Fredoka,sans-serif;font-weight:500;letter-spacing:-.6px}.puzzle-heading h2{font-size:29px;margin:9px 0 0}#playfield{width:100%;aspect-ratio:900 / 350;position:relative;touch-action:none}#playfield canvas{display:block!important;width:100%!important;height:100%!important}.feedback{text-align:center;min-height:37px;padding:4px 22px 10px;font-size:12px;color:#938798}.feedback.nudge{color:#7751bc;font-weight:600}.game-bottom{display:flex;align-items:center;justify-content:space-between;border-top:1px dashed #ded6e1;margin:0 25px;padding:18px 0}.hint-button{display:flex;align-items:center;gap:9px;background:#f4eddc;border:1px solid #e9dbbc;border-radius:10px;padding:10px 13px;font-size:12px;font-weight:600}.hint-button>span:first-child{font-size:20px;color:#967124;line-height:16px}.hint-pill{border-radius:50%;background:#e9dfc6;width:17px;height:17px;font-size:10px;display:grid;place-items:center}.interaction-note{font-size:11px;color:#a196a7}.interaction-note>span{font-size:18px;margin-right:6px}.retry-button{font-size:11px;border:0;background:transparent;color:#85798e;display:flex;align-items:center;gap:7px}.retry-button span{font-size:22px}.below{display:flex;justify-content:space-between;align-items:center;font-size:10px;color:#8e829d;margin:23px 6px 0;gap:10px}.tiny-pip{color:#8593d1;margin-right:4px}#progress-dots{display:flex;gap:7px}#progress-dots button{width:7px;height:7px;padding:0;border:none;background:#d2c8df;border-radius:50%;position:relative}#progress-dots button:before{content:"";position:absolute;inset:-6px}#progress-dots button.current{background:var(--purple);box-shadow:0 0 0 3px #7557ce20}#progress-dots button.solved{background:#82a691}footer{max-width:1200px;padding:38px 40px 25px;margin:auto;display:flex;justify-content:space-between;align-items:center;color:#a197af;font-size:9px;letter-spacing:1.5px}.footer-center{font-size:11px;letter-spacing:0;font-style:italic}.success-panel{position:absolute;inset:65px 0 0;background:#fffdf6f5;z-index:5;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;padding:25px;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}[hidden]{display:none!important}.success-spark{font-size:62px;color:#e5ae32;line-height:1.1;margin-bottom:20px}.success-panel h2{font-size:38px;margin:12px 0}.success-panel p{font-size:14px;max-width:360px;color:#84798d;line-height:1.7;margin:0 0 25px}.primary-button{border:2px solid #443060;background:var(--purple);color:#fff;border-radius:12px;padding:14px 22px;box-shadow:0 4px #443060;font-weight:600;font-size:13px;display:flex;gap:30px;align-items:center}dialog{color:var(--ink);border:2px solid var(--ink);border-radius:22px;padding:30px;width:min(620px,calc(100% - 30px));background:var(--paper);box-shadow:0 10px #3c2e5030}dialog::backdrop{background:#302a4680;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.dialog-heading{display:flex;justify-content:space-between;align-items:center}.dialog-heading h2{font-size:26px;margin:10px 0}dialog>p{color:#918298;font-size:12px}#level-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:25px}#level-grid button{border:1px solid #ded5e6;background:#f1edf7;border-radius:12px;min-height:90px;text-align:left;padding:13px;font-size:11px}#level-grid strong{display:block;font-family:Fredoka;font-size:24px;color:var(--purple);margin-bottom:5px}#level-grid button.completed{background:#edf2e9;border-color:#b7cbb0}#level-grid button.completed strong{color:#739366}@media(min-width:1450px){main{margin-top:55px}footer{padding-top:48px}}@media(max-width:650px){.masthead{height:70px;padding:0 22px}.original{display:none}.brand{font-size:22px}main{width:calc(100% - 24px);margin-top:27px}.intro{padding:0 11px 22px}h1{font-size:67px}.intro-note{display:none}.intro p{font-size:12px}.game-top{padding:16px}.chapter{display:none}.puzzle-heading{padding-top:15px}.puzzle-heading h2{font-size:25px;min-height:60px;max-width:290px;margin:9px auto 0}#playfield{aspect-ratio:600 / 350}.game-bottom{margin:0 14px;padding:15px 0}.interaction-note{display:none}.below{flex-wrap:wrap;justify-content:center;gap:18px}.below>span:first-child{display:none}.below>span:last-child{width:100%;text-align:center}footer{padding:27px 20px 20px;justify-content:center}.footer-center,footer>span:last-child{display:none}.success-panel h2{font-size:30px}.success-panel p{font-size:12px}.success-spark{font-size:43px;margin-bottom:10px}#level-grid{grid-template-columns:repeat(2,1fr)}dialog{max-height:85vh;overflow:auto}.feedback{font-size:11px;min-height:47px}.level-button{font-size:10px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}body{background-color:#e7e0f0;background-image:radial-gradient(ellipse at 14% 20%,#f8eddc99,transparent 45%),radial-gradient(ellipse at 85% 65%,#c8bdde77,transparent 45%),radial-gradient(#9688af26 .8px,transparent .8px);background-size:auto,auto,16px 16px}.masthead{border-bottom-color:#9380ae28}.brand-mark{box-shadow:0 3px #503797,0 6px 12px #71549220}main{margin-top:26px}.intro{padding-bottom:23px}h1{text-shadow:0 3px 0 #ffffff90}.intro p{color:#776284}.intro-note{background:#f8eed5;padding:15px 25px 18px;border:1px solid #dfcfaa;box-shadow:3px 5px #beabc923;color:#7b6b59;transform:rotate(3deg);border-radius:3px;font-family:Fredoka,sans-serif;font-size:17px;line-height:1.35;margin-right:15px}.intro-note:before{content:"";position:absolute;width:67px;height:19px;background:#cab8dfa6;left:calc(50% - 33px);top:-10px;transform:rotate(-5deg)}.note-label{display:block;font-family:DM Sans;font-size:8px;letter-spacing:1.2px;margin-bottom:8px;color:#9f8664}.note-arrow{left:-46px;top:35px}.game-shell{background:#fffaf0;border-color:#5e466e;border-radius:24px;box-shadow:0 8px #baa8ca,0 10px #79638b,0 24px 50px #59416e1f}.game-top{background:#6d518c;color:#fff6ed;padding:16px 26px;border-bottom:3px solid #e1b966}.level-button{color:#fff6ed}.grid-icon{color:#dfc4f5}.chapter{color:#e0cce8}.progress-count{color:#fff2da}.progress-count>span:first-child{color:#f6cf78}.puzzle-heading{padding:22px 20px 18px;background:linear-gradient(#fffaf0,#f8f3e9)}#puzzle-category{color:#9a7855;font-size:9px;letter-spacing:2px}.puzzle-heading h2{font-size:31px;margin-top:7px;color:#4b365b}#playfield{background:#ede4d6}.feedback{padding:16px 20px 13px;min-height:47px;color:#88725e;background:#f4e9d8;border-top:1px solid #c4a78650;font-size:12px}.feedback.nudge{background:#eee4f5;color:#6c468b}.game-bottom{margin:0;padding:17px 25px;border-top:1px solid #e7d9c4;background:#fff9ed}.hint-button{background:#f3d792;border-color:#cda859;box-shadow:0 3px #dfbd76;color:#654e32}.hint-button:hover{background:#f9dfa3}.hint-pill{background:#e4bd6b;color:#644a29}.hint-button>span:first-child{color:#805e28}.retry-button{color:#786189}.interaction-note{color:#9b8b99}.audio-controls{display:flex;gap:8px;align-items:center;position:relative;z-index:20}.audio-master{border-radius:13px;width:57px;background:#fff8ed;border-color:#c9b8d5;box-shadow:0 2px #c5b3d1}.audio-master .sound-state{font-size:10px}.audio-master.muted{background:#ded5e7;color:#8d799e}.audio-settings summary{list-style:none;cursor:pointer;font-size:25px;border:1px solid #c9b8d5;background:#fff8ed;border-radius:12px;width:40px;height:42px;display:grid;place-items:center;box-shadow:0 2px #c5b3d1}.audio-settings summary::-webkit-details-marker{display:none}.audio-settings summary:focus-visible{outline:3px solid #e59a35;outline-offset:4px}.audio-panel{position:absolute;right:0;top:54px;width:265px;padding:22px;background:#fffaf0;border:1px solid #a993b7;border-radius:17px;box-shadow:0 8px #b8a5c533,0 16px 45px #48345330}.audio-panel h3{font-family:Fredoka;font-size:22px;font-weight:500;margin:10px 0 20px}.audio-panel label{display:flex;justify-content:space-between;font-size:12px;font-weight:600;margin:14px 0 6px}.audio-panel output{color:#967dab}.audio-panel input{width:100%;accent-color:#8561aa;cursor:pointer;min-height:25px}.audio-panel p{font-size:10px;line-height:1.7;color:#98889e;margin:14px 0 0}.success-panel{background:radial-gradient(ellipse at 50% 25%,#fff9eafa,#f1e7f6f2);inset:56px 0 0}.success-spark{display:grid;place-items:center;width:110px;height:110px;border-radius:50%;background:linear-gradient(140deg,#ffedb1,#e7b553);border:6px solid #fff4cf;outline:2px solid #c4a26c;box-shadow:0 7px #d3b485,0 15px 30px #c9a87130;transform:rotate(-8deg);margin-bottom:27px;color:#8a653a;font-size:62px}.success-spark span{text-shadow:2px 3px 0 #fff0b8}.success-panel h2{color:#604775}.primary-button{background:#785395;border-color:#583a70;box-shadow:0 4px #583a70}.success-panel .eyebrow{color:#98743a}.below{color:#877191;margin-top:25px}#progress-dots{gap:10px}#progress-dots button{width:8px;height:8px}#progress-dots button.current{background:#785395;box-shadow:0 0 0 4px #7853951c}#progress-dots button.solved{background:#84977d}.footer-center{color:#947c9f}@media(max-width:650px){.audio-controls{gap:5px}.audio-master{width:48px}.audio-settings summary{width:34px}main{margin-top:25px}.intro{padding-bottom:22px}.game-top{padding:15px}.puzzle-heading{padding:18px 15px 8px}.puzzle-heading h2{font-size:25px;min-height:60px}.game-bottom{padding:15px 13px}.feedback{min-height:54px;font-size:11px;padding:14px 15px}.success-spark{width:80px;height:80px;font-size:43px;margin-bottom:20px}.success-panel h2{font-size:29px}.audio-panel{width:250px}#progress-dots{gap:9px}}.restart-row{display:flex;align-items:center;justify-content:center;gap:15px;margin-top:23px;color:#99869f;font-size:10px}.restart-game-button{border:0;background:transparent;color:#755789;font-size:12px;padding:9px 12px;text-decoration:underline;text-underline-offset:4px}.success-panel>.restart-game-button{margin-top:18px}.restart-actions{display:flex;justify-content:flex-end;gap:15px;margin-top:24px}#restart-dialog{max-width:460px}#restart-dialog h2{font-size:28px}#restart-dialog p{line-height:1.7;font-size:13px}#level-dialog{max-height:85vh;overflow:auto}#progress-dots{flex-wrap:wrap;justify-content:center;max-width:360px}.below{flex-wrap:wrap}#progress-dots button{flex-shrink:0}@media(max-width:650px){#progress-dots{max-width:205px;gap:12px}.restart-actions{justify-content:center;gap:10px}.restart-actions .primary-button{padding:12px}.restart-row{gap:4px}.restart-row>span{font-size:9px}}.attempts{font-size:11px;color:#829176;letter-spacing:1px;margin:10px 0 3px}.attempts.low{color:#bb765f}.feedback.wrong{background:#f9e1d4;color:#995442}.failure-panel{background:radial-gradient(ellipse at 50% 25%,#fff2dffa,#f1e1e8f5)}.failure-panel h2{color:#95637c}.failure-icon{font-size:70px;color:#bc8491;line-height:1;margin-bottom:22px}.failure-panel .eyebrow{color:#a97a68}.failure-panel p{max-width:380px}#level-grid button:disabled{cursor:default;opacity:.65;transform:none}#level-grid button:disabled:not(.completed){background:#eee9ee;color:#a298a8}#level-grid button:disabled:not(.completed) strong{color:#a899af}#progress-dots button:disabled{cursor:default;transform:none}
