:root{--ivory: #faf7f0;--paper: #f4efe3;--ink: #2a2a2c;--muted: #7a766c;--accent: #5a6876;--accent-soft: rgba(90, 104, 118, .12);--success: #5e7a58;--warn: #b34a3a;--rule: rgba(42, 42, 44, .18);--lock: rgba(42, 42, 44, .55);--scrim: rgba(42, 42, 44, .4)}[data-theme=dark],html[data-theme=dark]{--ivory: #1c1a16;--paper: #221f18;--ink: #ede3ce;--muted: #9a9286;--accent: #98a6b3;--accent-soft: rgba(152, 166, 179, .14);--rule: rgba(237, 227, 206, .22);--lock: rgba(237, 227, 206, .5);--scrim: rgba(0, 0, 0, .55)}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--ivory: #1c1a16;--paper: #221f18;--ink: #ede3ce;--muted: #9a9286;--accent: #98a6b3;--accent-soft: rgba(152, 166, 179, .14);--rule: rgba(237, 227, 206, .22);--lock: rgba(237, 227, 206, .5);--scrim: rgba(0, 0, 0, .55)}}*{box-sizing:border-box}#capture{position:fixed;bottom:0;left:50%;transform:translate(-50%);width:1px;height:1px;opacity:0;padding:0;border:0;font-size:16px;background:transparent;z-index:0}html,body{margin:0;height:100%;background:var(--ivory);color:var(--ink);font-family:Iowan Old Style,Charter,Georgia,serif;font-size:17px;line-height:1.45;-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;overscroll-behavior:contain}.view{min-height:100dvh;display:flex;flex-direction:column}.view[hidden]{display:none!important}.iconBtn{background:transparent;border:none;color:var(--ink);font-family:inherit;font-size:1.4rem;cursor:pointer;padding:.35rem .5rem;border-radius:2px}.iconBtn.ghost{color:var(--muted)}.iconBtn:disabled{color:var(--muted);opacity:.4;cursor:default}#worldList{padding:max(4rem,env(safe-area-inset-top,4rem)) 1.25rem max(env(safe-area-inset-bottom),1rem);max-width:560px;margin:0 auto;width:100%}.appHeader{display:grid;grid-template-columns:1fr auto;align-items:center;padding:.5rem 0 1rem;border-bottom:1px dashed var(--rule);margin-bottom:1.25rem}.appHeader .titleBlock{display:flex;flex-direction:column;gap:.1rem}.appHeader h1{margin:0;font-weight:500;font-size:1.8rem;letter-spacing:.05em;line-height:1.15}.appHeader .sub{color:var(--muted);font-style:italic;font-size:.82rem;letter-spacing:.02em;margin-top:.15rem}.cards{display:grid;grid-template-columns:1fr;gap:.6rem}.cards .card{position:relative;background:var(--paper);border:1px solid var(--rule);border-radius:3px;padding:1rem 1.2rem;cursor:pointer;transition:transform .12s ease,border-color .12s ease;text-align:left;font-family:inherit;color:var(--ink);width:100%}.cards .card:hover{border-color:var(--accent);transform:translate(2px)}.cards .card h2{margin:0 0 .25rem;font-weight:500;font-size:1.15rem;letter-spacing:.03em}.cards .card .desc{color:var(--muted);font-style:italic;font-size:.9rem;margin-bottom:.4rem}.cards .card .meta{color:var(--muted);font-size:.82rem}.cards .card.locked{opacity:.85}.cards .card.locked:after{content:"🔒";position:absolute;top:.85rem;right:.95rem;font-size:1.05rem;color:var(--lock);filter:grayscale(1)}.cards .card.locked h2{color:var(--muted)}#play{min-height:100dvh}.topbar{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.5rem;padding:max(4rem,env(safe-area-inset-top,4rem)) .6rem .55rem;border-bottom:1px dashed var(--rule);background:var(--ivory);position:sticky;top:0;z-index:2}.topbar .worldName{text-align:center;font-size:1.05rem;letter-spacing:.04em;font-weight:500;line-height:1.15}.navBtn{background:transparent;border:none;color:var(--accent);font-family:inherit;font-size:.92rem;cursor:pointer;padding:.4rem .5rem .4rem .3rem;border-radius:2px;letter-spacing:.02em;white-space:nowrap}.navBtn:hover{background:var(--paper)}.navBtn:disabled{color:var(--muted);cursor:default;opacity:.45}.ladderNav{display:flex;align-items:center;justify-content:center;gap:.4rem;padding:.35rem .5rem;background:var(--ivory);border-bottom:1px dashed var(--rule);position:sticky;top:3.1rem;z-index:2}.ladderNav .iconBtn{font-size:1.15rem;padding:.25rem .55rem;color:var(--ink)}.ladderNav .iconBtn:disabled{color:var(--muted);opacity:.35;cursor:default}.ladderNav .pager{background:transparent;border:1px solid var(--rule);border-radius:12px;color:var(--accent);font-family:inherit;font-size:.85rem;cursor:pointer;padding:.18rem .7rem;letter-spacing:.04em}.ladderNav .pager:hover{background:var(--paper);border-color:var(--accent)}.pagerSheet{position:sticky;top:5.6rem;background:var(--paper);border-bottom:1px dashed var(--rule);padding:.7rem;z-index:2;max-height:40vh;overflow-y:auto;display:grid;grid-template-columns:repeat(auto-fit,minmax(2.4rem,1fr));gap:.4rem;max-width:380px;margin:0 auto}.pagerSheet[hidden]{display:none!important}.pagerSheet button{position:relative;aspect-ratio:1;display:inline-flex;align-items:center;justify-content:center;background:transparent;border:1px solid var(--rule);color:var(--ink);font-family:inherit;font-size:.95rem;font-variant-numeric:tabular-nums;cursor:pointer;border-radius:4px;padding:0;transition:border-color .15s ease,background .15s ease,color .15s ease}.pagerSheet button:hover{border-color:var(--accent)}.pagerSheet button.inProgress{border-color:var(--accent);color:var(--accent)}.pagerSheet button.solved{border-color:var(--success);color:var(--success)}.pagerSheet button.solved:after{content:"✓";position:absolute;top:1px;right:3px;font-size:.55rem;line-height:1;color:var(--success)}.pagerSheet button.active{background:var(--accent);color:var(--ivory);border-color:var(--accent)}.pagerSheet button.active.solved:after{color:var(--ivory)}.board{flex:1;display:flex;align-items:center;justify-content:center;padding:1rem;min-height:0}ol.ladder{list-style:none;padding:0;margin:0;width:100%;max-width:420px}ol.ladder>li{display:flex;flex-direction:column;align-items:center;padding:.35rem 0}ol.ladder>li.active{cursor:pointer}ol.ladder .word{font-size:1.7rem;letter-spacing:.18em;font-weight:500;font-variant-numeric:tabular-nums;color:var(--ink)}ol.ladder .word.endpoint{color:var(--muted)}ol.ladder .word .ch{display:inline-block;min-width:1.25rem;text-align:center}ol.ladder .word .ch.changed{color:var(--accent);font-weight:600}ol.ladder .definition{margin-top:.2rem;color:var(--muted);font-style:italic;font-size:.82rem;max-width:320px;text-align:center;opacity:0;transform:translateY(-4px);transition:opacity .25s ease,transform .25s ease}ol.ladder li.filled .definition,ol.ladder li.active .definition.visible{opacity:1;transform:translateY(0)}ol.ladder .input{display:inline-flex;gap:.05rem;align-items:center}ol.ladder .slot{display:inline-block;min-width:1.25rem;text-align:center;font-size:1.7rem;letter-spacing:.18em;border-bottom:1px solid var(--rule);padding:0 .1rem}ol.ladder .slot.caret{color:var(--accent);font-weight:700;background-color:var(--accent-soft);border-bottom:3px solid var(--accent);border-radius:2px 2px 0 0;animation:caretPulse .85s ease-in-out infinite}ol.ladder .slot.typed{color:var(--ink)}ol.ladder .slot.hinted{color:var(--accent)}@keyframes caretPulse{0%,to{background-color:var(--accent-soft);border-bottom-color:var(--accent)}50%{background-color:transparent;border-bottom-color:var(--accent-soft)}}ol.ladder li.invalid .input{animation:shake .32s ease-out}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-6px);color:var(--warn)}75%{transform:translate(6px);color:var(--warn)}}ol.ladder li.solved-card{margin-top:.9rem;padding-top:.6rem;border-top:1px dashed var(--rule);display:flex;flex-direction:column;align-items:center;gap:.2rem}.solved-mark{color:var(--success);font-style:italic;font-size:1.05rem;letter-spacing:.05em;font-weight:500}.solved-note{color:var(--muted);font-style:italic;font-size:.86rem;letter-spacing:.02em}.solved-tap-hint{color:var(--accent);font-style:italic;font-size:.78rem;letter-spacing:.02em;margin-top:.4rem;opacity:.85}.bottombar #nextLadderCta{min-width:8.5rem}.confirmCard{max-width:380px;width:calc(100% - 2rem);margin-top:18vh;padding:1.2rem 1.4rem 1.3rem}.confirmCard header{margin-bottom:.4rem}.confirmCard h2{margin:0;font-weight:500;font-size:1.15rem;letter-spacing:.04em}.confirmCard .confirmMessage{margin:.6rem 0 1.2rem;color:var(--ink);font-size:.98rem;line-height:1.5;white-space:pre-line}.confirmCard .confirmActions{display:flex;justify-content:flex-end;gap:.6rem;align-items:center}.confirmCard .confirmActions button{font-family:inherit;font-size:.95rem;cursor:pointer;padding:.55rem 1.1rem;border-radius:2px;letter-spacing:.04em}.confirmCard .confirmActions button.ghost{background:transparent;color:var(--muted);border:1px solid var(--rule)}.confirmCard .confirmActions button.ghost:hover{border-color:var(--accent);color:var(--accent)}.confirmCard .confirmActions button.confirmPrimary{background:var(--accent);color:var(--ivory);border:none}.confirmCard .confirmActions button.confirmPrimary.danger{background:transparent;color:var(--warn);border:1px solid var(--warn)}.confirmCard .confirmActions button.confirmPrimary.danger:hover{background:var(--warn);color:var(--ivory)}.bottombar{position:sticky;bottom:0;display:flex;justify-content:center;gap:.75rem;padding:.75rem 1rem max(env(safe-area-inset-bottom),.75rem);border-top:1px dashed var(--rule);background:var(--ivory)}.bottombar button{background:var(--accent);color:var(--ivory);border:none;padding:.6rem 1.4rem;font-family:inherit;font-size:.95rem;cursor:pointer;border-radius:2px;letter-spacing:.04em;min-width:7rem}.bottombar button.ghost{background:transparent;color:var(--muted);border:1px solid var(--rule)}.bottombar button.danger{background:transparent;color:var(--warn);border:1px solid var(--warn)}.bottombar button.danger:hover{background:var(--warn);color:var(--ivory)}.bottombar button:disabled{opacity:.4;cursor:default}#statsView{padding:0}#statsBody{padding:1.25rem;max-width:540px;margin:0 auto;width:100%;display:block;align-items:stretch;justify-content:flex-start}.statBlock{background:var(--paper);border:1px solid var(--rule);border-radius:3px;padding:1rem 1.2rem;margin-bottom:.8rem}.statBlock h3{margin:0 0 .5rem;font-size:1rem;letter-spacing:.04em;font-weight:500}.statTotal{font-size:2.2rem;font-weight:500;color:var(--accent);letter-spacing:.04em}.statSub{color:var(--muted);font-style:italic;font-size:.85rem;margin-top:.2rem}.statRow{display:flex;justify-content:space-between;padding:.4rem 0;border-bottom:1px dashed var(--rule);font-size:.95rem}.statRow:last-child{border-bottom:none}.statRow .name{color:var(--ink)}.statRow .val{color:var(--muted);font-variant-numeric:tabular-nums}#settingsDrawer{position:fixed;inset:0;z-index:10}#settingsDrawer[hidden]{display:none!important}.scrim{position:absolute;inset:0;background:var(--scrim);opacity:0;animation:fadeIn .18s ease-out forwards}@keyframes fadeIn{to{opacity:1}}.drawerPanel{position:absolute;top:0;bottom:0;right:0;width:min(360px,90vw);background:var(--ivory);border-left:1px solid var(--rule);display:flex;flex-direction:column;transform:translate(100%);animation:slideIn .22s ease-out forwards;padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom)}@keyframes slideIn{to{transform:translate(0)}}.drawerPanel header{display:flex;align-items:center;justify-content:space-between;padding:.9rem 1rem .7rem;border-bottom:1px dashed var(--rule)}.drawerPanel h2{margin:0;font-weight:500;font-size:1.2rem;letter-spacing:.04em}.drawerBody{flex:1;overflow-y:auto;padding:1rem}.settingRow{display:flex;align-items:center;justify-content:space-between;padding:.5rem 0}.settingRow .label{color:var(--ink);font-size:.95rem;letter-spacing:.02em}.settingRow.about{display:block;padding:.5rem 0 1rem}.settingRow .muted{color:var(--muted);font-style:italic;font-size:.88rem}.settingRow .muted.small{font-size:.8rem;margin-top:.4rem;line-height:1.35}.seg{display:inline-flex;border:1px solid var(--rule);border-radius:2px;overflow:hidden}.seg button{background:transparent;border:none;color:var(--muted);padding:.32rem .7rem;font-family:inherit;font-size:.85rem;cursor:pointer;letter-spacing:.06em}.seg button.active{background:var(--accent);color:var(--ivory)}.seg button+button{border-left:1px solid var(--rule)}.drawerBody hr{border:none;border-top:1px dashed var(--rule);margin:.85rem 0}.settingLink{display:block;width:100%;text-align:left;background:transparent;border:none;color:var(--ink);padding:.55rem 0;font-family:inherit;font-size:.95rem;cursor:pointer;letter-spacing:.02em}.settingLink:hover{color:var(--accent)}.settingLink.danger{color:var(--warn)}.overlay{position:fixed;inset:0;z-index:20}.overlay[hidden]{display:none!important}.overlayScrim{position:absolute;inset:0;background:var(--scrim);opacity:0;animation:fadeIn .18s ease-out forwards}.overlayCard{position:relative;margin:auto;margin-top:10vh;background:var(--ivory);border:1px solid var(--rule);border-radius:4px;max-width:440px;width:calc(100% - 2rem);padding:1.2rem 1.4rem 1.5rem;opacity:0;transform:translateY(8px);animation:cardIn .25s ease-out forwards;box-shadow:0 8px 30px var(--scrim)}@keyframes cardIn{to{opacity:1;transform:translateY(0)}}.overlayCard header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.6rem}.overlayCard h2{margin:0;font-weight:500;font-size:1.2rem;letter-spacing:.04em}.tutBody{min-height:6rem;padding:.5rem 0;color:var(--ink);font-size:1rem;line-height:1.55}.tutBody h3{margin:0 0 .5rem;font-size:1.05rem;font-weight:500}.tutBody p{margin:0 0 .5rem}.tutBody .demo{font-family:inherit;font-size:1.15rem;letter-spacing:.16em;text-align:center;padding:.5rem;background:var(--paper);border:1px solid var(--rule);border-radius:2px;margin:.6rem 0}.tutDots{display:flex;justify-content:center;gap:.35rem;margin:.6rem 0 .8rem}.tutDots .dot{width:7px;height:7px;border-radius:50%;background:var(--rule)}.tutDots .dot.active{background:var(--accent)}#tutorialNext{width:100%;background:var(--accent);color:var(--ivory);border:none;padding:.6rem 1rem;font-family:inherit;font-size:.95rem;cursor:pointer;border-radius:2px;letter-spacing:.04em}.lookup .lookupHead{display:flex;flex-direction:column;gap:.1rem}.lookup .lookupWord{font-size:1.4rem;letter-spacing:.08em;font-weight:500;color:var(--ink)}.lookup .lookupPos{font-style:italic;font-size:.85rem;color:var(--muted);letter-spacing:.02em}.lookupBody{margin:.8rem 0 .4rem;max-height:60vh;overflow-y:auto}.lookupSense{padding:.55rem 0;border-bottom:1px dashed var(--rule)}.lookupSense:last-child{border-bottom:none}.lookupSense .num{display:inline-block;min-width:1.4rem;color:var(--accent);font-weight:500;font-variant-numeric:tabular-nums;margin-right:.2rem}.lookupSense .gloss{color:var(--ink);line-height:1.5}.lookupSense .examples{margin:.4rem 0 0 1.5rem;padding:0;list-style:none}.lookupSense .examples li{font-style:italic;color:var(--muted);font-size:.92rem;line-height:1.4;padding-left:.6rem;border-left:2px solid var(--accent-soft);margin-bottom:.35rem}.lookupLoading{padding:1rem 0;text-align:center;color:var(--muted);font-style:italic}.lookupEmpty{padding:1rem 0;text-align:center;color:var(--muted);font-style:italic;font-size:.92rem}.lookupSource{margin-top:.6rem;text-align:right;font-style:italic;font-size:.75rem;color:var(--muted)}ol.ladder li.filled .word,ol.ladder li.endpoint .word{cursor:pointer;border-bottom:1px dotted transparent;transition:border-bottom-color .15s ease}ol.ladder li.filled .word:hover,ol.ladder li.endpoint .word:hover{border-bottom-color:var(--accent)}ol.ladder li.active .word,ol.ladder li.active .input{cursor:default}.paywall .paywallSub{color:var(--muted);font-style:italic;margin:0 0 .8rem;line-height:1.4}.paywall .paywallList{margin:.5rem 0 1rem;padding-left:1.2rem}.paywall .paywallList li{margin-bottom:.4rem;line-height:1.4}.paywall .paywallNote{color:var(--muted);font-style:italic;font-size:.78rem;margin:.5rem 0 0;text-align:center}#paywallBuy{width:100%;background:var(--accent);color:var(--ivory);border:none;padding:.65rem;font-family:inherit;font-size:1rem;cursor:pointer;border-radius:2px;margin-bottom:.5rem;letter-spacing:.04em}#paywallRestore{width:100%;background:transparent;color:var(--muted);border:1px solid var(--rule);padding:.55rem;font-family:inherit;font-size:.9rem;cursor:pointer;border-radius:2px}@media (max-width: 480px){ol.ladder .word,ol.ladder .slot{font-size:1.55rem;letter-spacing:.14em}ol.ladder .word .ch,ol.ladder .slot{min-width:1.1rem}.bottombar button{min-width:5.5rem;padding:.55rem 1rem;font-size:.9rem}.appHeader h1{font-size:1.5rem}}
