@font-face{font-family:Andika;src:url('/static/reader-font/Andika-Regular.ttf') format('truetype');font-display:swap}*{box-sizing:border-box} [hidden]{display:none!important}:root{--ink:#20382f;--muted:#63736a;--paper:#f7f7f2;--line:#dfe5da;--blue:#315bcd;--green:#267253;--white:#fff;--radius:24px}body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.65 Andika,system-ui,sans-serif}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer}button:disabled{opacity:.5;cursor:wait}a{color:var(--blue);text-decoration:none}h1,h2,h3,p{margin:0 0 14px}h1{font-size:clamp(2rem,4vw,3.2rem);font-weight:700;letter-spacing:-1.4px;line-height:1.2}h2{font-size:1.5rem;letter-spacing:-.5px;line-height:1.35}h3{font-size:1.15rem}p{color:var(--muted)}.topbar{max-width:1280px;margin:auto;padding:24px 40px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);gap:16px}.brand{display:flex;gap:12px;align-items:center;color:var(--ink);font:700 29px/1.1 Andika,system-ui}.brand small{display:block;font:700 9px/2.1 system-ui;letter-spacing:2.2px;color:var(--muted)}.brand-mark{position:relative;background:var(--blue);color:white;border-radius:16px;width:48px;height:48px;font-size:43px;line-height:40px;text-align:center}.brand-mark>span{position:absolute;font:21px system-ui;right:-5px;top:-7px;color:#d7a624}.topbar nav{display:flex;align-items:center;gap:22px}.topbar nav a,.text-button{font-size:.9rem;font-weight:700;color:var(--ink)}.text-button{border:0;background:transparent;padding:10px 6px}.topbar nav .active{color:var(--blue)}#main{max-width:1200px;padding:28px 40px 64px;margin:auto;min-height:70vh}#notice{min-height:26px;font-size:.92rem;color:var(--muted);margin-bottom:18px}#notice[data-error=true]{color:#9c3645;background:#fff0ed;padding:12px 18px;border-radius:16px}.eyebrow{font:750 11px/1.5 system-ui;letter-spacing:2px;color:var(--green);margin-bottom:14px}.page-heading{display:flex;gap:20px;align-items:center;justify-content:space-between;margin-bottom:30px}.page-heading p:last-child{margin-bottom:0}.primary,.secondary,.danger{min-height:54px;padding:13px 23px;border-radius:15px;font-weight:700;font-size:.94rem;border:1px solid transparent;display:inline-flex;justify-content:center;align-items:center;gap:8px;line-height:1.4}.primary{background:var(--blue);color:#fff;box-shadow:0 4px 0 #2347a6}.primary:hover{background:#244bb5;transform:translateY(-1px)}.secondary{background:#eef3e9;color:var(--ink);border-color:#d8e2d2}.secondary:hover{background:#e2ecd9}.danger{background:#fff0ed;border-color:#ebc5c0;color:#a43943}.card{background:var(--white);border:1px solid var(--line);border-radius:var(--radius);padding:30px;box-shadow:0 5px 20px #273f2b04}.pill{display:inline-block;font:750 10px/1.6 system-ui;letter-spacing:1.5px;padding:6px 11px;border-radius:8px;color:var(--green);background:#e8efdc;margin-bottom:17px}.welcome-banner{position:relative;display:flex;gap:40px;align-items:center;justify-content:space-between;background:#e8efdf;border:1px solid #d8e3c8;border-radius:var(--radius);padding:34px 40px;margin-bottom:38px;overflow:hidden}.welcome-banner h2{font-size:1.75rem;max-width:480px}.welcome-banner p{margin:0;max-width:480px}.welcome-banner .pill{padding-left:0;background:transparent;margin-bottom:12px}.banner-character{position:relative;font-size:100px;line-height:1.2;margin-right:18px;transform:rotate(-8deg)}.banner-character i{font-style:normal;font-size:48px;position:absolute;right:-35px;top:-20px;color:#bd8a28}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:20px}.section-heading h2{margin:0}.count{font-size:.9rem;color:var(--muted);background:#e9ecdf;padding:3px 10px;border-radius:50%;margin-left:8px}.child-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;margin-bottom:34px}.child-card{padding:25px}.child-card-top{display:flex;gap:15px;align-items:center;margin-bottom:20px}.avatar{display:grid;place-items:center;flex-shrink:0;width:64px;height:64px;border-radius:22px;background:#fff1d4;font-size:39px}.child-card:nth-child(2n) .avatar{background:#e9e5fa}.child-card-top h2{margin:0}.child-card-top p{margin:0;font-size:.86rem}.child-card-top .text-button{margin-left:auto;align-self:flex-start}.metric-row{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;border-block:1px solid var(--line);padding:16px 0;margin-bottom:18px}.metric-row strong{display:block;font:700 1.6rem/1.4 Andika}.metric-row small{font-size:.73rem;color:var(--muted)}.child-actions{display:flex;gap:12px;margin-top:22px}.child-actions>*{flex:1}.child-actions .primary{min-height:64px}.level-pills{display:flex;flex-wrap:wrap;gap:8px}.level-pills span,.word-chip{font-size:.76rem;background:#f2f4ec;border-radius:10px;padding:5px 9px;color:#4b6351}.word-chips{display:flex;gap:7px;flex-wrap:wrap;margin-top:8px}.word-chip{background:#fff3d6;color:#805b1b}.child-detail{margin-top:18px;border-top:1px solid var(--line);padding-top:15px}.child-detail summary{cursor:pointer;color:var(--muted);font-size:.84rem}.child-detail p{font-size:.85rem}.activity-row{border-bottom:1px solid var(--line);padding:11px 0;display:flex;justify-content:space-between;gap:12px;font-size:.8rem}.activity-row time{color:var(--muted)}.family-bottom{display:grid;grid-template-columns:1.25fr 1fr;gap:24px}.steps{list-style:none;padding:0;margin:22px 0 0}.steps li{display:flex;gap:16px;margin-top:24px;font-size:.88rem;color:var(--muted)}.steps b{width:32px;height:32px;flex-shrink:0;display:grid;place-items:center;background:#edf1e4;border-radius:50%;color:var(--green)}.steps strong{display:block;color:var(--ink);font-size:.95rem;margin-bottom:4px}.privacy-card{background:#edf0f7}.privacy-icon{display:inline-grid;place-items:center;background:#dee5f7;width:48px;height:48px;font-size:32px;border-radius:16px;margin-bottom:18px}.privacy-card p{font-size:.91rem}.small{font-size:.8rem!important;color:var(--muted)}.footer{max-width:1200px;padding:26px 40px;display:flex;align-items:center;justify-content:space-between;gap:20px;margin:auto;border-top:1px solid var(--line);font-size:.75rem;color:var(--muted)}.brand-word{font-size:1.4rem;color:var(--ink);font-weight:700}.auth-layout{display:grid;grid-template-columns:1.15fr 1fr;gap:70px;align-items:center;padding-top:16px}.auth-story h1{font-size:clamp(2.5rem,4.2vw,3.6rem)}.auth-story>p:not(.eyebrow){max-width:460px;font-size:1.03rem}.auth-card h2{font-size:2rem}.auth-card{padding:36px}.auth-card form{margin-top:28px}.auth-card form>.primary{width:100%;margin:12px 0 22px}.auth-card #auth-back{display:block;text-align:center}.feature-chips{display:flex;flex-wrap:wrap;gap:12px;font-size:.75rem;color:var(--green);margin-top:20px}.feature-chips span{padding:7px 12px;border:1px solid #dde4d4;border-radius:20px}.book-art{height:240px;position:relative;display:grid;place-items:center;margin-top:25px}.art-book{width:310px;max-width:85%;height:180px;display:flex;transform:rotate(-6deg);border:6px solid #315bcd;border-bottom-width:12px;background:linear-gradient(90deg,#fff9e7 49%,#e4ddc4 50%,#fff9e7 52%);border-radius:12px 12px 20px 20px;box-shadow:12px 18px 0 #e2e9d7}.art-book>span{width:50%;font-size:15px;line-height:2;padding:20px;color:#8a9679}.art-book>.art-fox{display:grid;place-items:center;padding:0;font-size:78px;transform:rotate(9deg)}.art-star{position:absolute;right:35px;top:0;font-size:40px;color:#d7a624}.art-leaf{position:absolute;left:10px;bottom:15px;font-size:56px;color:#72a17c}label{display:block;font-size:.87rem;font-weight:700;margin-bottom:18px}input,select{display:block;width:100%;border:1px solid #bfcbbd;background:#fcfdf9;border-radius:12px;padding:13px 14px;color:var(--ink);margin-top:8px;min-height:52px}input:focus,select:focus{outline:3px solid #315bcd24;border-color:var(--blue)}.password-row{position:relative}.password-row input{padding-right:70px}.password-row .text-button{position:absolute;right:12px;top:5px;color:var(--muted)}:focus-visible{outline:3px solid #315bcd;outline-offset:4px}.empty-state{grid-column:1/-1;text-align:center;padding:45px}.empty-state>span{font-size:50px}.empty-state p{max-width:450px;margin:0 auto 20px}.modal-root{position:fixed;inset:0;background:#152f35a1;backdrop-filter:blur(8px);z-index:1000;display:flex;align-items:center;justify-content:center;padding:20px}.modal{background:var(--paper);width:min(540px,100%);max-height:calc(100dvh - 40px);overflow:auto;border-radius:28px;border:1px solid white;padding:30px;box-shadow:0 30px 100px #12253650;animation:enter .15s ease-out}.modal h2{margin-top:15px}.modal .modal-close{float:right;min-width:44px;min-height:44px;border:1px solid var(--line);border-radius:50%;background:white;color:var(--ink);font-size:20px}.modal .modal-error{color:#a43943;font-size:.87rem}.modal-actions{display:flex;gap:12px;margin-top:22px;flex-wrap:wrap}.modal-actions>*{flex:1}.modal form>button[type=submit]{width:100%;margin-top:10px}.avatar-picker{display:flex;gap:10px;flex-wrap:wrap;margin:16px 0 22px}.avatar-picker button{width:58px;height:58px;border:2px solid var(--line);border-radius:18px;background:white;font-size:29px}.avatar-picker button[aria-pressed=true]{border-color:var(--blue);background:#e8edff}.admin-layout{display:grid;grid-template-columns:1.5fr 1fr;gap:24px}.admin-layout aside .card{margin-bottom:24px}.parent-row{padding:20px 0;border-bottom:1px solid var(--line)}.parent-row h3{margin:0}.parent-row .small{margin:5px 0 12px}.parent-row .actions{display:flex;gap:10px;flex-wrap:wrap}.parent-row .actions button{font-size:.8rem;min-height:44px;padding:8px 14px}#invite-result{margin-bottom:26px;background:#eff4e5}#invite-result input{font-size:.83rem}.system-row{padding:10px 0;border-bottom:1px solid var(--line);font-size:.85rem;overflow-wrap:anywhere}.system-row strong{display:block;font-size:.76rem;color:var(--muted)}.activity-empty{font-size:.8rem}.picker-trigger{display:flex;width:100%;text-align:left;justify-content:space-between;align-items:center;min-height:52px;margin-top:8px;padding:13px 14px;background:#fcfdf9;border:1px solid #bfcbbd;border-radius:12px;color:var(--ink)}.picker-trigger::after{content:'⌄';color:var(--blue)}.picker-options{display:grid;gap:9px;margin-top:15px}.picker-options button{min-height:52px;border:1px solid var(--line);border-radius:12px;background:white;color:var(--ink);text-align:left;padding:12px 15px}.picker-options button:hover,.picker-options button[aria-pressed=true]{background:#e9efff;border-color:var(--blue)}@keyframes enter{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@media(max-width:900px){.auth-layout{gap:30px}.auth-card{padding:26px}.topbar,#main,.footer{padding-inline:25px}.family-bottom,.admin-layout{grid-template-columns:1fr}.book-art{height:210px}.welcome-banner{padding:28px}.banner-character{font-size:75px}}@media(max-width:650px){.topbar{padding:18px 20px;flex-wrap:wrap;gap:18px}.brand{font-size:25px}.brand-mark{width:42px;height:42px;font-size:37px;line-height:36px}.topbar nav{gap:17px}.topbar nav a,.topbar nav button{font-size:.8rem}.topbar nav{justify-content:flex-end;flex:1}.topbar nav a:first-child{white-space:nowrap}#main{padding:20px 18px 40px}#notice{font-size:.83rem;margin-bottom:12px}.page-heading{align-items:flex-start;gap:14px;flex-direction:column;margin-bottom:24px}.page-heading h1{font-size:2.15rem}.page-heading p{font-size:.9rem}.page-heading>.primary{align-self:flex-start;min-height:48px;padding:10px 18px}.welcome-banner{padding:24px;gap:8px;margin-bottom:28px}.welcome-banner h2{font-size:1.4rem}.welcome-banner p{font-size:.83rem}.welcome-banner .pill{font-size:8px}.banner-character{font-size:56px;margin:0;align-self:flex-start;margin-top:18px}.banner-character i{font-size:25px;right:-8px}.child-grid{grid-template-columns:1fr;gap:18px}.section-heading{align-items:flex-start}.section-heading h2{font-size:1.3rem}.section-heading a{font-size:.75rem;text-align:right}.card{padding:24px;border-radius:22px}.child-card{padding:22px}.child-card-top{gap:12px}.child-card-top h2{font-size:1.4rem}.metric-row strong{font-size:1.5rem}.metric-row small{font-size:.7rem}.child-actions{gap:10px}.child-actions .secondary{font-size:.82rem;padding:12px}.auth-layout{grid-template-columns:1fr;gap:24px;padding-top:0}.auth-story h1{font-size:2.45rem}.auth-story>p:not(.eyebrow){font-size:.94rem}.auth-story .book-art{display:none}.feature-chips{gap:6px;margin-top:14px;font-size:.65rem}.feature-chips span{padding:6px 8px}.auth-card{padding:26px}.auth-card h2{font-size:1.7rem}.auth-card .pill{font-size:9px}.footer{padding:25px 20px;flex-wrap:wrap;gap:12px}.footer span:last-child{width:100%}.modal{padding:24px}.modal-actions{flex-direction:column}.family-bottom{gap:18px}input{font-size:16px}.topbar nav .text-button{padding:6px 0}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
@media(max-width:650px){.topbar nav{flex-basis:100%;justify-content:space-between;border-top:1px solid var(--line);padding-top:12px;gap:14px}.topbar nav a,.topbar nav button{white-space:nowrap}.topbar nav:has(>.small){display:none}}

.auth-error{font-size:.87rem;color:#9c3645;margin:0 0 18px}.auth-error:empty{display:none}
