:root{--color-primary:#3fa9e0;--color-primary-dark:#2b8ac2;--color-primary-light:#eaf6fd;--color-secondary:#4ecdc4;--color-secondary-dark:#2f9a92;--color-secondary-light:#e7faf8;--color-accent:#ffa552;--color-accent-dark:#f2883a;--color-accent-light:#fff3e6;--color-danger:#ff6b6b;--color-danger-light:#ffecec;--bg:#f6fafd;--surface:#fff;--text:#33475b;--text-h:#1d2b3a;--text-muted:#7c93ac;--border:#e3ecf3;--shadow-sm:0 1px 3px #33475b14;--shadow-md:0 4px 14px #33475b1a;--shadow-lg:0 10px 30px #33475b24;--radius-sm:8px;--radius-md:14px;--radius-lg:20px;--radius-full:999px;--transition:.18s ease;--sans:system-ui, "Segoe UI", Roboto, sans-serif}@media (prefers-color-scheme:dark){:root:not([data-theme]),:root[data-theme=default]{--color-primary:#5cc0f2;--color-primary-dark:#3fa9e0;--color-primary-light:#3fa9e029;--color-secondary:#5fe0d6;--color-secondary-dark:#4ecdc4;--color-secondary-light:#4ecdc429;--color-accent:#ffb670;--color-accent-dark:#ffa552;--color-accent-light:#ffa55229;--color-danger:#ff8787;--color-danger-light:#ff6b6b29;--bg:#131a20;--surface:#1b242c;--text:#b8c6d4;--text-h:#f1f5f8;--text-muted:#7c93ac;--border:#2a3540;--shadow-sm:0 1px 3px #0000004d;--shadow-md:0 4px 14px #00000059;--shadow-lg:0 10px 30px #00000073}}:root[data-theme=notebook]{--color-primary:#2f4374;--color-primary-dark:#1f2e52;--color-primary-light:#e7ebf5;--color-secondary:#5b7a56;--color-secondary-dark:#42603e;--color-secondary-light:#e9f0e6;--color-accent:#b2453f;--color-accent-dark:#8a3530;--color-accent-light:#f7e6e4;--bg:#f6efdf;--surface:#fbf6ea;--text:#3a3226;--text-h:#241f16;--text-muted:#7a705c;--border:#d8cdb0}:root[data-theme=blackboard]{--color-primary:#8fd7ff;--color-primary-dark:#5cc0f2;--color-primary-light:#8fd7ff29;--color-secondary:#ffe37a;--color-secondary-dark:#f2cf4a;--color-secondary-light:#ffe37a29;--color-accent:#ff9f7a;--color-accent-dark:#f2814f;--color-accent-light:#ff9f7a29;--bg:#1b1b19;--surface:#242422;--text:#e5e5e0;--text-h:#fff;--text-muted:#a8a8a0;--border:#3a3a35;--shadow-sm:0 1px 3px #0000004d;--shadow-md:0 4px 14px #00000059;--shadow-lg:0 10px 30px #00000073}:root[data-theme=boy]{--color-primary:#2f8fd6;--color-primary-dark:#1f6fae;--color-primary-light:#e3f2fc;--color-secondary:#3fc9c1;--color-secondary-dark:#28a49c;--color-secondary-light:#e1f8f6;--color-accent:#ff7a54;--color-accent-dark:#e85c37;--color-accent-light:#ffe6df;--bg:#eef7fb;--surface:#fff;--text:#33475b;--text-h:#1d2b3a;--text-muted:#7c93ac;--border:#dcebf4}:root[data-theme=girl]{--color-primary:#ef8fb0;--color-primary-dark:#d96a91;--color-primary-light:#fdeef3;--color-secondary:#6bc9c3;--color-secondary-dark:#48a49d;--color-secondary-light:#e6f7f5;--color-accent:#ffb870;--color-accent-dark:#f29a45;--color-accent-light:#fff2e2;--bg:#fdf3f6;--surface:#fff;--text:#5b4152;--text-h:#3a2734;--text-muted:#9a7f8c;--border:#f3dbe4}.page{text-align:left;box-sizing:border-box;max-width:960px;margin:0 auto;padding:32px 24px 60px}.page--narrow{max-width:440px}.page-title{align-items:center;gap:10px;display:flex}.btn{font-size:15px;font-weight:600;font-family:var(--sans);border-radius:var(--radius-md);cursor:pointer;box-shadow:var(--shadow-sm);transition:transform var(--transition), box-shadow var(--transition), background var(--transition), color var(--transition), opacity var(--transition);border:none;justify-content:center;align-items:center;gap:6px;padding:10px 20px;display:inline-flex}.btn:hover:not(:disabled){box-shadow:var(--shadow-md);transform:translateY(-1px)}.btn:active:not(:disabled){transform:translateY(0)}.btn:disabled{opacity:.55;cursor:not-allowed;box-shadow:none;transform:none}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--color-primary-dark)}.btn-secondary{background:var(--surface);color:var(--text);border:1.5px solid var(--border);box-shadow:none}.btn-secondary:hover:not(:disabled){background:var(--color-primary-light);border-color:var(--color-primary);color:var(--color-primary-dark)}.btn-accent{background:var(--color-accent);color:#fff}.btn-accent:hover:not(:disabled){background:var(--color-accent-dark)}.btn-danger{background:var(--color-danger);color:#fff}.btn-danger:hover:not(:disabled){opacity:.9}.btn-ghost{color:var(--color-primary);box-shadow:none;background:0 0;padding:8px 12px}.btn-ghost:hover:not(:disabled){background:var(--color-primary-light);transform:none}.btn-block{width:100%}.btn-sm{padding:6px 14px;font-size:13px}.card{background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);text-align:left;transition:transform var(--transition), box-shadow var(--transition);padding:20px 24px}.card:hover{box-shadow:var(--shadow-lg)}.card-list{flex-direction:column;gap:14px;margin:0;padding:0;list-style:none;display:flex}.list-link-card{background:var(--surface);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);color:var(--text-h);transition:transform var(--transition), box-shadow var(--transition), background var(--transition), color var(--transition);justify-content:space-between;align-items:center;gap:12px;padding:16px 20px;font-weight:600;text-decoration:none;display:flex}.list-link-card:hover{box-shadow:var(--shadow-md);background:var(--color-primary-light);color:var(--color-primary-dark);transform:translate(4px)}.list-link-card__arrow{color:var(--color-primary);flex-shrink:0;font-size:18px}.field{text-align:left;margin-bottom:16px}.field label{color:var(--text-h);margin-bottom:6px;font-size:14px;font-weight:600;display:block}.input{width:100%;font-size:15px;font-family:var(--sans);border:1.5px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text-h);box-sizing:border-box;transition:border-color var(--transition), box-shadow var(--transition);padding:10px 14px}.input:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-light);outline:none}.otp-input{text-align:center;letter-spacing:8px;font-size:22px;font-weight:700}.form-error{background:var(--color-danger-light);color:var(--color-danger);border-radius:var(--radius-sm);margin-bottom:16px;padding:10px 14px;font-size:14px;font-weight:500}.form-success{background:var(--color-secondary-light);color:var(--color-secondary-dark);border-radius:var(--radius-sm);margin-bottom:16px;padding:10px 14px;font-size:14px;font-weight:500}.badge{border-radius:var(--radius-full);white-space:nowrap;align-items:center;padding:3px 10px;font-size:13px;font-weight:700;display:inline-flex}.badge-success{background:var(--color-secondary-light);color:var(--color-secondary-dark)}.badge-warning{background:var(--color-accent-light);color:var(--color-accent-dark)}.badge-neutral{background:var(--border);color:var(--text-muted)}.app-shell{background:var(--bg);flex-direction:column;min-height:100vh;display:flex}.app-header{background:var(--surface);border-bottom:1px solid var(--border);box-shadow:var(--shadow-sm);z-index:10;justify-content:space-between;align-items:center;gap:16px;padding:14px 28px;display:flex;position:sticky;top:0}.app-header__brand{color:var(--color-primary-dark);align-items:center;gap:8px;font-size:20px;font-weight:800;text-decoration:none;display:flex}.app-header__actions{align-items:center;gap:12px;display:flex}.logout-button{background:var(--color-danger-light);color:var(--color-danger);border-radius:var(--radius-full);font-size:14px;font-weight:700;font-family:var(--sans);cursor:pointer;transition:background var(--transition), color var(--transition);border:none;align-items:center;gap:6px;padding:8px 16px;display:flex}.logout-button:hover{background:var(--color-danger);color:#fff}.app-body{flex:1;align-items:stretch;display:flex}.app-main{flex:1;min-width:0;position:relative}.theme-loading-overlay{background:color-mix(in srgb, var(--surface) 70%, transparent);z-index:5;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.theme-loading-overlay__spinner{border:4px solid var(--border);border-top-color:var(--color-primary);border-radius:var(--radius-full);width:36px;height:36px;animation:.7s linear infinite theme-loading-spin}@keyframes theme-loading-spin{to{transform:rotate(360deg)}}.app-footer{text-align:center;color:var(--text-muted);background:var(--surface);border-top:1px solid var(--border);padding:14px 28px;font-size:13px}.sidebar{background:var(--surface);border-right:1px solid var(--border);box-sizing:border-box;flex-shrink:0;width:240px;padding:20px 12px}.sidebar__nav-list{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.sidebar__link{border-radius:var(--radius-md);color:var(--text);transition:background var(--transition), color var(--transition);align-items:center;gap:10px;padding:10px 14px;font-size:15px;font-weight:600;text-decoration:none;display:flex}.sidebar__link:hover{background:var(--color-primary-light);color:var(--color-primary-dark)}.sidebar__link--active{background:var(--color-primary);color:#fff;box-shadow:var(--shadow-sm)}.sidebar__link--active:hover{background:var(--color-primary-dark);color:#fff}.user-switcher{position:relative}.user-switcher__trigger{background:var(--color-primary-light);color:var(--color-primary-dark);border-radius:var(--radius-full);font-size:14px;font-weight:700;font-family:var(--sans);cursor:pointer;transition:background var(--transition), color var(--transition);border:none;align-items:center;gap:8px;padding:8px 16px;display:flex}.user-switcher__trigger:hover{background:var(--color-primary);color:#fff}.user-switcher__dropdown{background:var(--surface);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);z-index:20;min-width:200px;margin:0;padding:6px;list-style:none;position:absolute;top:calc(100% + 8px);right:0}.user-switcher__dropdown li{border-radius:var(--radius-sm);cursor:pointer;transition:background var(--transition), color var(--transition);padding:10px 14px;font-weight:500}.user-switcher__dropdown li:hover{background:var(--color-primary-light);color:var(--color-primary-dark)}.user-switcher__dropdown ul{margin:0;padding:0;list-style:none}.user-switcher__section+.user-switcher__section{border-top:1px solid var(--border);margin-top:6px;padding-top:10px}.user-switcher__section-label{text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);padding:4px 10px 2px;font-size:11px;font-weight:700}.user-switcher__themes{flex-direction:column;gap:4px;display:flex}.theme-option{border-radius:var(--radius-sm);width:100%;font-family:var(--sans);color:var(--text);text-align:left;cursor:pointer;transition:background var(--transition), color var(--transition);background:0 0;border:none;align-items:center;gap:8px;padding:8px 10px;font-size:14px;font-weight:500;display:flex}.theme-option:hover{background:var(--color-primary-light);color:var(--color-primary-dark)}.theme-option--active{background:var(--color-primary);color:#fff;font-weight:700}.modal-overlay{z-index:1000;background:#1d2b3a80;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal{background:var(--surface);border-radius:var(--radius-lg);width:100%;max-width:420px;box-shadow:var(--shadow-lg);text-align:left;padding:32px}@keyframes characterSlideIn{0%{opacity:0;transform:translate(-70px)}to{opacity:1;transform:translate(0)}}@keyframes characterSlideOut{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(-70px)}}@keyframes characterBounce{0%,to{transform:translateY(0)rotate(-2deg)}50%{transform:translateY(-10px)rotate(2deg)}}@keyframes bubbleFadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.character-companion{z-index:900;flex-direction:column;align-items:center;gap:8px;animation:.5s ease-out characterSlideIn;display:flex;position:fixed;bottom:24px;left:216px}.character-companion--leaving{animation:.4s ease-in forwards characterSlideOut}.character-companion__close{border-radius:var(--radius-full);border:1px solid var(--border);background:var(--surface);width:24px;height:24px;box-shadow:var(--shadow-sm);cursor:pointer;font-size:14px;line-height:1;position:absolute;top:-10px;right:-10px}.character-companion__sprite{width:120px;height:auto;filter:drop-shadow(var(--shadow-md));animation:2.4s ease-in-out infinite characterBounce}.character-companion__play{padding:6px 16px;font-size:14px}.speech-bubble{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);text-align:center;max-width:200px;padding:8px 14px;font-size:14px;animation:.3s ease-out bubbleFadeIn}.tic-tac-toe-board{grid-template-columns:repeat(3,1fr);gap:8px;margin:16px 0;display:grid}.tic-tac-toe-cell{appearance:none;aspect-ratio:1;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--color-primary-light);color:var(--text-h);cursor:pointer;font-size:32px;font-weight:800}.tic-tac-toe-cell:disabled{cursor:default;opacity:1}.tic-tac-toe-cell--x{color:var(--color-primary-dark)}.tic-tac-toe-cell--o{color:var(--color-accent-dark)}.tic-tac-toe-result{text-align:center;font-weight:600}@media (width<=768px){.character-companion{bottom:16px;left:12px}.character-companion__sprite{width:160px}.speech-bubble{max-width:190px;font-size:14px}}.loading-state{text-align:center;color:var(--text-muted);margin-top:40px;font-size:16px}.empty-state{color:var(--text-muted);padding:20px 0;font-size:15px}.stack{flex-direction:column;gap:12px;display:flex}.row{align-items:center;gap:10px;display:flex}.gap-sm{gap:8px}.mt-sm{margin-top:8px}.ml-sm{margin-left:8px}.mt-md{margin-top:16px}.mt-lg{margin-top:24px}.child-card__name{color:var(--text-h);font-size:17px;font-weight:700}.child-card__birthdate{color:var(--text-muted);font-size:14px;font-weight:400}.stats-table{border-collapse:collapse;width:100%;font-size:14px}.stats-table th{text-align:left;background:var(--bg);color:var(--text-muted);text-transform:uppercase;letter-spacing:.4px;padding:8px 10px;font-size:12px;font-weight:600}.stats-table th:not(:first-child),.stats-table td:not(:first-child){text-align:center}.stats-table td{border-top:1px solid var(--border);padding:8px 10px}.stats-table__num{color:var(--text-h);font-weight:600}.progress-bar{border-radius:var(--radius-full);background:var(--border);height:8px;margin-top:24px;overflow:hidden}.progress-bar__fill{background:linear-gradient(90deg, var(--color-primary), var(--color-secondary));height:100%;transition:width .3s}.progress-label{color:var(--text-muted);margin-top:8px;font-size:13px;font-weight:600}.question-card{background:var(--color-primary-light);border-radius:var(--radius-lg);text-align:center;color:var(--text-h);padding:24px;font-size:24px;font-weight:700}.word-chip{border-radius:var(--radius-full);background:var(--surface);box-shadow:var(--shadow-sm);font-size:15px;font-weight:600;font-family:var(--sans);cursor:pointer;transition:transform var(--transition), box-shadow var(--transition), background var(--transition), opacity var(--transition);border:none;padding:8px 18px}.word-chip:hover:not(:disabled){background:var(--color-primary-light);box-shadow:var(--shadow-md);transform:translateY(-2px)}.word-chip:disabled{opacity:.5;cursor:default}.word-chip--selected{background:var(--color-secondary-light);color:var(--color-secondary-dark)}.sentence-drop-zone{border:2px dashed var(--border);border-radius:var(--radius-md);background:var(--bg);flex-wrap:wrap;align-items:center;gap:8px;min-height:48px;padding:12px;display:flex}.feedback{border-radius:var(--radius-md);margin-top:16px;padding:14px 18px;font-size:17px;font-weight:700}.feedback--correct{background:var(--color-secondary-light);color:var(--color-secondary-dark)}.feedback--incorrect{background:var(--color-danger-light);color:var(--color-danger)}.answer-choice-btn{border:1.5px solid var(--border);border-radius:var(--radius-md);background:var(--surface);color:var(--text-h);cursor:pointer;transition:background var(--transition), border-color var(--transition), transform var(--transition);margin-right:8px;padding:10px 22px;font-size:18px;font-weight:700}.answer-choice-btn:hover:not(:disabled){border-color:var(--color-primary);background:var(--color-primary-light);transform:translateY(-1px)}.answer-choice-btn:disabled{opacity:.5;cursor:not-allowed}.answer-input{width:100%;max-width:220px;font-size:18px;font-family:var(--sans);border:1.5px solid var(--border);border-radius:var(--radius-sm);box-sizing:border-box;transition:border-color var(--transition), box-shadow var(--transition);padding:10px 14px}.answer-input:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-light);outline:none}.text-center{text-align:center}.text-muted{color:var(--text-muted)}.row--center{justify-content:center}.row--between{justify-content:space-between}.instruction-text{color:var(--text);font-size:17px}.word-chip-row{flex-wrap:wrap;gap:8px;display:flex}.selected-word-chip{background:var(--color-secondary-light);color:var(--color-secondary-dark);border-radius:var(--radius-full);padding:6px 14px;font-weight:600}@media (width<=768px){.app-header{flex-wrap:wrap;row-gap:8px;padding:12px 16px}.app-header__brand{font-size:18px}.app-header__actions{gap:8px}.app-body{flex-direction:column}.sidebar{border-right:none;border-bottom:1px solid var(--border);width:100%;padding:8px 10px}.sidebar__nav-list{flex-flow:wrap;gap:6px}.sidebar__link{padding:8px 12px;font-size:14px}.page{padding:20px 16px 40px}}@media (width<=480px){.app-header__brand{font-size:16px}.user-switcher__trigger,.logout-button{padding:7px 12px;font-size:13px}.card{padding:16px 18px}.modal{padding:20px}.question-card{padding:18px;font-size:19px}.stats-table{font-size:12px}.stats-table th,.stats-table td{padding:6px}}:root[data-theme=notebook] .app-main{background-color:#f6efdf;background-image:linear-gradient(90deg,#aebfd68c 1px,#0000 1px),linear-gradient(#aebfd68c 1px,#0000 1px),linear-gradient(90deg,#0000 calc(9% - 1px),#b2453f8c calc(9% - 1px) 9%,#0000 9%);background-repeat:repeat,repeat,no-repeat;background-size:22px 22px,22px 22px,100% 100%;background-attachment:local,local,local;position:relative}:root[data-theme=notebook] .app-main:before{content:"";pointer-events:none;z-index:0;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' preserveAspectRatio='none'%3E%3Cfilter id='b' x='-20%25' y='-20%25' width='140%25' height='140%25'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' seed='7' result='n'/%3E%3CfeDisplacementMap in='SourceGraphic' in2='n' scale='6'/%3E%3C/filter%3E%3Cg filter='url(%23b)' fill='%232f4374' fill-opacity='0.12'%3E%3Ccircle cx='93' cy='90' r='7'/%3E%3Ccircle cx='97.5' cy='94' r='2.2'/%3E%3Ccircle cx='89' cy='95' r='1.4'/%3E%3C/g%3E%3Cg stroke='%23b2453f' stroke-opacity='0.55' stroke-width='0.6' fill='none' stroke-linecap='round'%3E%3Cpath d='M3.2 21 Q4.5 19.5 6 21 Q7.5 22.5 4.8 23.3'/%3E%3Cpath d='M2.8 43 L4.6 45.5 L7.6 41'/%3E%3C/g%3E%3C/svg%3E");background-repeat:no-repeat;background-size:100% 100%;position:absolute;inset:0}:root[data-theme=blackboard] .app-main{background-color:#1b1b19;background-image:linear-gradient(#1b1b1947,#1b1b1947),url(/assets/board-BiIdtUAD.webp);background-repeat:no-repeat;background-size:100% 100%;background-attachment:local}@media (width<=700px){:root[data-theme=blackboard] .app-main{background-image:linear-gradient(#1b1b1947,#1b1b1947),url(/assets/board-narrow-BD28tmGe.webp)}}:root[data-theme=boy] .app-main:has(.page--children){background-image:linear-gradient(#ffffff80,#ffffff80),url(/assets/boy-children-DXSMIBB2.webp);background-repeat:no-repeat;background-size:100% 100%;background-attachment:local}:root[data-theme=boy] .app-main:has(.page--family){background-image:linear-gradient(#ffffff80,#ffffff80),url(/assets/boy-family-DpGN_g4W.webp);background-repeat:no-repeat;background-size:100% 100%;background-attachment:local}:root[data-theme=girl] .app-main:has(.page--children){background-image:linear-gradient(#ffffff80,#ffffff80),url(/assets/girl-children-CEqNn4QB.webp);background-repeat:no-repeat;background-size:100% 100%;background-attachment:local}:root[data-theme=girl] .app-main:has(.page--family){background-image:linear-gradient(#ffffff80,#ffffff80),url(/assets/girl-family-DTbaJjQg.webp);background-repeat:no-repeat;background-size:100% 100%;background-attachment:local}*{box-sizing:border-box}body{font:16px/1.5 var(--sans);letter-spacing:.1px;color-scheme:light dark;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0}#root{flex-direction:column;min-height:100svh;display:flex}h1,h2,h3{font-family:var(--sans);color:var(--text-h);margin:0 0 12px;font-weight:700}h1{letter-spacing:-.4px;font-size:32px}h2{letter-spacing:-.24px;font-size:24px}h3{font-size:18px}p{margin:0 0 8px}a{color:var(--color-primary)}button{font-family:var(--sans)}code{background:var(--border);color:var(--text-h);border-radius:4px;padding:3px 6px;font-family:ui-monospace,Consolas,monospace;font-size:14px}
