:root{color-scheme:light dark;--paper: #f7f2e7;--paper-raised: #fffdf7;--ink: #23211c;--ink-soft: #6b6557;--ink-faint: #a49c89;--rule: #e0d7c2;--sea: #c9dfea;--sea-deep: #a9cadb;--land: #ece2cc;--land-context: #ded5c1;--coast: #9d947f;--river: #2f7fae;--river-faint: #8fbdd6;--ridge: #a08f6d;--accent: #b4551f;--accent-soft: #f0dfd0;--good: #1d7a4c;--good-soft: #d9ecdf;--bad: #b3261e;--bad-soft: #f6dcd9;--shadow: 0 1px 2px rgba(35, 33, 28, .07), 0 6px 20px rgba(35, 33, 28, .07);--radius: 14px;--sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--serif: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, "Times New Roman", serif}:root:not([data-theme=light]){@media(prefers-color-scheme:dark){--paper: #14181d;--paper-raised: #1c222a;--ink: #e9e5db;--ink-soft: #a0a79f;--ink-faint: #6d7680;--rule: #2b333c;--sea: #16242e;--sea-deep: #1d3340;--land: #333b3c;--land-context: #262d33;--coast: #63707a;--river: #58a8d4;--river-faint: #3c6479;--ridge: #7d8a83;--accent: #e08a52;--accent-soft: #33261d;--good: #5dc98d;--good-soft: #17301f;--bad: #f0857c;--bad-soft: #35201f;--shadow: 0 1px 2px rgba(0, 0, 0, .3), 0 6px 20px rgba(0, 0, 0, .35)}}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;overscroll-behavior-y:contain}#app{max-width:680px;margin:0 auto;padding:16px 16px calc(28px + env(safe-area-inset-bottom));padding-inline:max(16px,env(safe-area-inset-left))}button{font:inherit;color:inherit;cursor:pointer}.topbar{display:flex;align-items:center;gap:12px;margin:2px 0 14px}.topbar h1{margin:0;font:600 17px/1.2 var(--sans);letter-spacing:.01em}.back{flex:none;width:40px;height:40px;border:1px solid var(--rule);border-radius:50%;background:var(--paper-raised);font-size:19px;line-height:1;display:grid;place-items:center;transition:background .15s}.back:hover{background:var(--accent-soft)}.all-maps,.home-all-maps{border:0;background:none;color:var(--accent);padding:10px 0;font-size:14px}.all-maps{margin-left:auto;white-space:nowrap}.home-all-maps{margin-bottom:10px}.selector-heading{margin:16px 0 24px}.selector-heading .brand{margin-bottom:20px}.selector-heading .subtitle{max-width:440px;margin-bottom:0}.deck-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.deck-card{display:block;min-width:0;width:100%;padding:0;overflow:hidden;text-align:left;border:1px solid var(--rule);border-radius:var(--radius);background:var(--paper-raised);box-shadow:var(--shadow);transition:border-color .15s}.deck-card:hover{border-color:var(--accent)}.deck-card .deck-preview{width:100%;height:220px;background:var(--sea)}.deck-copy{display:grid;gap:5px;padding:18px;border-top:1px solid var(--rule)}.deck-title{font:400 29px/1.15 var(--serif)}.deck-subtitle{color:var(--ink-soft);font-size:14px}.deck-count{color:var(--ink-faint);font-size:13px}.deck-action{margin-top:9px;color:var(--accent);font-size:14px;font-weight:600}@media(max-width:540px){.deck-cards{grid-template-columns:minmax(0,1fr)}.deck-card .deck-preview{height:230px}}.brand{display:flex;align-items:center;gap:8px;color:var(--accent);margin-bottom:26px}.brand-mark{font-size:15px}.brand-name{font:600 13px/1 var(--sans);letter-spacing:.18em;text-transform:uppercase}.title{margin:0;font:400 clamp(32px,9vw,44px)/1.08 var(--serif);letter-spacing:-.015em}.subtitle{margin:8px 0 26px;color:var(--ink-soft);font-size:15px}.meter{height:8px;border-radius:99px;background:var(--rule);overflow:hidden}.meter-fill{height:100%;border-radius:99px;background:linear-gradient(90deg,var(--good),color-mix(in srgb,var(--good) 55%,var(--river)));transition:width .5s ease}.meter-caption{margin:9px 0 26px;font-size:13.5px;color:var(--ink-soft)}.meter-caption strong{color:var(--ink)}.modes{display:grid;gap:10px}.mode{display:grid;grid-template-columns:1fr auto;gap:2px 12px;width:100%;padding:16px 18px;text-align:left;border:1px solid var(--rule);border-radius:var(--radius);background:var(--paper-raised);box-shadow:var(--shadow);transition:transform .12s ease,border-color .15s}.mode:hover{border-color:var(--accent)}.mode:active{transform:scale(.985)}.mode-label{font-weight:600;font-size:17px}.mode-note{grid-column:1;color:var(--ink-soft);font-size:13.5px}.mode-best{grid-row:1 / span 2;align-self:center;padding:4px 10px;border-radius:99px;background:var(--good-soft);color:var(--good);font-size:12.5px;font-weight:600;white-space:nowrap}.mode-learn .mode-label{color:var(--accent)}.hint{margin:22px 0 18px;color:var(--ink-faint);font-size:13px;line-height:1.55}.map-panel{background:var(--sea);border:1px solid var(--rule);border-radius:var(--radius);overflow:hidden;margin-bottom:14px}.map-tools{display:flex;align-items:center;gap:6px;padding:8px 10px;background:var(--paper-raised);border-bottom:1px solid var(--rule)}.zoom-note{flex:1;min-width:0;font-size:11px;color:var(--ink-soft)}.zoom-button,.zoom-reset{flex:none;min-width:40px;min-height:40px;border:1px solid var(--rule);border-radius:8px;background:var(--paper)}.zoom-button{font-size:21px}.zoom-button:disabled{opacity:.35;cursor:default}.zoom-reset{padding:8px;font-size:12px}.map-scroll{width:100%;max-height:54vh;overflow:auto;overscroll-behavior:contain}.map{display:block;width:100%;height:auto;touch-action:manipulation}.map-scroll .map{max-height:none;margin-inline:auto}.sea{fill:var(--sea)}.land{stroke:var(--coast);stroke-width:.9;stroke-linejoin:round}.land-quiz{fill:var(--land)}.land-context{fill:var(--land-context);stroke-opacity:.55}.river{fill:none;stroke-linecap:round;stroke-linejoin:round}.river-major{stroke:var(--river);stroke-width:2.6}.river-minor{stroke:var(--river-faint);stroke-width:1.4;opacity:.75}.ridge path{fill:var(--ridge);opacity:.8}.region{fill:var(--ridge);fill-opacity:.17;stroke:var(--ridge);stroke-width:1.3;stroke-dasharray:4 3}.route{fill:none;stroke-linejoin:round;stroke-linecap:round}.route-dashed{stroke:var(--ink-soft);stroke-width:3;stroke-dasharray:7 4}.route-waterway{stroke:var(--river);stroke-width:3}.numbered{cursor:pointer}.number-disc{fill:var(--paper-raised);stroke:var(--accent);stroke-width:1.6}.number-hit{fill:transparent;stroke:none}.number-connector{stroke:var(--accent);stroke-width:1.3}.number-location{fill:var(--accent);stroke:var(--paper-raised);stroke-width:1}.numbered text{fill:var(--ink);font:600 15px var(--sans);text-anchor:middle}.numbered.is-active .number-disc{fill:var(--accent);stroke:var(--accent)}.numbered.is-active text{fill:#fff}.numbered:focus-visible{outline:none}.numbered:focus-visible .number-disc{stroke:var(--ink);stroke-width:4}.mark-layer{pointer-events:none}.mark-area{fill-opacity:.42;stroke-width:2.5;stroke-linejoin:round}.mark-line{fill:none;stroke-width:7;stroke-linecap:round;stroke-linejoin:round;opacity:.75}.mark-halo{fill-opacity:.3}.mark-dot{stroke:var(--paper-raised);stroke-width:2.5}.mark-correct .mark-area{fill:var(--good);stroke:var(--good)}.mark-correct .mark-line{stroke:var(--good)}.mark-correct .mark-halo{stroke:var(--good);fill:var(--good)}.mark-correct .mark-dot{fill:var(--good)}.mark-wrong .mark-area{fill:var(--bad);stroke:var(--bad)}.mark-wrong .mark-line{stroke:var(--bad)}.mark-wrong .mark-halo{stroke:var(--bad);fill:var(--bad)}.mark-wrong .mark-dot{fill:var(--bad)}.mark-reveal .mark-area{fill:var(--accent);stroke:var(--accent)}.mark-reveal .mark-line{stroke:var(--accent)}.mark-reveal .mark-halo{stroke:var(--accent);fill:var(--accent)}.mark-reveal .mark-dot{fill:var(--accent)}.mark-label{font:600 22px var(--serif);text-anchor:middle;fill:var(--ink);paint-order:stroke}.mark-label-halo{stroke:var(--paper);stroke-width:6;stroke-linejoin:round;opacity:.92}.tap-ring{fill:none;stroke:var(--ink);stroke-width:2;opacity:.55}.tap-cross{stroke:var(--ink);stroke-width:2.6;stroke-linecap:round;opacity:.75}.land-water{fill:var(--sea)}.detail-outline rect{fill:none;stroke:var(--accent);stroke-width:1.4;stroke-dasharray:6 4;pointer-events:none}.detail-outline text{fill:var(--accent);font:600 13px var(--sans);text-anchor:middle;pointer-events:none}.map.is-detail .detail-outline,.deck-preview .detail-outline{display:none}.map.is-detail .land{stroke-width:calc(.9 * var(--u, 1))}.map.is-detail .river-major{stroke-width:calc(2.6 * var(--u, 1))}.map.is-detail .river-minor{stroke-width:calc(1.4 * var(--u, 1))}.map.is-detail .region{stroke-width:calc(1.3 * var(--u, 1));stroke-dasharray:calc(4 * var(--u, 1)) calc(3 * var(--u, 1))}.map.is-detail .mark-area{stroke-width:calc(2.5 * var(--u, 1))}.map.is-detail .mark-line{stroke-width:calc(7 * var(--u, 1))}.detail-button{flex:none;max-width:40%}.mark{animation:pop .28s ease-out}@keyframes pop{0%{opacity:0}to{opacity:1}}@media(prefers-reduced-motion:reduce){.mark{animation:none}.meter-fill,.progressbar-fill{transition:none}}.progressbar{position:relative;display:flex;justify-content:space-between;align-items:center;gap:10px;padding:9px 14px;margin-bottom:14px;border-radius:99px;background:var(--paper-raised);border:1px solid var(--rule);overflow:hidden;font-size:13px;font-weight:600}.progressbar-fill{position:absolute;inset:0 auto 0 0;background:var(--accent-soft);transition:width .35s ease}.progressbar-text,.progressbar-score{position:relative}.progressbar-score{color:var(--ink-soft)}.prompt{margin:0 0 14px;font:400 clamp(21px,5.5vw,26px)/1.25 var(--serif)}.prompt strong{font-weight:600;color:var(--accent)}.choices{display:grid;grid-template-columns:repeat(2,1fr);gap:9px;margin-bottom:14px}@media(max-width:380px){.choices{grid-template-columns:1fr}}.choice{padding:15px 12px;min-height:56px;border:1px solid var(--rule);border-radius:12px;background:var(--paper-raised);font-size:15.5px;font-weight:500;box-shadow:var(--shadow);transition:transform .12s ease,border-color .15s}.choice:hover:not(:disabled){border-color:var(--accent)}.choice:active:not(:disabled){transform:scale(.98)}.choice:disabled{opacity:.55;box-shadow:none;cursor:default}.choice.is-right{opacity:1;background:var(--good-soft);border-color:var(--good);color:var(--good);font-weight:700}.choice.is-wrong{opacity:1;background:var(--bad-soft);border-color:var(--bad);color:var(--bad)}.answer{padding:18px;border-radius:var(--radius);border:1px solid var(--rule);border-left:4px solid var(--rule);background:var(--paper-raised);box-shadow:var(--shadow);animation:rise .22s ease-out}@keyframes rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.answer{animation:none}}.answer-right{border-left-color:var(--good)}.answer-wrong{border-left-color:var(--bad)}.answer-verdict{margin:0 0 4px;font-size:12.5px;font-weight:700;letter-spacing:.09em;text-transform:uppercase}.answer-right .answer-verdict{color:var(--good)}.answer-wrong .answer-verdict{color:var(--bad)}.answer-name{margin:0;font:400 26px/1.15 var(--serif)}.aka{margin:3px 0 0;color:var(--ink-faint);font-size:13.5px;font-style:italic}.answer-fact{margin:10px 0 0;color:var(--ink-soft);font-size:15px;line-height:1.55}.answer-note{margin:12px 0 0;padding:10px 12px;border-radius:10px;background:var(--accent-soft);color:var(--ink-soft);font-size:13.5px;line-height:1.5}.answer .primary{margin-top:16px}.primary,.secondary{display:block;width:100%;padding:15px;min-height:52px;border-radius:12px;font-size:16px;font-weight:600;border:1px solid transparent;transition:transform .12s ease,filter .15s}.primary{background:var(--accent);color:#fff;box-shadow:var(--shadow)}.primary:hover{filter:brightness(1.06)}.primary:active,.secondary:active{transform:scale(.985)}.secondary{background:var(--paper-raised);border-color:var(--rule)}.secondary:hover{border-color:var(--accent)}.text-button{display:block;width:100%;padding:12px;border:0;background:none;color:var(--ink-faint);font-size:14px;text-decoration:underline;text-underline-offset:3px}.text-button:hover{color:var(--accent)}:where(button):focus-visible{outline:2px solid var(--accent);outline-offset:2px}.results{text-align:center;padding:26px 18px 22px;border-radius:var(--radius);border:1px solid var(--rule);background:var(--paper-raised);box-shadow:var(--shadow);margin-bottom:18px}.results-grade{margin:0;font:400 clamp(52px,15vw,68px)/1 var(--serif);color:var(--accent);letter-spacing:-.02em}.results-score{margin:10px 0 0;font-size:26px;font-weight:600}.results-score span{color:var(--ink-faint);font-weight:400}.results-meta{margin:4px 0 0;color:var(--ink-soft);font-size:14px}.review{list-style:none;margin:0 0 18px;padding:0;border:1px solid var(--rule);border-radius:var(--radius);overflow:hidden;background:var(--paper-raised)}.review li{display:grid;grid-template-columns:26px 1fr auto;align-items:center;gap:10px;padding:11px 14px;border-bottom:1px solid var(--rule);font-size:15px}.review li:last-child{border-bottom:0}.review-mark{font-weight:700}.review li.is-right .review-mark{color:var(--good)}.review li.is-wrong .review-mark{color:var(--bad)}.review li.is-wrong .review-name{font-weight:600}.review-note{color:var(--ink-faint);font-size:12.5px;text-align:right}.actions{display:grid;gap:9px}.detail{display:flex;gap:14px;align-items:flex-start;padding:16px;margin-bottom:16px;min-height:92px;border-radius:var(--radius);border:1px solid var(--rule);background:var(--paper-raised);box-shadow:var(--shadow)}.detail-number{flex:none;width:34px;height:34px;margin:2px 0 0;display:grid;place-items:center;border-radius:50%;background:var(--accent);color:#fff;font-size:15px;font-weight:700}.detail-name{margin:0;font:400 22px/1.2 var(--serif)}.detail-fact{margin:7px 0 0;color:var(--ink-soft);font-size:14.5px;line-height:1.55}.detail-empty{margin:0;color:var(--ink-faint);font-size:14.5px}.legend section{margin-bottom:20px}.legend h3{margin:0 0 8px;font-size:11.5px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-faint)}.legend ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:7px}.legend-row{display:flex;align-items:center;gap:10px;width:100%;padding:10px 12px;text-align:left;border:1px solid var(--rule);border-radius:10px;background:var(--paper-raised);font-size:14.5px;transition:border-color .15s,background .15s}.legend-row:hover{border-color:var(--accent)}.legend-row.is-active{background:var(--accent);border-color:var(--accent);color:#fff}.legend-number{flex:none;width:22px;height:22px;display:grid;place-items:center;border-radius:50%;background:var(--accent-soft);color:var(--accent);font-size:12px;font-weight:700}.legend-row.is-active .legend-number{background:#ffffff38;color:#fff}.legend-row.is-learned .legend-name:after{content:" ✓";color:var(--good);font-weight:700}.legend-row.is-active.is-learned .legend-name:after{color:#fff}.stripe{display:block;background:var(--ink)}.stripe-line{fill:#000;opacity:.72}.screen-quizdeck .back{width:44px;height:44px}.screen-quizdeck .all-maps,.screen-quizdeck .home-all-maps,.screen-quizdeck .text-button{min-height:44px}.prompt-question{font-size:clamp(19px,5vw,23px)}.prompt-topic{margin:0 0 4px;font:700 11.5px/1.2 var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-faint)}.prompt-text{margin:0}.quiz-choices{display:grid;gap:9px;margin-bottom:14px}.quiz-choice{display:flex;align-items:center;gap:12px;width:100%;text-align:left;line-height:1.4}.choice-key{flex:none;width:28px;height:28px;display:grid;place-items:center;border-radius:50%;background:var(--accent-soft);color:var(--accent);font-size:13px;font-weight:700}.quiz-choice.is-right .choice-key{background:var(--good);color:var(--paper-raised)}.quiz-choice.is-wrong .choice-key{background:var(--bad);color:var(--paper-raised)}.answer-correct{margin:6px 0 0;font:400 20px/1.3 var(--serif)}.topic-cards{display:grid;gap:14px}.topic-card{padding:18px;border:1px solid var(--rule);border-radius:var(--radius);background:var(--paper-raised);box-shadow:var(--shadow)}.topic-number,.missed-topic{margin:0;font-size:11.5px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}.topic-title{margin:4px 0 10px;font:400 21px/1.25 var(--serif)}.topic-summary{margin:0;font-size:16px;line-height:1.6}.topic-standing{margin:12px 0;color:var(--ink-faint);font-size:13px}.topic-list{list-style:none;margin:0;padding:0;display:grid;gap:9px}.topic-row{display:flex;align-items:flex-start;gap:12px;width:100%;min-height:56px;padding:14px;text-align:left;border:1px solid var(--rule);border-radius:12px;background:var(--paper-raised);box-shadow:var(--shadow);transition:border-color .15s}.topic-row:hover{border-color:var(--accent)}.topic-row .legend-number{width:28px;height:28px;font-size:13px}.topic-row-copy{display:grid;gap:4px}.topic-row-title{font-size:15px;line-height:1.4}.topic-row-note{color:var(--ink-faint);font-size:12.5px}.missed-heading{margin:0 0 10px;font:400 22px/1.2 var(--serif)}.missed{list-style:none;margin:0 0 18px;padding:0;display:grid;gap:10px}.missed-item{padding:14px 16px;border:1px solid var(--rule);border-left:4px solid var(--bad);border-radius:var(--radius);background:var(--paper-raised)}.missed-prompt{margin:4px 0 8px;font-weight:600}.missed-yours{margin:0;color:var(--bad);font-size:14.5px}.missed-right{margin:2px 0 0;color:var(--good);font-size:14.5px;font-weight:600}.missed-why{margin:8px 0 0;color:var(--ink-soft);font-size:14.5px;line-height:1.55}
