/* UX review 0.24: keep content reachable at short heights and enlarged text. */
body[data-route='splash'] #app{height:100dvh;overflow-y:auto;overscroll-behavior-y:contain}
body[data-route='splash'] .welcome-screen{height:auto;min-height:100%;box-sizing:border-box;flex-shrink:0;padding-top:max(24px,env(safe-area-inset-top));padding-bottom:max(24px,env(safe-area-inset-bottom))}
.welcome-screen>*{flex-shrink:0}
.dialog-close{min-width:44px;min-height:44px}
.settings-row{gap:16px}.settings-row>span,.settings-row>label{flex:1;min-width:0}.settings-row .switch{flex-shrink:0;min-width:52px;min-height:44px}
button:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #8ce1d2;outline-offset:3px}
.seal.hint{outline:3px solid #fff2bc;outline-offset:-3px;box-shadow:inset 0 0 0 5px #17383b}
.seal-guide{display:flex;gap:12px;flex-wrap:wrap;justify-content:center;color:#e1d9bd;padding:8px}
.practice .tools button{min-height:44px}
.victory-details{margin:16px 0}.victory-details summary{min-height:44px;display:flex;align-items:center;cursor:pointer}
.unlock-note{color:#b9cfc9}
.reader-dialog{width:100%;max-width:100%;height:100dvh;max-height:100dvh;margin:0;border-radius:0;padding:calc(24px + env(safe-area-inset-top)) max(20px,calc((100vw - 720px)/2)) calc(24px + env(safe-area-inset-bottom));box-sizing:border-box;overscroll-behavior:contain}
.reader-dialog .reader-page{max-width:68ch;margin:24px auto;overflow-wrap:break-word}
.reader-dialog .reader-tools{display:flex;flex-wrap:wrap;gap:8px}
.reader-dialog .dialog-close{position:sticky;top:0;float:right;z-index:2;background:#13272c}
@media(max-width:600px){.reader-dialog{padding-left:20px;padding-right:20px}.practice-top{padding-block:10px!important}.journey-goal{margin-block:8px!important}.welcome-logo{max-height:36svh;width:auto;max-width:75vw}}
@media(prefers-reduced-motion:reduce){.seal.hint{animation:none}.reader-dialog{scroll-behavior:auto}}
/* 0.25.1: selection indicator cannot intersect the label, including enlarged text. */
.flask-button{padding-bottom:6px}
.flask-button::before,.flask-button.selected::after,.flask-button.hint::after{content:none}
.flask-visual{display:block;position:relative;padding-bottom:9px}
.flask-visual::after{content:"";position:absolute;left:-5px;right:-5px;bottom:0;height:9px;background:linear-gradient(#aa8752,#51402d 25%,#2a211b 60%,#a5865033);border-top:1px solid #c2a36a88;box-shadow:0 6px 8px #0003;pointer-events:none}
.flask-button .flask-id{position:static;display:block;width:100%;margin-top:7px;text-decoration:none}
.flask-id::after{content:"";display:block;width:50%;height:2px;margin:6px auto 0;background:transparent;pointer-events:none}
.flask-button.selected .flask-id::after,.flask-button.hint .flask-id::after{background:var(--teal);box-shadow:0 0 8px #72c9bd66}
