:root{--color-primary:#4f46e5;--color-primary-hover:#4338ca;--color-success:#16a34a;--color-danger:#dc2626;--color-warning:#f59e0b;--color-streak-bonus:#d97706;--color-token:#f59e0b;--color-bg:#f8fafc;--color-surface:#fff;--color-text:#1e293b;--color-text-muted:#64748b;--color-border:#e2e8f0;--radius:8px;--radius-lg:12px;--shadow:0 1px 3px #0000001a;--shadow-lg:0 4px 12px #0000001a}*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{background:var(--color-bg);color:var(--color-text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;line-height:1.6}.app-shell{flex-direction:column;min-height:100vh;display:flex}.app-header{background:var(--color-surface);border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;padding:.75rem 1.5rem;display:flex}.app-title{color:var(--color-primary);font-size:1.25rem}.header-right{align-items:center;gap:.75rem;display:flex}.user-badge{color:var(--color-text-muted);font-size:.9rem}.app-main{flex:1;width:100%;max-width:900px;margin:0 auto;padding:1.5rem}.app-footer{text-align:center;color:var(--color-text-muted);opacity:.4;padding:.5rem;font-size:.7rem}.app-loading{height:100vh;color:var(--color-text-muted);justify-content:center;align-items:center;font-size:1.2rem;display:flex}.btn{border:1px solid var(--color-border);border-radius:var(--radius);cursor:pointer;background:var(--color-surface);color:var(--color-text);justify-content:center;align-items:center;padding:.5rem 1rem;font-size:.9rem;transition:all .15s;display:inline-flex}.btn:hover:not(:disabled){box-shadow:var(--shadow)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover)}.btn-secondary{background:var(--color-surface);color:var(--color-text)}.btn-danger{background:var(--color-danger);color:#fff;border-color:var(--color-danger)}.btn-small{padding:.25rem .5rem;font-size:.8rem}.btn-large{padding:.75rem 1.5rem;font-size:1.1rem}.page{animation:.2s fadeIn}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.page-header{justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1.5rem;display:flex}.page-actions{gap:.5rem;display:flex}.page-header-actions{align-items:flex-start;gap:.5rem;display:flex}.meta-editor{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);flex-direction:column;gap:.75rem;margin-bottom:1rem;padding:1rem;display:flex}.meta-editor label{color:var(--color-text-muted);flex-direction:column;gap:.25rem;font-size:.85rem;font-weight:600;display:flex}.meta-editor input,.meta-editor select{border:1px solid var(--color-border);border-radius:var(--radius);padding:.5rem;font-size:.95rem}.merge-panel{background:var(--color-surface);border:2px solid var(--color-primary);border-radius:var(--radius-lg);margin-bottom:1rem;padding:1.25rem}.merge-panel h3{margin-bottom:.75rem}.merge-list{flex-direction:column;gap:.5rem;margin-bottom:1rem;display:flex}.merge-item{border:1px solid var(--color-border);border-radius:var(--radius);cursor:pointer;align-items:center;gap:.5rem;padding:.5rem;display:flex}.merge-item:hover{background:var(--color-bg)}.merge-item input[type=checkbox]{width:18px;height:18px}.merge-item__name{flex:1;font-weight:500}.merge-item__count{color:var(--color-text-muted);font-size:.85rem}.filter-bar{flex-wrap:wrap;align-items:center;gap:.75rem;margin-bottom:1rem;display:flex}.filter-group{gap:.5rem;display:flex}.filter-select{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);padding:.35rem .5rem;font-size:.85rem}.login-screen{background:var(--color-bg);justify-content:center;align-items:center;min-height:100vh;display:flex}.login-card{background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);text-align:center;width:100%;max-width:360px;padding:2rem}.login-card h1,.login-card h2{margin-bottom:1rem}.login-card p{color:var(--color-text-muted);margin-bottom:1rem}.setup-name-input{border:1px solid var(--color-border);border-radius:var(--radius);text-align:center;width:100%;margin-bottom:1rem;padding:.75rem;font-size:1rem}.pin-digits{justify-content:center;gap:.5rem;margin-bottom:1rem;display:flex}.pin-digit{text-align:center;border:2px solid var(--color-border);border-radius:var(--radius);outline:none;width:3rem;height:3.5rem;font-size:1.5rem}.pin-digit:focus{border-color:var(--color-primary)}.pin-error{color:var(--color-danger);margin-top:.5rem;font-size:.85rem}.subject-section{margin-bottom:1.5rem}.subject-section__title{color:var(--color-text-muted);margin-bottom:.75rem;font-size:1rem;font-weight:600}.subject-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.75rem;display:grid}.subject-tile{background:var(--color-primary);color:#fff;border-radius:var(--radius-lg);cursor:pointer;border:none;flex-direction:column;align-items:center;gap:.25rem;padding:1rem .75rem;font-family:inherit;transition:transform .1s,box-shadow .15s;display:flex}.subject-tile:hover{box-shadow:var(--shadow-lg);transform:translateY(-2px)}.subject-tile__name{font-size:1.05rem;font-weight:600}.subject-tile__count{opacity:.85;font-size:.8rem}.package-list{gap:1rem;display:grid}.package-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);cursor:pointer;padding:1.25rem;transition:box-shadow .15s}.package-card:hover{box-shadow:var(--shadow-lg)}.package-card__header{justify-content:space-between;align-items:flex-start;margin-bottom:.5rem;display:flex}.package-card__header h3{font-size:1.1rem}.package-card__meta{flex-wrap:wrap;gap:.5rem;margin-bottom:.5rem;display:flex}.package-card__desc{color:var(--color-text-muted);margin-bottom:.75rem;font-size:.9rem}.tag{background:var(--color-bg);color:var(--color-text-muted);border-radius:4px;padding:.15rem .5rem;font-size:.8rem;display:inline-block}.tag--muted{opacity:.6;font-style:italic}.status-badge{border-radius:4px;padding:.2rem .5rem;font-size:.75rem;font-weight:600}.status-badge--draft{color:#92400e;background:#fef3c7}.status-badge--ready{color:#1e40af;background:#dbeafe}.status-badge--published{color:#166534;background:#dcfce7}.status-badge--archived{color:#475569;background:#f1f5f9}.empty-state{text-align:center;color:var(--color-text-muted);padding:3rem}.import-form{max-width:700px}.import-tabs{align-items:flex-start;gap:1.5rem;margin-bottom:1rem;display:flex}.import-paste{flex:2}.import-upload{flex:1}.import-divider{color:var(--color-text-muted);align-self:center;font-style:italic}.json-textarea{border:1px solid var(--color-border);border-radius:var(--radius);resize:vertical;width:100%;margin-bottom:.75rem;padding:.75rem;font-family:monospace;font-size:.85rem}.import-error{color:var(--color-danger);border:1px solid var(--color-danger);border-radius:var(--radius);margin-top:1rem;padding:.75rem}.import-success{color:var(--color-success);border:1px solid var(--color-success);border-radius:var(--radius);margin-bottom:1rem;padding:.75rem}.validation-report--ok{color:var(--color-success);padding:.75rem}.validation-section h4{margin-bottom:.5rem}.validation-section ul{padding-left:0;list-style:none}.validation-section li{padding:.25rem 0;font-size:.85rem}.validation-section--errors{color:var(--color-danger);margin-bottom:1rem}.validation-section--warnings{color:#b45309}.val-path{color:var(--color-text-muted);font-size:.8rem}.package-detail .package-meta{gap:.5rem;margin-top:.5rem;display:flex}.package-actions{gap:.5rem;margin:1rem 0;display:flex}.item-list{flex-direction:column;gap:.5rem;display:flex}.item-row-wrap{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);overflow:hidden}.item-row{align-items:center;gap:.75rem;padding:.5rem .75rem;display:flex}.item-num{color:var(--color-text-muted);min-width:1.5rem;font-weight:600}.item-question{flex:1}.item-actions{flex-shrink:0;gap:.25rem;display:flex}.item-editor{border-top:1px solid var(--color-border);background:var(--color-bg);flex-direction:column;gap:.75rem;padding:1rem;display:flex}.item-editor label{color:var(--color-text-muted);flex-direction:column;gap:.25rem;font-size:.85rem;font-weight:600;display:flex}.item-editor input[type=text],.item-editor input[type=number],.item-editor input:not([type]){border:1px solid var(--color-border);border-radius:var(--radius);padding:.5rem;font-size:.95rem}.item-editor textarea{border:1px solid var(--color-border);border-radius:var(--radius);resize:vertical;width:100%;padding:.5rem;font-family:inherit;font-size:.95rem;overflow:hidden}.item-editor fieldset{border:1px solid var(--color-border);border-radius:var(--radius);flex-direction:column;gap:.5rem;padding:.75rem;display:flex}.item-editor legend{color:var(--color-text-muted);padding:0 .25rem;font-size:.85rem;font-weight:600}.editor-option-row,.editor-pair-row{align-items:center;gap:.5rem;display:flex}.editor-option-row input[type=text],.editor-option-row input:not([type]),.editor-pair-row input{flex:1}.editor-radio{flex-shrink:0;width:auto}.editor-radio-label{align-items:center;flex-direction:row!important;gap:.5rem!important}.editor-pair-arrow{color:var(--color-text-muted);flex-shrink:0}.editor-order-num{color:var(--color-text-muted);flex-shrink:0;min-width:1.5rem;font-weight:600}.editor-checkbox{align-items:center;flex-direction:row!important;gap:.5rem!important}.editor-actions{gap:.5rem;margin-top:.25rem;display:flex}.add-item-section{margin-top:1.5rem}.add-item-types{flex-wrap:wrap;gap:.5rem;margin-top:.5rem;display:flex}.lesson-start{text-align:center;padding:3rem 1rem}.lesson-start h2{margin-bottom:1.5rem}.lesson-start-actions{flex-direction:column;align-items:center;gap:.75rem;display:flex}.question-count-select{justify-content:center;gap:.5rem;margin-bottom:1.5rem;display:flex}.question-count-select .btn{border:2px solid var(--color-border);box-sizing:border-box;min-width:3rem}.question-count-select .btn-primary{border-color:var(--color-primary)}.lesson-loading{text-align:center;color:var(--color-text-muted);padding:3rem}.lesson-error{color:var(--color-danger);margin-top:1rem}.btn-end-lesson{opacity:.6;margin-top:1.5rem;font-size:.85rem}.btn-end-lesson:hover{opacity:1}.lesson-progress{margin-bottom:1.5rem}.progress-text{color:var(--color-text-muted);margin-bottom:.5rem;font-size:.85rem}.progress-bar{background:var(--color-border);border-radius:4px;height:8px;overflow:hidden}.progress-fill{background:var(--color-primary);border-radius:4px;height:100%;transition:width .3s}.question-card{background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:2rem}.question-header{align-items:center;gap:.5rem;margin-bottom:1.5rem;display:flex}.question-text{white-space:pre-line;margin-bottom:0;font-size:1.3rem}.question-hint{color:var(--color-text-muted);margin-bottom:1rem;font-size:.9rem;font-style:italic}.question-image{justify-content:center;margin-bottom:1.5rem;display:flex}.question-image img{object-fit:contain;max-width:100%;height:auto;max-height:300px}.question-image--compact img{max-height:200px}.activity{margin-top:1rem}.mc-options{flex-direction:column;gap:.5rem;margin-bottom:1rem;display:flex}.mc-option-row{align-items:center;gap:.4rem;display:flex}.mc-option{border:2px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);cursor:pointer;text-align:left;flex:1;padding:.75rem 1rem;font-size:1rem;transition:all .15s}.mc-option:hover{border-color:var(--color-primary)}.mc-option--selected{border-color:var(--color-primary);background:#eef2ff}.tf-buttons,.flashcard-buttons{justify-content:center;gap:1rem;display:flex}.btn-true{background:var(--color-success);color:#fff;border-color:var(--color-success)}.btn-false{background:var(--color-danger);color:#fff;border-color:var(--color-danger)}.flashcard-answer-row{justify-content:center;align-items:center;gap:.5rem;margin-bottom:1.5rem;display:flex}.flashcard-answer{text-align:center;color:var(--color-primary);margin-bottom:0;font-size:1.5rem;font-weight:700}.flashcard-prompt{text-align:center;margin-bottom:1rem;font-size:1.1rem}.fillin-input,.math-input{border:2px solid var(--color-border);border-radius:var(--radius);width:100%;margin-bottom:1rem;padding:.75rem;font-size:1.1rem}.fillin-input:focus,.math-input:focus{border-color:var(--color-primary);outline:none}.math-input-row{align-items:center;gap:.5rem;margin-bottom:1rem;display:flex}.math-input-row .math-input{margin-bottom:0}.math-unit{color:var(--color-text-muted);font-size:1rem}.matching-columns{gap:1rem;margin-bottom:1rem;display:flex}.matching-col{flex-direction:column;flex:1;gap:.5rem;display:flex}.matching-arrows{color:var(--color-text-muted);flex-shrink:0;align-items:center;display:flex}.matching-item{border:2px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);cursor:pointer;text-align:left;padding:.5rem .75rem;font-size:.9rem}.matching-item--selected{border-color:var(--color-primary);background:#eef2ff}.matching-item--paired{border-color:var(--color-success);background:#f0fdf4}.matching-item--used{opacity:.5}.matching-pair{color:var(--color-success);font-weight:600}.matching-actions{gap:.5rem;display:flex}.ordering-list{flex-direction:column;gap:.5rem;margin-bottom:1rem;display:flex}.ordering-item{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);align-items:center;gap:.75rem;padding:.5rem .75rem;display:flex}.ordering-num{color:var(--color-text-muted);min-width:1.5rem;font-weight:600}.ordering-text{flex:1}.ordering-controls{gap:.25rem;display:flex}.feedback-overlay{text-align:center;border-radius:var(--radius-lg);padding:2rem;animation:.2s fadeIn}.feedback--correct{border:2px solid var(--color-success);background:#f0fdf4}.feedback--wrong{border:2px solid var(--color-danger);background:#fef2f2}.feedback-icon{margin-bottom:.5rem;font-size:3rem}.feedback--correct .feedback-icon{color:var(--color-success)}.feedback--wrong .feedback-icon{color:var(--color-danger)}.feedback-question{white-space:pre-line;color:var(--color-text);margin:.75rem 0;font-size:1.1rem;font-weight:600}.feedback-given{color:var(--color-danger);margin:.75rem 0}.feedback-answer{color:var(--color-success);margin:.75rem 0}.feedback-explanation{color:var(--color-text-muted);margin-bottom:1rem;font-style:italic}.lesson-summary{text-align:center}.summary-header{padding:2rem 0}.summary-emoji{margin-bottom:.5rem;font-size:3rem;display:block}.summary-header h2{font-size:2rem}.summary-score{color:var(--color-text-muted);font-size:1.2rem}.summary-answers{text-align:left;max-width:500px;margin:1.5rem auto}.summary-answer{border-radius:var(--radius);align-items:center;gap:.75rem;margin-bottom:.25rem;padding:.5rem .75rem;display:flex}.summary-answer--correct{background:#f0fdf4}.summary-answer--wrong{background:#fef2f2}.summary-icon{font-size:1.2rem;font-weight:700}.summary-answer--correct .summary-icon{color:var(--color-success)}.summary-answer--wrong .summary-icon{color:var(--color-danger)}.summary-correct{color:var(--color-text-muted);font-weight:400}.summary-actions{justify-content:center;gap:.75rem;margin-top:1.5rem;display:flex}.children-list{margin-bottom:2rem}.child-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);flex-direction:column;gap:.5rem;margin-bottom:.5rem;padding:.75rem 1rem;font-size:1.05rem;display:flex}.child-card__main{align-items:center;gap:.75rem;display:flex}.child-card__pin-row{align-items:center;gap:.5rem;padding-left:2rem;font-size:.9rem;display:flex}.child-card__pin-row input{border:1px solid var(--color-border);border-radius:var(--radius);width:6rem;padding:.25rem .5rem;font-size:.9rem}.child-card__pin{color:var(--color-text-muted)}.child-card__edit-form{border-top:1px solid var(--color-border);flex-wrap:wrap;gap:.5rem;padding:.75rem 1rem;display:flex}.child-card__edit-form label{color:var(--color-text-muted);flex-direction:column;gap:.2rem;font-size:.8rem;display:flex}.child-card__edit-form input{border:1px solid var(--color-border);border-radius:var(--radius);padding:.3rem .5rem;font-size:.9rem}.child-card__edit-form input[type=number]{width:5rem}.add-child-form{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:1.5rem}.add-child-form h3{margin-bottom:1rem}.add-child-form input{border:1px solid var(--color-border);border-radius:var(--radius);width:100%;margin-bottom:.75rem;padding:.5rem .75rem;font-size:.95rem;display:block}.child-card--clickable{cursor:pointer;transition:box-shadow .15s}.child-card--clickable:hover{box-shadow:var(--shadow-lg)}.child-card__name{flex:1}.child-card__tokens{color:#b8860b;margin-right:.25rem;font-size:.85rem}.child-card__add-token{margin-right:.5rem;padding:.1rem .4rem;font-size:.75rem}.child-card__action{color:var(--color-primary);font-size:.85rem;font-weight:600}.child-card__activity{flex-wrap:wrap;align-items:center;gap:.35rem;padding-left:2rem;font-size:.85rem;display:flex}.child-card__activity-label{color:var(--color-text-muted);margin-right:.15rem}.child-card__activity-empty{color:var(--color-text-muted);font-style:italic}.child-card__subject-pill{background:var(--color-bg);border:1px solid var(--color-border);color:var(--color-text);cursor:pointer;border-radius:4px;padding:.15rem .55rem;font-size:.8rem;transition:background .15s,border-color .15s;display:inline-block}.child-card__subject-pill:hover{background:var(--color-primary-light,#e0edff);border-color:var(--color-primary)}.child-card__subject-pill--active{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.child-card__activity-detail{border-top:1px solid var(--color-border);padding:.5rem 1rem .5rem 2rem;font-size:.85rem}.child-card__activity-loading{color:var(--color-text-muted)}.child-card__activity-error{color:var(--color-error,#c0392b);font-size:.85rem}.child-card__pkg-row{justify-content:space-between;align-items:center;padding:.25rem 0;display:flex}.child-card__pkg-name{font-weight:500}.child-card__pkg-stats{color:var(--color-text-muted);font-size:.8rem}.child-card__reviews{border-top:1px solid var(--color-border);padding-top:.5rem}.child-card__reviews-header{justify-content:space-between;align-items:center;margin-bottom:.5rem;display:flex}.child-card__reviews-title{font-size:.9rem;font-weight:600}.review-form{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius);flex-wrap:wrap;gap:.5rem;margin-bottom:.5rem;padding:.75rem;display:flex}.review-form label{color:var(--color-text-muted);flex-direction:column;flex:1;gap:.2rem;min-width:10rem;font-size:.8rem;display:flex}.review-form select,.review-form input{border:1px solid var(--color-border);border-radius:var(--radius);padding:.3rem .5rem;font-size:.9rem}.review-form input[type=number]{width:5rem}.review-form .editor-actions{width:100%}.review-form__pkg-chips{flex-wrap:wrap;gap:.4rem;margin-top:.25rem;display:flex}.review-form__pkg-chip{background:var(--card-bg,#f0f0f0);border:1px solid var(--border,#ccc);border-radius:1rem;align-items:center;gap:.3rem;padding:.15rem .6rem;font-size:.82rem;display:inline-flex}.review-form__pkg-chip button{cursor:pointer;color:inherit;opacity:.6;background:0 0;border:none;padding:0;font-size:1rem;line-height:1}.review-form__pkg-chip button:hover{opacity:1}.searchable-select{width:100%;position:relative}.searchable-select__input{border:1px solid var(--color-border);border-radius:var(--radius);box-sizing:border-box;width:100%;padding:.4rem .5rem;font-size:.9rem}.searchable-select__dropdown{z-index:10;background:var(--color-card-bg,#fff);border:1px solid var(--color-border);border-radius:var(--radius);max-height:12rem;margin:.2rem 0 0;padding:0;list-style:none;position:absolute;top:100%;left:0;right:0;overflow-y:auto;box-shadow:0 4px 12px #0000001a}.searchable-select__option{cursor:pointer;padding:.4rem .6rem;font-size:.88rem}.searchable-select__option:hover{background:var(--color-primary-light,#e0edff)}.searchable-select__empty{color:var(--color-text-muted);padding:.5rem .6rem;font-size:.85rem;font-style:italic}.review-item{align-items:center;gap:.75rem;padding:.4rem 0;font-size:.85rem;display:flex}.review-item__note{font-weight:500}.review-item__progress{color:var(--color-text-muted)}.review-item__status{border-radius:4px;padding:.1rem .4rem;font-size:.8rem}.review-item__status--active{color:var(--color-primary);background:var(--color-primary-light,#e0edff)}.review-item__status--completed{color:var(--color-success,#16a34a);background:#dcfce7}.review-item__status--cancelled{color:var(--color-text-muted);background:var(--color-bg)}.progress-activity-filters{gap:.5rem;margin-bottom:.75rem;display:flex}.progress-activity-filter{background:var(--color-surface);border:1px solid var(--color-border);cursor:pointer;border-radius:4px;padding:.25rem .75rem;font-size:.85rem;transition:background .15s,border-color .15s}.progress-activity-filter:hover{background:var(--color-primary-light,#e0edff);border-color:var(--color-primary)}.progress-activity-filter--active{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.progress-activity-ticker{flex-wrap:wrap;align-items:center;gap:.35rem;margin-bottom:1rem;font-size:.9rem;display:flex}.progress-activity-total{color:var(--color-text-muted);margin-right:.15rem}.progress-activity-empty{color:var(--color-text-muted);font-style:italic}.progress-activity-loading{color:var(--color-text-muted)}.progress-activity-error{color:var(--color-error,#c0392b);font-size:.85rem}.progress-subject-pill{background:var(--color-bg);border:1px solid var(--color-border);color:var(--color-text);cursor:pointer;border-radius:4px;padding:.15rem .55rem;font-size:.8rem;transition:background .15s,border-color .15s;display:inline-block}.progress-subject-pill:hover{background:var(--color-primary-light,#e0edff);border-color:var(--color-primary)}.progress-subject-pill--active{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.progress-activity-detail{border-top:1px solid var(--color-border);margin-bottom:1rem;padding:.5rem 0;font-size:.85rem}.progress-pkg-row{justify-content:space-between;align-items:center;padding:.25rem 0;display:flex}.progress-pkg-name{font-weight:500}.progress-pkg-stats{color:var(--color-text-muted);font-size:.8rem}.progress-summary-cards{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:1rem;margin-bottom:1.5rem;display:grid}.stat-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);text-align:center;padding:1.25rem}.stat-value{color:var(--color-primary);font-size:1.8rem;font-weight:700}.stat-label{color:var(--color-text-muted);margin-top:.25rem;font-size:.85rem}.progress-table-wrap{margin-bottom:1.5rem;overflow-x:auto}.progress-table{border-collapse:collapse;background:var(--color-surface);border-radius:var(--radius);border:1px solid var(--color-border);width:100%;overflow:hidden}.progress-table th,.progress-table td{text-align:left;border-bottom:1px solid var(--color-border);padding:.6rem .75rem}.progress-table th{color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.03em;background:var(--color-bg);font-size:.8rem;font-weight:600}.progress-table td{font-size:.9rem}.score-badge{border-radius:4px;padding:.15rem .5rem;font-size:.85rem;font-weight:600;display:inline-block}.score-badge--good{color:#166534;background:#dcfce7}.score-badge--ok{color:#92400e;background:#fef3c7}.score-badge--bad{color:#991b1b;background:#fef2f2}.weak-questions-list{flex-direction:column;gap:.5rem;margin-bottom:1.5rem;display:flex}.weak-question-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:.75rem 1rem}.weak-question-header{align-items:center;gap:.5rem;margin-bottom:.25rem;display:flex}.weak-question-pkg{color:var(--color-text-muted);font-size:.8rem}.weak-question-text{margin-bottom:.25rem}.weak-question-stats{align-items:center;gap:.5rem;display:flex}.weak-question-attempts{color:var(--color-text-muted);font-size:.8rem}.weak-question-correct{color:var(--color-success);margin-top:.5rem;font-size:.85rem}.weak-question-wrong-list{flex-wrap:wrap;align-items:center;gap:.35rem;margin-top:.35rem;display:flex}.weak-question-wrong-label{color:var(--color-text-muted);margin-right:.25rem;font-size:.8rem}.weak-answer-chip{color:#991b1b;background:#fef2f2;border:1px solid #fecaca;border-radius:4px;align-items:center;gap:.2rem;padding:.15rem .5rem;font-size:.8rem;display:inline-flex}.weak-answer-count{color:#b91c1c;font-size:.75rem;font-weight:600}.progress-table-row--clickable{cursor:pointer;transition:background .15s}.progress-table-row--clickable:hover{background:var(--color-bg)}.progress-table-row--clickable.selected{border-left:3px solid var(--color-primary);background:#eff6ff}.progress-detail-panel{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);margin-bottom:1.5rem;padding:1.25rem}.progress-detail-panel h4{margin:0 0 .75rem;font-size:1.1rem}.mastery-cards{gap:.75rem;margin-bottom:1rem;display:flex}.mastery-card{text-align:center;border-radius:var(--radius);border:1px solid var(--color-border);flex:1;padding:.75rem}.mastery-card--unknown{background:#f3f4f6}.mastery-card--learning{background:#fef3c7}.mastery-card--known{background:#dcfce7}.mastery-card--review{background:#fee2e2}.mastery-card .mastery-value{font-size:1.5rem;font-weight:700}.mastery-card .mastery-label{color:var(--color-text-muted);font-size:.8rem}.mastery-badge{border-radius:4px;padding:.1rem .4rem;font-size:.78rem;font-weight:600;display:inline-block}.mastery-badge--unknown{color:#374151;background:#e5e7eb}.mastery-badge--learning{color:#92400e;background:#fef3c7}.mastery-badge--known{color:#166534;background:#dcfce7}.mastery-badge--review{color:#991b1b;background:#fee2e2}.detail-collapse-toggle{color:var(--color-primary);cursor:pointer;background:0 0;border:none;margin-top:.5rem;padding:.25rem 0;font-size:.85rem}.detail-collapse-toggle:hover{text-decoration:underline}.preview-banner{color:#92400e;text-align:center;border-radius:var(--radius);background:#fef3c7;margin-bottom:1rem;padding:.4rem 1rem;font-size:.85rem;font-weight:600}.preview-actions{justify-content:flex-end;gap:.5rem;margin-bottom:.5rem;display:flex}@media (width<=600px){.app-main{padding:1rem}.import-tabs{flex-direction:column}.import-divider{text-align:center}.page-header,.matching-columns{flex-direction:column}}.speak-btn{cursor:pointer;border-radius:var(--radius);opacity:.7;background:0 0;border:none;flex-shrink:0;padding:.2rem .4rem;font-size:1.3rem;transition:opacity .2s,transform .2s}.speak-btn:hover:not(:disabled){opacity:1;transform:scale(1.1)}.speak-btn:disabled{cursor:default}.speak-btn--active{opacity:1;animation:.8s ease-in-out infinite speak-pulse}@keyframes speak-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.15)}}.header-reward{align-items:center;gap:.5rem;display:flex}.reward-progress-bar{background:var(--color-border);border-radius:3px;width:80px;height:5px;overflow:hidden}.reward-progress-fill{background:var(--color-success);border-radius:3px;height:100%;transition:width .5s}.token-badge{color:var(--color-token);align-items:center;gap:.25rem;font-size:.9rem;font-weight:600;display:inline-flex}.window-timer{color:var(--color-primary);font-variant-numeric:tabular-nums;font-size:.85rem;font-weight:600}.window-timer--expired{animation:.4s step-end 6 timer-blink}@keyframes timer-blink{50%{opacity:0}}.reward-feedback{flex-wrap:wrap;justify-content:center;align-items:center;gap:.5rem;margin:.75rem 0;display:flex}.reward-progress-gain{font-size:1.1rem;font-weight:700;animation:.4s rewardPop;display:inline-block}.reward-progress-gain--normal{color:var(--color-success)}.reward-progress-gain--streak{color:var(--color-streak-bonus);font-size:1.2rem}.reward-streak-badge{color:var(--color-streak-bonus);font-size:.85rem;font-weight:600}.reward-suppressed{color:var(--color-text-muted);font-size:.85rem;font-style:italic}.reward-token-earned{color:var(--color-token);align-items:center;gap:.3rem;font-weight:700;animation:.6s tokenBounce;display:flex}@keyframes rewardPop{0%{opacity:0;transform:scale(.5)}60%{transform:scale(1.3)}to{opacity:1;transform:scale(1)}}@keyframes tokenBounce{0%{opacity:0;transform:translateY(10px)scale(.5)}50%{transform:translateY(-5px)scale(1.1)}to{opacity:1;transform:translateY(0)scale(1)}}.hw-game{flex-direction:column;align-items:center;gap:1rem;max-width:400px;margin:0 auto;padding:1rem;display:flex}.hw-grid-wrapper{aspect-ratio:1;width:100%;max-width:360px;position:relative}.hw-grid{grid-template-rows:repeat(6,1fr);grid-template-columns:repeat(6,1fr);gap:2px;width:100%;height:100%;display:grid}.hw-cell{background:var(--color-surface);border:1px solid var(--color-border);border-radius:4px;justify-content:center;align-items:center;min-width:0;min-height:0;font-size:1.5rem;display:flex;overflow:hidden}.hw-cell--boulder{background:#78716c;border-color:#57534e}.hw-hero{--cell-size:calc((100% - 10px) / 6);--cell-step:calc(var(--cell-size) + 2px);left:calc(var(--hw-col) * var(--cell-step));top:calc(var(--hw-row) * var(--cell-step));width:var(--cell-size);height:var(--cell-size);z-index:2;pointer-events:none;background:#dbeafe;border:1px solid #93c5fd;border-radius:4px;justify-content:center;align-items:center;font-size:1.5rem;transition:left .2s ease-out,top .2s ease-out;display:flex;position:absolute}.hw-hero-sprite{transition:transform .15s ease-out;display:inline-block}.hw-hero--blocked{animation:.2s ease-out hw-jitter}@keyframes hw-jitter{0%{translate:0}25%{translate:-3px}50%{translate:3px}75%{translate:-2px}to{translate:0}}.hw-hero--win{animation:.6s ease-out hw-pop}@keyframes hw-pop{0%{transform:scale(1)}40%{transform:scale(1.25)}to{transform:scale(1)}}.hw-cell--enemy-dying{animation:.3s ease-out forwards hw-enemy-die}@keyframes hw-enemy-die{0%{background:#fecaca;transform:scale(1)}40%{background:#f87171;transform:scale(1.15)}to{opacity:0;transform:scale(0)}}.hw-cell--treasure-collecting{animation:.3s ease-out forwards hw-treasure-collect}@keyframes hw-treasure-collect{0%{transform:scale(1)}40%{transform:scale(1.4)}to{opacity:0;transform:scale(0)}}.hw-cell--win-princess{animation:.6s ease-out hw-princess-wiggle}@keyframes hw-princess-wiggle{0%{transform:rotate(0)}20%{transform:rotate(-8deg)}40%{transform:rotate(8deg)}60%{transform:rotate(-4deg)}80%{transform:rotate(4deg)}to{transform:rotate(0)}}.hw-plan{background:var(--color-surface);border-radius:var(--radius);border:1px solid var(--color-border);align-items:center;gap:4px;width:100%;min-height:3rem;padding:.5rem;display:flex;overflow-x:auto}.hw-plan-empty{color:var(--color-text-secondary);font-size:.9rem}.hw-plan-item{cursor:pointer;background:#e0e7ff;border:none;border-radius:4px;padding:.25rem .5rem;font-size:1.2rem;transition:background .15s}.hw-plan-item:hover:not(:disabled){background:#c7d2fe}.hw-plan-item--active{background:var(--color-primary);color:#fff}.hw-plan-item--done{opacity:.4}.hw-buttons{grid-template-columns:repeat(2,1fr);gap:.5rem;width:100%;max-width:300px;display:grid}.hw-go{grid-column:1/-1}.hw-result{text-align:center;border-radius:var(--radius-lg);background:var(--color-surface);width:100%;padding:1.5rem}.hw-result--win{color:var(--color-success)}.hw-result--lose{color:var(--color-danger)}.hw-result h2{margin-bottom:.5rem}.hw-result-actions{justify-content:center;gap:.75rem;margin-top:1rem;display:flex}.hw-back{margin-top:.5rem}.games-section{margin-top:2rem}.games-section h3{margin-bottom:.75rem}.games-no-tokens{color:var(--color-text-muted);margin-bottom:.75rem;font-size:.9rem}.games-buttons{flex-wrap:wrap;gap:.5rem;display:flex}.game-btn{align-items:center;gap:.5rem;display:inline-flex}.game-btn-level{opacity:.8;font-size:.75rem;font-weight:400}.game-btn-cost{opacity:.85;align-items:center;gap:.15rem;font-size:.8rem;display:inline-flex}.game-window-expired{color:var(--color-text-muted);margin:.5rem 0;font-size:.95rem;font-weight:500}.farmageddon-page{justify-content:center;padding:.5rem;display:flex}.fg-game{flex-direction:column;align-items:center;gap:.75rem;width:100%;max-width:800px;display:flex}.fg-board-wrapper{width:100%;max-width:800px;position:relative}.fg-board-canvas{touch-action:none;border-radius:var(--radius,8px);cursor:pointer;width:100%;height:100%;display:block}.fg-wave{color:var(--color-text,#1e293b);background:var(--color-surface,#f8fafc);border-radius:var(--radius,8px);border:1px solid var(--color-border,#e2e8f0);padding:.25rem .75rem;font-size:1rem;font-weight:600}.fg-toolbar{flex-wrap:wrap;justify-content:center;align-items:center;gap:.75rem;width:100%;display:flex}.fg-egg-counter{color:#b8860b;border-radius:var(--radius,8px);background:#fff8e1;border:1px solid #f0d060;justify-content:center;align-items:center;gap:.35rem;min-width:60px;padding:.4rem .75rem;font-size:1.2rem;font-weight:700;display:flex}.fg-egg-icon{font-size:1.3rem}.fg-tool-buttons{flex-wrap:wrap;justify-content:center;gap:.4rem;display:flex}.fg-tool-btn{border:2px solid var(--color-border,#e2e8f0);border-radius:var(--radius,8px);background:var(--color-surface,#f8fafc);cursor:pointer;flex-direction:column;align-items:center;gap:.1rem;min-width:60px;padding:.4rem .6rem;font-family:inherit;transition:border-color .15s,background .15s;display:flex}.fg-tool-btn:hover:not(:disabled){border-color:var(--color-primary,#4f46e5)}.fg-tool-btn--selected{border-color:var(--color-primary,#4f46e5);background:#eef2ff;box-shadow:0 0 0 2px #4f46e533}.fg-tool-btn--disabled{opacity:.4;cursor:not-allowed}.fg-tool-btn--sell{border-color:#fca5a5}.fg-tool-btn--sell.fg-tool-btn--selected{background:#fef2f2;border-color:#ef4444;box-shadow:0 0 0 2px #ef444433}.fg-tool-emoji{font-size:1.3rem}.fg-tool-label{text-transform:uppercase;letter-spacing:.03em;font-size:.65rem;font-weight:600}.fg-tool-cost{color:#b8860b;font-size:.65rem}.fg-summary-overlay{z-index:100;background:#00000080;justify-content:center;align-items:center;animation:.3s fadeIn;display:flex;position:fixed;inset:0}.fg-summary{text-align:center;background:#fff;border-radius:16px;width:90%;max-width:360px;padding:2rem 2.5rem;box-shadow:0 8px 30px #0003}.fg-summary-title{margin-bottom:1.2rem;font-size:2rem}.fg-summary--win .fg-summary-title{color:var(--color-success,#16a34a)}.fg-summary--lose .fg-summary-title{color:#dc2626}.fg-summary-stats{justify-content:center;gap:1.5rem;margin-bottom:1.5rem;display:flex}.fg-stat{flex-direction:column;align-items:center;gap:.2rem;display:flex}.fg-stat-icon{font-size:1.5rem}.fg-stat-value{font-size:1.4rem;font-weight:700}.fg-stat-label{color:#64748b;font-size:.7rem}.fg-summary-actions{justify-content:center;gap:.75rem;display:flex}@media (width<=600px){.fg-toolbar{gap:.4rem}.fg-tool-btn{min-width:50px;padding:.3rem .4rem}.fg-summary{padding:1.5rem}}.error-boundary{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:60vh;padding:2rem;display:flex}.error-boundary h2{color:var(--color-text);margin-bottom:.75rem;font-size:1.5rem}.error-boundary__message{color:var(--color-text-muted);word-break:break-word;max-width:400px;margin-bottom:1.5rem}.error-boundary__actions{gap:.75rem;display:flex}.arena-game{flex-direction:column;align-items:center;gap:.5rem;padding:.5rem;display:flex}.arena-header{justify-content:space-between;width:100%;max-width:800px;font-size:1.1rem;font-weight:600;display:flex}.arena-timer{font-variant-numeric:tabular-nums}.arena-board{border:2px solid var(--color-border);border-radius:8px}.arena-questions{gap:.75rem;width:100%;max-width:800px;display:flex}.arena-task-card{border:2px solid var(--color-border);text-align:center;border-radius:10px;flex:1;padding:.75rem;transition:border-color .15s,background-color .15s}.arena-task-card--easy{border-color:#6b8fcc}.arena-task-card--hard{border-color:#cc8f6b}.arena-task-card--correct{border-color:var(--color-success);background-color:#16a34a26}.arena-task-card--wrong{border-color:var(--color-danger);background-color:#dc262626}.arena-task-card--penalty{opacity:.45;border-color:var(--color-danger);pointer-events:none}.arena-task-tier{margin-bottom:.25rem;font-size:1.25rem}.arena-task-text{font-variant-numeric:tabular-nums;margin-bottom:.5rem;font-size:1.4rem;font-weight:700}.arena-task-answers{justify-content:center;gap:.5rem;display:flex}.arena-answer-btn{font-variant-numeric:tabular-nums;flex:1;max-width:120px;padding:.6rem 1rem;font-size:1.3rem;font-weight:700}.arena-summary-overlay{z-index:100;background:#0009;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.arena-summary{background:var(--color-surface);text-align:center;border-radius:12px;min-width:280px;padding:2rem}.arena-summary h2{margin-bottom:1rem}.arena-summary-stats{margin-bottom:1.5rem;line-height:1.6}.arena-summary-reward{color:var(--color-success,#22c55e);margin-bottom:1rem;font-weight:600}.arena-token-earned{font-size:1.1rem}.arena-summary-actions{justify-content:center;gap:.75rem;display:flex}.btn-end-game{margin-top:.5rem;font-size:.85rem}@media (width<=480px){.arena-questions{flex-direction:column}.arena-task-text{font-size:1.2rem}.arena-answer-btn{font-size:1.1rem}}.mp-game{flex-direction:column;align-items:center;gap:.5rem;width:100%;max-width:900px;margin:0 auto;padding:.25rem;display:flex}.mp-header{background:var(--color-surface);border-radius:var(--radius);width:100%;box-shadow:var(--shadow);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;padding:.5rem .75rem;display:flex}.mp-header-title{font-size:1rem;font-weight:700}.mp-header-stats{flex-wrap:wrap;align-items:center;gap:1rem;display:flex}.mp-stat{flex-direction:column;align-items:center;gap:.1rem;display:flex}.mp-stat-label{color:#64748b;text-transform:uppercase;letter-spacing:.5px;font-size:.65rem}.mp-stat-value{font-size:1.1rem;font-weight:700}.mp-week-bar{background:#e2e8f0;border-radius:2px;width:50px;height:4px;overflow:hidden}.mp-week-bar-fill{background:var(--color-primary);border-radius:2px;height:100%;transition:width .3s linear}.mp-overcrowd-warning{color:#fff;border-radius:var(--radius);background:#dc2626;padding:.25rem .75rem;font-size:.9rem;font-weight:700;animation:.8s ease-in-out infinite mp-pulse}@keyframes mp-pulse{0%,to{opacity:1}50%{opacity:.6}}.mp-board-wrapper{border-radius:var(--radius);width:100%;max-width:900px;box-shadow:var(--shadow);position:relative;overflow:hidden}.mp-board-canvas{touch-action:none;cursor:pointer;border-radius:var(--radius);width:100%;height:100%;display:block}.mp-toolbar{flex-wrap:wrap;justify-content:center;gap:.5rem;width:100%;display:flex}.mp-line-btn{border-radius:var(--radius);cursor:pointer;background:var(--color-surface);border:3px solid;justify-content:center;align-items:center;min-width:100px;min-height:44px;padding:.6rem 1.2rem;font-size:.95rem;font-weight:700;transition:background .15s,color .15s;display:flex}.mp-line-btn--A{color:#e53e3e;border-color:#e53e3e}.mp-line-btn--B{color:#3182ce;border-color:#3182ce}.mp-line-btn--C{color:#38a169;border-color:#38a169}.mp-line-btn--A.mp-line-btn--selected{color:#fff;background:#e53e3e}.mp-line-btn--B.mp-line-btn--selected{color:#fff;background:#3182ce}.mp-line-btn--C.mp-line-btn--selected{color:#fff;background:#38a169}.mp-action-btn{border-radius:var(--radius);background:var(--color-surface);cursor:pointer;border:2px solid #cbd5e1;min-height:44px;padding:.6rem 1rem;font-size:.9rem;transition:background .15s}.mp-action-btn:disabled{opacity:.4;cursor:not-allowed}.mp-action-btn--danger{color:#dc2626;border-color:#fca5a5}.mp-action-btn--active{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.mp-summary-overlay{z-index:100;background:#00000080;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.mp-summary{background:var(--color-surface);border-radius:var(--radius);text-align:center;min-width:260px;padding:2rem;box-shadow:0 4px 24px #0003}.mp-summary-title{margin:0 0 1rem;font-size:1.4rem}.mp-summary-stats{justify-content:center;gap:2rem;margin-bottom:1.5rem;display:flex}.mp-summary-stat{flex-direction:column;align-items:center;display:flex}.mp-summary-stat-value{font-size:2rem;font-weight:700}.mp-summary-stat-label{color:#64748b;font-size:.8rem}.mp-summary-actions{flex-direction:column;align-items:center;gap:.5rem;display:flex}.mp-window-expired{color:#64748b;margin:0;font-size:.85rem}@media (width<=480px){.mp-header{padding:.4rem .5rem;font-size:.85rem}.mp-header-title{font-size:.85rem}.mp-stat-value{font-size:.95rem}.mp-toolbar{gap:.35rem}.mp-line-btn{min-width:80px;padding:.5rem .8rem;font-size:.85rem}.mp-action-btn{padding:.5rem .7rem;font-size:.8rem}}
