:root{--sky: #bfe6f5;--mist: #e9f6fb;--paper: #ffffff;--ink: #1d3557;--ink-soft: #4a6385;--sun: #ffc93c;--sun-deep: #e0a400;--berry: #d63a6a;--berry-deep: #a8244f;--moss: #3f8a4f;--moss-deep: #2c6638;--line: #cfe3ee;--on-sun: var(--ink);--on-accent: #fff;--error: var(--berry-deep);--btn-surface: var(--paper);--font-text: "Andika", system-ui, sans-serif;--font-display: "Lilita One", "Andika", system-ui, sans-serif;--display-weight: 400;--display-spacing: .01em;--radius-panel: 28px;--radius-button: 20px;--radius-field: 14px;--pad-panel: clamp(1rem, 2.4vmin, 1.5rem);--key: clamp(64px, 9.5vmin, 84px);color:var(--ink);font-family:var(--font-text);font-size:18px;line-height:1.45;-webkit-tap-highlight-color:transparent}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{background:var(--sky);min-height:100dvh}h1,h2,h3{font-family:var(--font-display);font-weight:var(--display-weight);line-height:1.1;margin:0;letter-spacing:var(--display-spacing)}h1{font-size:clamp(1.75rem,4vmin,2.6rem)}h2{font-size:clamp(1.4rem,3vmin,1.8rem)}h3{font-size:1.3rem}p{margin:0}:focus-visible{outline:4px solid var(--ink);outline-offset:3px}.btn{--btn-bg: var(--btn-surface);--btn-fg: var(--ink);--btn-edge: var(--line);-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;border-radius:var(--radius-button);background:var(--btn-bg);color:var(--btn-fg);font:inherit;font-weight:700;padding:.75rem 1.25rem;min-height:56px;box-shadow:0 6px 0 var(--btn-edge);cursor:pointer;transition:transform 80ms ease,box-shadow 80ms ease;display:inline-flex;align-items:center;justify-content:center;gap:.5rem;text-decoration:none}.btn:active:not(:disabled){transform:translateY(5px);box-shadow:0 1px 0 var(--btn-edge)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-sun{--btn-bg: var(--sun);--btn-fg: var(--on-sun);--btn-edge: var(--sun-deep)}.btn-moss{--btn-bg: var(--moss);--btn-fg: var(--on-accent);--btn-edge: var(--moss-deep)}.btn-berry{--btn-bg: var(--berry);--btn-fg: var(--on-accent);--btn-edge: var(--berry-deep)}.btn-big{font-family:var(--font-display);font-weight:var(--display-weight);font-size:clamp(1.35rem,3.2vmin,1.8rem);min-height:clamp(60px,8.5vmin,84px);padding:.75rem 1.75rem;box-shadow:0 8px 0 var(--btn-edge)}.btn-quiet{background:transparent;box-shadow:none;min-height:44px;padding:.5rem .75rem;color:var(--ink-soft);text-decoration:underline;text-underline-offset:3px}.btn-quiet:active:not(:disabled){transform:none;box-shadow:none}.panel{background:var(--paper);border-radius:var(--radius-panel);padding:var(--pad-panel)}.page{max-width:1180px;margin:0 auto;padding:max(16px,env(safe-area-inset-top)) 16px 32px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1.25rem}.stack{display:flex;flex-direction:column;gap:1rem}.row{display:flex;gap:.75rem;flex-wrap:wrap;align-items:center}.muted{color:var(--ink-soft)}.error{color:var(--error);font-weight:700}label{display:flex;flex-direction:column;gap:.35rem;font-weight:700}input[type=text],input[type=email],input[type=number],input[type=search],input[type=password],textarea{font:inherit;color:var(--ink);border:3px solid var(--line);border-radius:var(--radius-field);padding:.6rem .8rem;background:var(--paper);min-height:52px;width:100%}input:focus,textarea:focus{border-color:var(--ink);outline:none}.checkbox{flex-direction:row;align-items:center;gap:.75rem;font-size:1.15rem;cursor:pointer}.checkbox input{width:32px;height:32px;accent-color:var(--moss)}.avatar{--size: 72px;width:var(--size);height:var(--size);border-radius:50%;display:grid;place-items:center;font-size:calc(var(--size) * .55);border:5px solid #fff;flex-shrink:0;overflow:hidden}.avatar img{display:block;width:100%;height:100%;object-fit:cover}.tabs .avatar{border-width:2px}.avatar-link{position:relative;display:inline-flex;border-radius:50%;text-decoration:none}.avatar-link:after{content:"✏️";position:absolute;right:-8px;bottom:-6px;width:28px;height:28px;border-radius:50%;background:var(--paper);box-shadow:0 2px 0 var(--line);display:grid;place-items:center;font-size:.8rem}.avatar-grid{--choice: clamp(64px, 9.5vmin, 84px);display:grid;grid-template-columns:repeat(auto-fill,var(--choice));gap:.75rem}.avatar-choice{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:var(--choice);height:var(--choice);padding:0;border:5px solid var(--line);border-radius:50%;background:var(--mist);font-size:calc(var(--choice) * .5);line-height:1;cursor:pointer;overflow:hidden;display:grid;place-items:center}.avatar-choice img{display:block;width:100%;height:100%;object-fit:cover}.avatar-choice[aria-pressed=true]{border-color:var(--ink);background:var(--sun)}.theme-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(max(210px,40%),1fr));gap:1rem}.theme-card{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;border:5px solid var(--line);border-radius:var(--radius-button);background:var(--mist);color:var(--ink);font:inherit;text-align:left;cursor:pointer;overflow:hidden;display:flex;flex-direction:column;align-items:stretch}.theme-card[aria-pressed=true]{border-color:var(--ink)}.theme-swatch{position:relative;display:block;height:clamp(64px,9vmin,92px)}.theme-swatch:after{content:"";position:absolute;right:18px;top:16px;width:30px;height:30px;border-radius:50%;background:var(--swatch-accent)}.theme-name{font-size:1.45rem;line-height:1.1;padding:.6rem .8rem .15rem}.theme-blurb{font-size:.95rem;color:var(--ink-soft);padding:0 .8rem .75rem}.settings{display:grid;gap:1rem;align-items:start}.settings-avatar .avatar{--size: clamp(84px, 11vmin, 112px)}@media (orientation: landscape) and (min-width: 900px){.settings{grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-areas:"avatar theme" "pin theme"}.settings-avatar{grid-area:avatar}.settings-theme{grid-area:theme}.settings-pin{grid-area:pin}}.pin-dialog{background:var(--sky);border-radius:var(--radius-panel);padding:var(--pad-panel) calc(var(--pad-panel) * 1.5);max-height:100%;overflow-y:auto;display:flex;flex-direction:column;align-items:center;gap:1rem;text-align:center}.avatar-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:1rem}.avatar-tile{display:flex;flex-direction:column;align-items:center;gap:.25rem;text-align:center}.avatar-tile img{width:112px;height:112px;border-radius:50%;border:5px solid var(--line);object-fit:cover}.who{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2rem;padding:24px 16px;text-align:center}.login-form{width:100%;max-width:420px;text-align:left}.who-grid{display:flex;flex-wrap:wrap;justify-content:center;gap:1.5rem}.who-card{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;font:inherit;color:var(--ink);background:var(--paper);border-radius:var(--radius-panel);padding:1.5rem 2rem 1.25rem;width:200px;display:flex;flex-direction:column;align-items:center;gap:.75rem;cursor:pointer;box-shadow:0 8px 0 var(--line)}.who-card .avatar{--size: 112px}.who-card .who-name{font-family:var(--font-display);font-size:1.6rem}.install-hint{display:flex;align-items:flex-start;gap:1.25rem;max-width:640px;text-align:left}.install-hint img{flex:none;border-radius:14px}.install-hint .stack{gap:.6rem}.install-hint .share-icon{vertical-align:-.25em}.pin{display:flex;flex-direction:column;align-items:center;gap:1.25rem}.pin-dots{display:flex;gap:1rem}.pin-dots span{width:26px;height:26px;border-radius:50%;border:4px solid var(--ink)}.pin-dots span.filled{background:var(--ink)}.pin-dots.shake{animation:shake .4s}@keyframes shake{20%,60%{transform:translate(-10px)}40%,80%{transform:translate(10px)}}.pin-keys{display:grid;grid-template-columns:repeat(3,var(--key));gap:14px}.pin-keys .btn{font-family:var(--font-display);font-weight:400;font-size:2rem;min-height:var(--key);padding:0}.who-pin-hello,.who-pin-pad{display:flex;flex-direction:column;align-items:center;gap:1rem}.who-pin-hello .avatar{--size: clamp(84px, 13vmin, 112px)}@media (orientation: landscape){.who-pin{display:grid;grid-template-columns:auto auto;grid-template-areas:"hello pad" "back pad";align-content:center;justify-content:center;column-gap:clamp(2rem,8vw,6rem);row-gap:1rem}.who-pin-hello{grid-area:hello;align-self:end}.who-pin-pad{grid-area:pad}.who-pin-back{grid-area:back;align-self:start;justify-self:center}}.home-page{height:100dvh;display:flex;flex-direction:column;padding-bottom:max(16px,env(safe-area-inset-bottom))}.home-page .topbar{margin-bottom:.75rem}.home{flex:1;min-height:0;display:grid;gap:1rem}.home-side{min-height:0;gap:.75rem}.home-books{display:flex;flex-direction:column;gap:.5rem;min-height:0}.panel-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;column-gap:.75rem}.panel-head .btn-quiet{padding-inline:0}.home-books .book-list{flex:1;min-height:0;overflow-y:auto;gap:0}.home-books .book-cover-sm{height:48px;max-width:48px}.home-books .book-cover-sm.book-cover-empty{width:32px;font-size:1.15rem}.home-books .book-list .book-row{min-width:0;white-space:normal}.home-books .book-row-text{min-width:0}.book-title{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;line-height:1.25}@media (orientation: landscape){.home{grid-template-columns:clamp(260px,27vw,320px) minmax(0,1fr);grid-template-rows:minmax(0,1fr)}.home-side{overflow-y:auto;padding:8px;margin:-8px}.home-books{flex:1;min-height:180px}}@media (orientation: portrait){.home{grid-template-rows:auto minmax(0,1fr)}.home-side{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-areas:"level books" "cta books";align-items:start;gap:.75rem 1rem}.home-level{grid-area:level}.home-cta{grid-area:cta}.home-books{grid-area:books;align-self:stretch;contain:size}}.hero-level{display:flex;align-items:center;gap:1rem}.level-badge{font-family:var(--font-display);line-height:1}.level-badge small{display:block;font-family:var(--font-text);font-weight:700;font-size:1rem;color:var(--ink-soft)}.level-badge strong{font-weight:var(--display-weight);font-size:clamp(2.6rem,6vmin,4.5rem)}.pointsbar{height:34px;border-radius:999px;background:var(--mist);border:4px solid var(--ink);overflow:hidden}.pointsbar-fill{height:100%;background:var(--sun);border-right:4px solid var(--ink);transition:width .9s cubic-bezier(.2,.8,.2,1)}.pointsbar-fill[data-empty=true]{border-right:0}.book-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}.book-list li{display:flex;justify-content:space-between;gap:.75rem;padding:.6rem 0;border-bottom:2px dashed var(--line)}.book-list li>span:last-child{white-space:nowrap}.book-list li:last-child{border-bottom:0}.book-list .tag{align-self:center}.path{position:relative;height:100%;min-height:0;border-radius:var(--radius-panel);box-shadow:0 0 0 3px var(--line);overflow-y:auto}.path-journey{position:relative;overflow:hidden}.path svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.path-me{pointer-events:none}.path-level{font-family:var(--font-display);font-weight:var(--display-weight)}.path-goal{position:absolute;transform:translateY(-50%);width:max-content;max-width:52%;margin:0;padding:.25rem .7rem .35rem;border-radius:16px;font-family:var(--font-display);line-height:1.2;color:var(--ink);background:#fffffff0;box-shadow:0 3px 10px #0000002e}.path-goal.dark{color:#fff;background:#000000a6}.path-goal small{display:block;font-family:var(--font-text);font-weight:700;font-size:.85rem}.path-goal strong{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;font-weight:var(--display-weight);font-size:clamp(1.1rem,2.4vmin,1.4rem);overflow-wrap:anywhere}.path-goal .path-goal-left{opacity:.75}.path-goal .tag{margin-top:.25rem;font-family:var(--font-text)}.choice-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}.choice{flex-direction:column;min-height:clamp(88px,12vmin,130px);font-size:1.1rem}.choice .emoji{font-size:clamp(2rem,4.5vmin,2.6rem);line-height:1}.choice[aria-pressed=true]{--btn-bg: var(--sun);--btn-fg: var(--on-sun);--btn-edge: var(--sun-deep)}.choice small{font-weight:400;color:var(--ink-soft)}.choice[aria-pressed=true] small,.book-choices .btn[aria-pressed=true] small{color:inherit}.book-choices{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.75rem}.book-choices .btn{justify-content:flex-start;text-align:left;gap:.75rem}.book-choice-text{display:flex;flex-direction:column;gap:.1rem}.book-choices .btn-moss{align-items:center;justify-content:center}.book-choices .btn[aria-pressed=true]{--btn-bg: var(--sun);--btn-fg: var(--on-sun);--btn-edge: var(--sun-deep)}.book-choices small{font-weight:400;color:var(--ink-soft)}.book-cover{flex:none;display:inline-grid;place-items:center;border-radius:2px 5px 5px 2px;object-fit:cover;background:var(--paper);box-shadow:1px 2px 0 var(--line),1px 2px 3px 1px #0003}.book-cover-sm{height:60px;max-width:60px}.book-cover-md{height:120px;max-width:120px}.book-cover-empty{background:var(--moss);color:var(--on-accent);font-family:var(--font-display);font-weight:var(--display-weight);font-size:1.4rem}.book-cover-sm.book-cover-empty{width:40px}.book-cover-md.book-cover-empty{width:80px;font-size:2.4rem}.book-row{display:flex;align-items:center;gap:.75rem}.book-list li>.book-row+span{align-self:center}.book-row-text{display:flex;flex-direction:column;align-items:flex-start}.book-row-text .btn-quiet{padding-inline:0}.book-actions{display:flex;flex-wrap:wrap;align-items:center;column-gap:1.25rem}.suggestions{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.75rem}.btn.suggestion{flex-direction:column;justify-content:flex-start;text-align:center;gap:.4rem;padding:.9rem .6rem}.suggestion small{font-weight:400;color:var(--ink-soft)}.suggestion[aria-busy=true]{opacity:.6}.source-note{font-size:.85rem}.counter{display:flex;align-items:center;justify-content:center;gap:1rem;flex-wrap:wrap}.counter output{font-family:var(--font-display);font-size:clamp(3rem,7vmin,4rem);line-height:1.1;min-width:3ch;text-align:center}.points-preview{font-family:var(--font-display);font-size:clamp(1.8rem,4.5vmin,2.4rem);line-height:1.1;color:var(--moss)}.log-page{max-width:860px}.log-layout{display:grid;gap:1rem;align-items:start}.log-side{display:contents}.log-save{position:sticky;bottom:0;z-index:1;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem 1rem;padding:.75rem 0 max(.75rem,env(safe-area-inset-bottom));background:var(--sky)}.log-save-info{display:flex;flex-direction:column;gap:.25rem}@media (orientation: landscape) and (min-width: 900px){.log-page{max-width:1180px;height:100dvh;display:flex;flex-direction:column;padding-bottom:max(16px,env(safe-area-inset-bottom))}.log-layout{flex:1;min-height:0;grid-template-columns:minmax(0,1fr) minmax(360px,420px);grid-template-rows:minmax(0,1fr) auto;grid-template-areas:"books side" "mode side"}.log-books{grid-area:books;align-self:stretch;overflow-y:auto}.log-mode{grid-area:mode}.log-side{grid-area:side;display:flex;flex-direction:column;gap:1rem;align-self:stretch;min-height:0;overflow-y:auto;padding:8px;margin:-8px}.log-save{margin-top:auto;padding-bottom:.25rem}.log-side .counter{gap:.6rem}.log-side .counter output{order:-1;flex-basis:100%}.log-side .counter .btn{min-width:56px;padding-inline:.8rem}}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#1d35578c;display:grid;place-items:center;padding:16px;z-index:10}.celebrate{background:var(--paper);border-radius:var(--radius-panel);padding:2rem;max-width:520px;width:100%;text-align:center;display:flex;flex-direction:column;gap:1rem;align-items:center;animation:pop .45s cubic-bezier(.3,1.6,.5,1)}.celebrate .big-number{font-family:var(--font-display);font-size:5rem;line-height:1}@keyframes pop{0%{transform:scale(.6);opacity:0}}.tabs{display:flex;gap:.5rem;flex-wrap:wrap}.tabs .btn[aria-selected=true]{--btn-bg: var(--ink);--btn-fg: #fff;--btn-edge: #0f2340}.adult-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:1.25rem;align-items:start}.child-grid{display:grid;grid-template-columns:minmax(260px,1fr) minmax(320px,2fr);gap:1.25rem;align-items:start}.child-grid>.wide{grid-column:1 / -1}.reward-row{display:grid;grid-template-columns:90px 1fr;gap:.75rem;align-items:center;padding:.6rem 0;border-bottom:2px dashed var(--line)}.reward-row>.row{grid-column:2}.reward-row>.row:empty{display:none}.reward-row:last-child{border-bottom:0}.tag{display:inline-block;font-size:.85rem;font-weight:700;border-radius:999px;padding:.1rem .6rem;background:var(--mist)}.tag-unlocked{background:var(--berry);color:var(--on-accent)}.tag-claimed{background:var(--moss);color:var(--on-accent)}table{width:100%;border-collapse:collapse;font-size:.95rem}td,th{text-align:left;padding:.45rem .35rem;border-bottom:1px solid var(--line)}@media (max-width: 820px){.child-grid{grid-template-columns:1fr}}@media (max-width: 600px),(max-height: 500px){.home-page{height:auto}.home{grid-template-columns:minmax(0,1fr);grid-template-rows:none}.home-side{display:flex;flex-direction:column;overflow:visible;padding:0;margin:0}.home-books{contain:none}.path{height:min(calc(100dvh - 32px),150vw)}}@media (max-width: 520px){.choice-grid{grid-template-columns:1fr}.choice{min-height:80px;flex-direction:row}.who-card{width:150px;padding:1rem}.who-card .avatar{--size: 84px}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
