@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;450;500;550;600;650;700&family=DM+Serif+Display:ital@0;1&display=swap');
:root{--paper:#f7f5ef;--white:#fffefa;--ink:#293b32;--muted:#81867c;--green:#42634c;--orange:#c86943;--line:#e5e5d9;--serif:'DM Serif Display',Georgia,serif;--sans:'DM Sans',system-ui,sans-serif}
*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:14px}button,input{font:inherit}button,a,input{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:default}button:focus-visible,a:focus-visible{outline:3px solid #c98b43;outline-offset:4px}button{transition:background .18s,transform .18s,box-shadow .18s}button:hover:not(:disabled){filter:brightness(.97)}button:active:not(:disabled){transform:translateY(1px)}a{color:inherit;text-decoration:none}.site-header{height:91px;max-width:1440px;margin:auto;padding:0 58px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:24px}.brand{font-size:25px;font-weight:700;letter-spacing:-1px;display:flex;align-items:center}.brand>span:not(.brand-icon):not(.brand-dot){font-weight:450}.brand-dot{color:var(--orange)}.brand-icon{display:grid;place-items:center;background:var(--green);color:#f6e9bb;width:34px;height:38px;border-radius:11px 11px 16px 16px;font-size:27px;margin-right:10px;letter-spacing:0}.header-tag{font-size:10px;font-weight:600;letter-spacing:2.2px;color:#8a8d80;margin-left:48px}.header-actions{display:flex;align-items:center;gap:23px}.icon-button{border:0;background:none;padding:8px;color:var(--green);display:grid;place-items:center}.icon-button svg{width:21px;height:21px}.icon-button[aria-pressed=false]{opacity:.45}.text-button{border:0;background:none;color:var(--ink);font-size:12px;display:flex;gap:8px;align-items:center}.help-icon{border:1.5px solid var(--green);border-radius:50%;font-size:10px;width:16px;height:16px;display:grid;place-items:center}main{max-width:1440px;margin:auto;padding:45px 58px 22px}.intro{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:33px}.eyebrow{font-size:10px;letter-spacing:1.8px;font-weight:700;color:var(--orange);display:flex;align-items:center;gap:7px}.eyebrow>span{width:5px;height:5px;background:var(--orange);border-radius:50%}h1{font:40px/1.25 var(--serif);letter-spacing:-1px;margin:13px 0 10px}h1 em{font-weight:400;color:var(--green)}.intro p{color:var(--muted);margin:0;font-size:13px}.button{border:0;border-radius:8px;font-weight:600;display:flex;align-items:center;justify-content:center;gap:13px;min-height:46px}.new-game{background:var(--green);color:var(--white);padding:0 20px;font-size:12px;box-shadow:0 3px 0 #2e4737;margin-top:10px}.new-game>span{font-size:23px;font-weight:400}.game-layout{display:grid;grid-template-columns:minmax(0,1fr) 314px;gap:24px;align-items:start}.board-card{background:var(--white);border:1px solid var(--line);border-radius:13px;overflow:hidden;box-shadow:0 3px 4px #293b3203}.board-heading{padding:23px 25px 19px;display:flex;align-items:center;justify-content:space-between;gap:12px}.small-label{font-size:9px;letter-spacing:1.6px;font-weight:700;color:#8a8f7e}.board-heading h2{font:21px var(--serif);margin:5px 0 0}.map-badge{display:flex;align-items:center;gap:6px;border:1px solid #e4e7db;border-radius:20px;font-size:9px;padding:7px 10px;color:#7a8773;white-space:nowrap}.badge-dot{width:5px;height:5px;border-radius:50%;background:#88a074}.map-container{position:relative;background:#ecf0e2;overflow:hidden}#board{display:block;width:100%;height:auto}.map-caption{position:absolute;bottom:12px;left:0;right:0;text-align:center;font-size:8px;letter-spacing:1.5px;color:#8e9a80;pointer-events:none}.map-caption span{color:#bb9b5f;margin-right:8px}.journey-footer{min-height:78px;display:flex;align-items:center;gap:14px;padding:17px 24px}.journey-info{display:grid;grid-template-columns:24px auto;gap:3px 8px;flex:1}.mini-flag{grid-row:1 / 3;font-size:25px;color:var(--orange)}.journey-info strong{font-size:11px;font-weight:600}.journey-info>span:last-child{font-size:10px;color:var(--muted)}.progress-track{width:100px;height:5px;border-radius:5px;background:#edf0e7;overflow:hidden}#progress-fill{height:100%;width:0;background:var(--green);transition:width .15s}#progress-value{font-size:10px;color:#798571;white-space:nowrap;font-variant-numeric:tabular-nums}.challenge-card{border:1px solid var(--line);border-radius:13px;background:var(--white);padding:23px 25px}.challenge-top{display:flex;justify-content:space-between;align-items:center}.sparkles{color:#b99055;font-size:26px;line-height:18px}.challenge-card h2{font:25px var(--serif);margin:18px 0 8px;letter-spacing:-.4px}.challenge-description{font-size:11px;color:var(--muted);margin:0}.question-number{font-size:9px;letter-spacing:1.6px;font-weight:650;color:#a4a799;text-align:center;margin-top:31px}.equation{display:flex;justify-content:center;align-items:center;gap:12px;font-size:44px;font-weight:550;letter-spacing:-2px;margin:13px 0 28px;min-height:59px}.multiply,.equals{font-size:29px;color:#939d89;letter-spacing:0;font-weight:400}.question-mark{color:var(--orange)}#answer-form label{display:block;font-size:10px;font-weight:600;color:#737d6c;margin-bottom:9px}#answer{height:49px;width:100%;border:1px solid #dedfd3;background:#fcfcf8;border-radius:7px;padding:0 13px;font-size:14px;color:var(--ink);outline:none}#answer::placeholder{color:#b1b3a7;font-size:12px}#answer:focus{border-color:var(--green);box-shadow:0 0 0 3px #42634c12}#answer[aria-invalid=true]{border-color:var(--orange)}.answer-button{width:100%;background:var(--orange);color:white;margin-top:12px;font-size:12px;box-shadow:0 3px 0 #a95232}.answer-button>span{font-size:19px}.answer-button:disabled{opacity:.65}.feedback{font-size:10px;text-align:center;line-height:1.6;min-height:32px;margin:12px -7px 1px;color:#909486}.feedback.success{color:var(--green);font-weight:600}.feedback.retry{color:#b96943}.hint-button{border:0;background:none;color:#7b8472;font-size:11px;display:block;margin:9px auto 0;padding:7px}.hint-button>span{font-size:15px;margin-right:4px;color:#b3a174}.hint{background:#f2f3e8;border-radius:7px;padding:12px;font-size:12px;line-height:1.7;margin-top:8px;color:#65745b}.challenge-divider{border-top:1px dashed #e2e4d7;margin:22px 0 18px}.quest-stats{display:grid;grid-template-columns:1fr 1fr}.quest-stats>div{display:grid;grid-template-columns:20px auto;gap:3px 7px;padding-left:11px}.quest-stats>div+div{border-left:1px solid #e5e8de;padding-left:26px}.stat-icon{color:#b49453;grid-row:1 / 3;font-size:24px;align-self:center}.flame{color:var(--orange)}.quest-stats strong{font-size:19px;font-weight:600;line-height:1.2}.quest-stats div>span:last-child{font-size:8px;color:var(--muted);white-space:nowrap}.knight-note{display:flex;align-items:center;gap:12px;margin:20px 8px 0}.note-shield{border:1px solid #b6c3a5;border-radius:8px 8px 14px 14px;font-size:26px;color:#879978;min-width:30px;height:36px;display:grid;place-items:center}.knight-note p{font-size:10px;line-height:1.8;color:#979b8e;margin:0}.knight-note strong{font-weight:550;color:#738269}.settings-card{display:grid;grid-template-columns:1.1fr 1.6fr 1fr;gap:26px 28px;background:#f0f1e9;border:1px solid #e1e4d7;border-radius:12px;margin-top:25px;padding:23px 25px 13px}.settings-intro h2{font:21px var(--serif);margin:7px 0}.settings-intro p{font-size:10px;color:#929888;margin:0}.settings-card fieldset{border:0;padding:0;margin:0;min-width:0}.settings-card legend{padding:0;margin-bottom:12px;font-size:10px;font-weight:650;width:100%}.settings-card legend span{float:right;color:#88937d;font-size:9px;font-weight:400}.table-grid{display:grid;grid-template-columns:repeat(10,1fr);gap:5px}.table-grid button{aspect-ratio:1;min-width:0;border:1px solid #d4dccb;background:#f9faf5;border-radius:6px;color:#7b8772;font-size:11px;font-weight:600;padding:0}.table-grid button[aria-pressed=true]{background:var(--green);color:#fff;border-color:var(--green)}.table-shortcuts{display:flex;gap:7px;align-items:center;font-size:9px;margin-top:9px;color:#a3aa97;flex-wrap:wrap}.table-shortcuts button{border:0;padding:0;background:none;font-size:9px;color:#7a8970;text-decoration:underline;text-underline-offset:2px}#selection-error{color:#b96643}.length-options{display:grid;grid-template-columns:1fr 1fr;gap:8px}.length-options button{display:flex;align-items:center;flex-direction:column;border:1px solid #dbe0d1;border-radius:7px;padding:8px;background:#f7f8f2;color:#849079;gap:3px}.length-options strong{font-size:17px;font-weight:550}.length-options span{font-size:8px}.length-options button[aria-pressed=true]{border-color:#8fa283;background:#e8edde;color:var(--green);box-shadow:inset 0 0 0 .5px #8fa283}.settings-footer{grid-column:1 / -1;border-top:1px solid #e1e4d7;padding-top:11px;font-size:9px;color:#929b87;display:flex;align-items:center;justify-content:center;gap:6px}.page-footer{display:flex;justify-content:space-between;color:#a0a497;font-size:9px;margin-top:24px}.footer-dot{margin:0 8px;color:#b7bcac}.tile{transition:fill .2s,stroke .2s}.tile.passed{fill:#cbd9b8;stroke:#a1b58d}.tile.current{fill:#f5d797;stroke:#bb9457}.tile-number{font-family:var(--sans);font-weight:600;font-size:11px;fill:#9da586;pointer-events:none}.tile-number.passed{fill:#6c8059}#knight{transition:transform .1s ease-out;filter:drop-shadow(0 4px 2px #52603b20)}.dragon-bob{animation:bob 3s ease-in-out infinite;transform-box:fill-box;transform-origin:center}.dragon-defeated .dragon-bob{animation:defeat 1.6s ease-in forwards}.spell-star{animation:twinkle 1.3s ease-in-out infinite;transform-origin:center;transform-box:fill-box}.board-celebration{position:absolute;inset:0;pointer-events:none}.confetti{position:absolute;width:8px;height:13px;top:-20px;animation:confetti-fall 3s ease-in forwards;border-radius:2px}.toast{position:fixed;bottom:25px;left:50%;transform:translate(-50%,15px);background:var(--ink);color:white;border-radius:9px;padding:12px 20px;font-size:12px;opacity:0;pointer-events:none;transition:.25s;z-index:5}.toast.visible{opacity:1;transform:translate(-50%,0)}dialog{border:1px solid var(--line);border-radius:20px;background:var(--white);color:var(--ink);padding:38px;width:min(480px,calc(100% - 32px));box-shadow:0 20px 100px #263b3340;text-align:center}dialog::backdrop{background:#263b335c;backdrop-filter:blur(5px)}.dialog-close{position:absolute;top:12px;right:15px;border:0;background:none;color:#8c9483;font-size:27px}.dialog-emblem{font-size:45px;color:var(--orange);margin-bottom:12px}dialog .eyebrow{justify-content:center}dialog h2{font:32px/1.2 var(--serif);margin:16px 0}dialog h2 em{color:var(--green)}dialog p{font-size:12px;color:var(--muted);line-height:1.8}dialog ol{text-align:left;padding-left:20px;font-size:12px;color:#7c8773;line-height:1.8}dialog li{margin-bottom:13px}dialog li strong{color:var(--ink)}dialog .answer-button{margin-top:24px}.win-medal{font-size:46px;margin:0 auto 23px;background:#f4e8c6;color:#b69a45;border:6px double #d5bc74;border-radius:50%;width:86px;height:86px;display:grid;place-items:center}.win-stats{display:flex;justify-content:space-around;background:#f0f3e9;border-radius:10px;padding:18px 8px;margin-top:23px}.win-stats>div{display:flex;flex-direction:column;gap:6px}.win-stats strong{font-size:23px;font-weight:600}.win-stats span{font-size:9px;color:#8a967e}.shake{animation:shake .3s}.spell-flash{animation:flash 1s ease-out}
@keyframes bob{50%{transform:translateY(-4px) rotate(2deg)}}@keyframes twinkle{50%{opacity:.3;transform:scale(.8)}}@keyframes defeat{30%{transform:rotate(-12deg) translateY(-25px)}65%{transform:rotate(12deg) scale(.9)}100%{transform:translateY(-160px) scale(.1);opacity:0}}@keyframes confetti-fall{to{transform:translateY(650px) rotate(700deg);opacity:0}}@keyframes shake{25%,75%{transform:translateX(-4px)}50%{transform:translateX(4px)}}@keyframes flash{0%{opacity:0;transform:scale(.2)}40%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(1.5)}}
@media(min-width:1450px){main{padding-top:55px}.intro{margin-bottom:40px}.game-layout{grid-template-columns:minmax(0,1fr) 340px}.challenge-card{padding:28px}.challenge-card h2{font-size:27px}.question-number{margin-top:40px}.equation{margin-bottom:35px}.feedback{margin-top:18px}.challenge-divider{margin-top:29px}.settings-card{margin-top:30px}}
@media(max-width:1100px){.site-header{padding:0 30px}main{padding:33px 30px 22px}h1{font-size:34px}.game-layout{grid-template-columns:minmax(0,1fr) 280px;gap:18px}.challenge-card{padding:20px}.challenge-card h2{font-size:23px}.board-heading{padding:18px}.map-badge{font-size:8px}.progress-track{width:60px}.journey-footer{padding:15px}.settings-card{grid-template-columns:1fr 1.6fr;gap:22px}.settings-intro{grid-row:1 / 3}.length-settings{grid-column:2}.length-options{max-width:250px}.header-tag{margin:0;font-size:8px}.table-grid button{max-height:38px}.settings-footer{grid-column:1 / -1}.question-number{margin-top:24px}.equation{font-size:40px;gap:10px}}
@media(max-width:800px){.header-tag{display:none}.site-header{height:75px}.game-layout{grid-template-columns:1fr}.quest-sidebar{display:grid;grid-template-columns:1fr}.challenge-card{display:grid;grid-template-columns:1fr 1fr;gap:0 25px}.challenge-top{grid-column:1 / -1}.challenge-card h2{grid-column:1}.challenge-description{grid-column:1}.question-number{grid-column:1;margin-top:22px}.equation{grid-column:1;margin:10px 0 0}#answer-form{grid-column:2;grid-row:2 / 6;align-self:center}.feedback{grid-column:2;grid-row:6;margin:5px 0 0}.hint-button{grid-column:1;grid-row:6}.hint{grid-column:1 / -1}.challenge-divider{grid-column:1 / -1;margin:15px 0}.quest-stats{grid-column:1 / -1;width:270px;justify-self:center}.knight-note{justify-content:center;margin-top:12px}.board-heading h2{font-size:23px}.settings-card{margin-top:20px}h1{font-size:32px}.intro{gap:15px}.new-game{padding:0 14px;white-space:nowrap}.journey-footer{padding:20px}.progress-track{width:140px}}
@media(max-width:560px){.site-header{padding:0 19px;height:69px}.brand{font-size:22px}.brand-icon{width:29px;height:33px;font-size:24px}.header-actions{gap:9px}.text-button{font-size:10px;padding:4px}.help-icon{display:none}main{padding:28px 16px 18px}.intro{align-items:start;flex-direction:column;margin-bottom:22px;gap:14px}h1{font-size:31px;letter-spacing:-.8px}.intro .eyebrow{font-size:8px}.intro p{font-size:11px}.new-game{margin-top:0;min-height:39px;font-size:11px}.board-heading{padding:16px 14px}.board-heading h2{font-size:19px}.small-label{font-size:8px}.map-badge{padding:6px 8px;font-size:7px;gap:4px}.journey-footer{padding:15px 12px;gap:9px;min-height:70px}.journey-info{gap:3px 5px;grid-template-columns:18px auto}.journey-info strong{font-size:10px}.journey-info>span:last-child{font-size:8px}.mini-flag{font-size:22px}.progress-track{width:60px}#progress-value{font-size:8px}.map-caption{bottom:7px;font-size:5px}.challenge-card{padding:18px 17px;gap:0 18px}.challenge-card h2{font-size:21px;margin-top:13px}.challenge-description{font-size:9px;line-height:1.6}.equation{font-size:32px;gap:7px;min-height:48px}.multiply,.equals{font-size:23px}.question-number{font-size:8px;margin-top:20px}.feedback{font-size:9px;min-height:43px;align-self:center}.answer-button{font-size:10px;gap:7px;min-height:42px}#answer{height:44px;font-size:14px;padding:0 10px}#answer::placeholder{font-size:10px}.hint-button{font-size:10px}.settings-card{padding:20px 17px 12px;display:flex;flex-direction:column;gap:21px}.table-grid{gap:6px}.table-grid button{font-size:12px;max-height:none}.settings-intro h2{font-size:23px}.settings-intro p{font-size:11px}.settings-card legend{font-size:11px}.table-shortcuts button{font-size:10px}.length-options{max-width:none}.length-options button{flex-direction:row;justify-content:center;gap:10px;padding:10px}.length-options span{font-size:10px}.settings-footer{font-size:8px;line-height:1.6}.page-footer{flex-direction:column;align-items:center;gap:10px;font-size:8px;margin-top:22px}.toast{width:calc(100% - 32px);text-align:center;font-size:11px}dialog{padding:32px 25px}dialog h2{font-size:29px}.tile-number{font-size:12px}}
.adventure-actions{display:flex;align-items:center;gap:12px;margin-top:10px}.adventure-actions .new-game{margin-top:0}.choose-tables{border:1px solid #cbd3c0;background:#f9faf4;color:var(--green);padding:0 15px;font-size:11px;white-space:nowrap}.choose-tables>span{font-size:20px}.settings-card{scroll-margin:24px}.settings-card:focus-within{border-color:#9cae8d;box-shadow:0 0 0 3px #42634c0b}
@media(max-width:1100px) and (min-width:561px){.adventure-actions{flex-direction:column;align-items:stretch;gap:9px}.choose-tables{min-height:36px}}
@media(max-width:560px){.adventure-actions{margin-top:0;width:100%;gap:9px}.adventure-actions button{flex:1;padding:0 9px;min-height:40px;font-size:10px;gap:7px}.table-grid{grid-template-columns:repeat(5,1fr)}.table-grid button{aspect-ratio:auto;min-height:42px}}
#settings-dialog{width:min(560px,calc(100% - 32px));max-height:calc(100dvh - 32px);overflow-y:auto;padding:30px}#settings-dialog .settings-card{display:flex;flex-direction:column;gap:24px;border:0;background:none;margin:0;padding:12px 0 0;text-align:left;box-shadow:none}#settings-dialog .settings-intro h2{font-size:28px}#settings-dialog .settings-intro p{font-size:12px}#settings-dialog .settings-card legend{font-size:12px}#settings-dialog .table-grid{grid-template-columns:repeat(5,1fr);gap:9px}#settings-dialog .table-grid button{aspect-ratio:auto;min-height:44px;font-size:14px;max-height:none}#settings-dialog .table-shortcuts button{font-size:11px}#settings-dialog .length-options{max-width:none}#settings-dialog .length-options button{padding:12px}#settings-dialog .length-options span{font-size:10px}#settings-dialog .settings-footer{display:none}#settings-dialog .settings-dialog-note{font-size:10px;margin:16px 0 0}.toast{z-index:10}
#retry-dialog{width:min(360px,calc(100% - 36px));max-height:calc(100dvh - 32px);overflow-y:auto;padding:17px 30px 24px;border:1px solid #e3e6d5;border-radius:26px;animation:retry-arrive .38s cubic-bezier(.2,.85,.35,1.3)}
#retry-dialog::backdrop{background:#344b3833;backdrop-filter:blur(3px)}
.retry-art{width:210px;max-width:100%;margin:0 auto 5px}.retry-art svg{display:block;width:100%;overflow:visible}
#retry-dialog .eyebrow{font-size:8px;letter-spacing:1.6px;color:#96a17f}
#retry-dialog h2{font-size:32px;margin:12px 0 7px;color:var(--green)}
#retry-dialog p{font-size:12px;line-height:1.75;margin:0 0 19px;color:#828d77}
#retry-dismiss{width:100%;background:#edf1e3;color:var(--green);font-size:11px;min-height:42px;border:1px solid #d9e2cc;border-radius:10px}
#retry-dismiss>span{font-size:20px}#retry-dismiss:focus-visible{outline:2px solid #a8b895;outline-offset:3px}
.retry-knight{transform-origin:120px 128px;animation:retry-wobble 1.15s ease-in-out .1s both}
.retry-question{transform-origin:172px 32px;animation:retry-question .8s ease-in-out .2s both}
.retry-twinkles{animation:retry-sparkle 1.1s ease-in-out .25s both}
.retry-countdown{height:3px;width:48px;margin:19px auto 0;background:#edf0e6;border-radius:4px;overflow:hidden}.retry-countdown span{display:block;width:100%;height:100%;background:#c3cfaf;transform-origin:left;animation:retry-countdown 2.2s linear forwards}
#retry-dialog.retry-leaving{animation:retry-depart .18s ease-in forwards}#retry-dialog.retry-leaving::backdrop{background:transparent;backdrop-filter:none;transition:background .18s}
@keyframes retry-arrive{from{opacity:0;transform:translateY(18px) scale(.88)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes retry-depart{to{opacity:0;transform:translateY(8px) scale(.96)}}
@keyframes retry-wobble{0%,100%{transform:rotate(0)}20%{transform:rotate(-12deg) translateY(2px)}45%{transform:rotate(9deg) translateY(-4px)}65%{transform:rotate(-5deg)}82%{transform:rotate(3deg)}}
@keyframes retry-question{0%{opacity:0;transform:scale(.3) rotate(-20deg)}60%{opacity:1;transform:scale(1.15) rotate(8deg)}100%{opacity:1;transform:scale(1) rotate(0)}}
@keyframes retry-sparkle{0%,100%{opacity:.7}45%{opacity:1;transform:translateY(-5px)}}
@keyframes retry-countdown{to{transform:scaleX(0)}}
.tile-number{font-size:20px;fill:#7d8c69}#knight{transition:none}.length-options{grid-template-columns:repeat(4,minmax(0,1fr));max-width:none}.length-options button{padding:9px 4px}.length-options span{font-size:8px;white-space:nowrap}.length-options strong{font-size:20px}#settings-dialog .length-options button{padding:12px 4px}#settings-dialog .length-options span{font-size:9px}
@media(max-width:560px){.length-options button{flex-direction:column;gap:4px}.length-options span{font-size:9px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.retry-countdown{display:none}}
