*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:1rem;color:#222;background:#f5f6fa;line-height:1.5}h1{font-size:1.4rem;margin-bottom:16px}h2{font-size:1.15rem;margin:16px 0 10px}h3{font-size:1rem;margin:12px 0 8px}h4{font-size:.92rem;margin:10px 0 6px}p{margin-bottom:6px}p:last-child{margin-bottom:0}a{color:#4a90d9}a:hover{text-decoration:underline}hr{border:none;border-top:1px solid #eee;margin:16px 0}ul,ol{padding-left:18px}progress{display:block;width:100%;height:8px}details summary{cursor:pointer}main{padding:20px 16px;max-width:960px;margin:0 auto}footer{display:none}.topbar{display:flex;align-items:center;justify-content:space-between;background:#1a1a2e;color:#fff;padding:0 16px;height:56px;position:sticky;top:0;z-index:100}.topbar-left{display:flex;align-items:center;gap:12px}.topbar-logo{font-weight:700;font-size:1.1rem;color:#fff;text-decoration:none;letter-spacing:.03em}.topbar-logo:hover{text-decoration:none}.topbar-logo span{color:#f5a623}.burger{background:none;border:none;cursor:pointer;display:flex;flex-direction:column;gap:5px;padding:4px}.burger span{display:block;width:22px;height:2px;background:#fff;border-radius:2px;transition:transform .25s,opacity .25s}.burger.open span:nth-child(1){transform:translateY(7px) rotate(45deg)}.burger.open span:nth-child(2){opacity:0}.burger.open span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}.topbar-right{display:flex;align-items:center;gap:4px}.icon-btn{position:relative;display:flex;align-items:center;gap:5px;color:#fff;text-decoration:none;padding:6px 10px;border-radius:6px;font-size:.92rem;transition:background .2s}.icon-btn:hover{background:#ffffff1f;text-decoration:none}.icon-btn svg{flex-shrink:0}.notif-badge{position:absolute;top:2px;right:4px;background:#e74c3c;color:#fff;border-radius:99px;font-size:.68rem;font-weight:700;min-width:16px;height:16px;display:none;align-items:center;justify-content:center;padding:0 3px;line-height:1}.notif-badge.visible{display:flex}.coin-icon{color:#f5a623;font-size:1.1em;line-height:1}.coin-balance{font-weight:600;font-size:.9rem}.nav-drawer{position:fixed;top:56px;left:0;width:260px;height:calc(100vh - 56px);background:#1a1a2e;padding:16px 0;transform:translate(-100%);transition:transform .28s ease;z-index:99;overflow-y:auto}.nav-drawer.open{transform:translate(0)}.nav-drawer a,.nav-drawer button.nav-logout{display:block;color:#d0d0e8;text-decoration:none;padding:12px 24px;font-size:.97rem;border:none;background:none;width:100%;text-align:left;cursor:pointer;transition:background .18s,color .18s}.nav-drawer a:hover,.nav-drawer button.nav-logout:hover{background:#ffffff14;color:#fff}.nav-drawer .nav-section{font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;color:#6c6c9a;padding:14px 24px 4px}.nav-drawer .nav-vip{padding:6px 24px;color:#f5a623;font-size:.88rem}.nav-divider{border:none;border-top:1px solid rgba(255,255,255,.08);margin:8px 0}.nav-overlay{display:none;position:fixed;inset:56px 0 0;background:#00000073;z-index:98}.nav-overlay.open{display:block}.alert-success,.alert-error,.alert-info{padding:10px 16px;margin:12px auto;max-width:960px;border-radius:6px;font-size:.93rem}.alert-success{background:#d4edda;color:#155724;border:1px solid #c3e6cb}.alert-error{background:#f8d7da;color:#721c24;border:1px solid #f5c6cb}.alert-error ul{margin:0;padding-left:18px}.alert-info{background:#d1ecf1;color:#0c5460;border:1px solid #bee5eb}input[type=text],input[type=email],input[type=password],input[type=number],input[type=tel],input[type=url],input[type=date],input[type=time],input[type=search],select,textarea{padding:6px 10px;border:1px solid #ddd;border-radius:4px;font-size:.93rem;font-family:inherit;color:inherit;background:#fff}textarea{resize:vertical;min-height:70px;width:100%}select{cursor:pointer}label{display:inline-block;margin-bottom:3px;font-size:.93rem}.form-group{margin-bottom:12px}.field-error{color:#e74c3c;font-size:.85em;display:block;margin-top:2px}.field-note{font-size:.82em;color:#888}.form-inline{display:inline}.btn{display:inline-block;border:none;border-radius:4px;cursor:pointer;padding:7px 14px;font-size:.88rem;font-weight:500;line-height:1.4;text-decoration:none}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-sm{padding:5px 12px;font-size:.82rem}.btn-xs{padding:3px 9px;font-size:.8rem}.btn-primary{background:#f5a623;color:#fff}.btn-danger{background:#e74c3c;color:#fff}.btn-success{background:#27ae60;color:#fff}.btn-warn{background:#e67e22;color:#fff}.btn-muted{background:#95a5a6;color:#fff}.btn-blue{background:#4a90d9;color:#fff}.btn-ghost{background:#e8e8e8;color:#555}.card{border:1px solid #ddd;padding:10px;margin:8px 0;border-radius:4px}.card--unread{background:#e3f2fd}.card--earned{background:#e8f5e9}.card-panel{border:1px solid #ccc;padding:10px;margin:10px 0}.card-warn{border:2px solid #e67e22;padding:15px;margin-bottom:20px;border-radius:8px}.card-danger{border:2px solid #e74c3c;padding:12px;margin-bottom:14px;border-radius:6px}.data-table{width:100%;border-collapse:collapse;font-size:.88rem}.data-table thead tr{background:#f7f8fa}.data-table th{padding:6px 8px;text-align:left;border-bottom:1px solid #ddd;font-weight:600}.data-table td{padding:5px 8px;border-bottom:1px solid #f5f5f5}.data-table--bordered th,.data-table--bordered td{border:1px solid #ddd;padding:5px 8px}.stats-table{border-collapse:collapse}.stats-table td{padding:4px 12px 4px 0}.avatar{border-radius:50%;object-fit:cover;display:block}.avatar-lg{width:100px;height:100px}.avatar-md{width:80px;height:80px}.avatar-sm{width:60px;height:60px}.avatar-inline{display:inline-block;margin:3px;border-radius:50%}.text-sm{font-size:.85em}.text-xs{font-size:.78rem}.text-muted{color:#888}.text-subtle{color:#aaa}.text-danger{color:#e74c3c}.text-success{color:#27ae60}.text-warn{color:#e67e22}.text-blue{color:#4a90d9}.flex-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.flex-between{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap}.flex-start{align-items:flex-start!important}.page-header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;margin-bottom:16px}.section-header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;margin-bottom:10px}.link-plain{text-decoration:none!important;color:inherit!important}.mt-0{margin-top:0!important}.mt-1{margin-top:8px}.mt-2{margin-top:14px}.mb-1{margin-bottom:8px}.mb-2{margin-bottom:14px}.mb-3{margin-bottom:20px}.notify-form{border:1px solid #e0e0e0;border-radius:8px;padding:16px;margin-top:20px}.notify-form h2{margin:0 0 10px;font-size:1rem}.notify-form textarea{width:100%;padding:8px;border:1px solid #ddd;border-radius:4px;font-size:.9rem;resize:vertical}.notify-form .btn-submit{margin-top:8px;padding:7px 16px;background:#f5a623;color:#fff;border:none;border-radius:5px;cursor:pointer;font-size:.88rem}.dr-pending{background:#fdecea;border:1px solid #e74c3c;border-radius:6px;padding:12px;margin-top:10px}.dr-pending strong{color:#c0392b}.dr-box{border:1px solid #e74c3c;border-radius:6px;padding:14px;margin-top:8px}.dr-box .dr-box__title{margin:0 0 8px;font-weight:600;color:#c0392b}.dr-box textarea{width:100%;padding:8px;border:1px solid #ddd;border-radius:4px;font-size:.88rem;resize:vertical}.confirm-delete{border:1px solid #e74c3c;padding:15px;margin-top:10px;border-radius:6px}.confirm-delete .confirm-delete__row{margin-top:10px;display:flex;gap:8px}.alert-box{padding:10px 14px;border-radius:6px;margin-bottom:14px}.alert-box--error{background:#fdecea;border:1px solid #e74c3c;color:#c0392b}.alert-box--warn{background:#fff3cd;border:1px solid #ffc107;color:#856404}.auth-hint{color:#888;font-size:.85em;margin:0 0 16px}.btn-google{display:inline-block;padding:8px 16px;border:1px solid #ddd;border-radius:5px;text-decoration:none;color:#333;margin-bottom:16px}.btn-google:hover{background:#f7f8fa;text-decoration:none}.cal-wrap{background:#fff;border-radius:10px;box-shadow:0 1px 8px #0000001a;margin-bottom:24px;overflow:hidden}.cal-header{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:10px 14px;background:#f7f8fa;border-bottom:1px solid #e8e8e8}.cal-tabs{display:flex;gap:2px}.cal-tab{padding:4px 11px;border-radius:5px;text-decoration:none;color:#555;font-size:.85rem}.cal-tab:hover{text-decoration:none}.cal-tab--active{background:#1a1a2e;color:#fff;font-weight:600}.cal-nav{display:flex;align-items:center;gap:8px;flex:1;min-width:0}.cal-arrow{text-decoration:none;color:#1a1a2e;font-size:1.4rem;padding:0 6px;line-height:1}.cal-arrow:hover{text-decoration:none}.cal-period{font-size:.9rem;color:#1a1a2e;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cal-today-link{font-size:.78rem;color:#4a90d9;text-decoration:none;border:1px solid #4a90d9;border-radius:4px;padding:2px 7px;white-space:nowrap}.cal-today-link:hover{text-decoration:none}.cal-actions{display:flex;gap:6px;margin-left:auto}.cal-btn{padding:6px 13px;border:none;border-radius:5px;cursor:pointer;font-size:.83rem;font-weight:500}.cal-btn--blue{background:#4a90d9;color:#fff}.cal-btn--orange{background:#f5a623;color:#fff}.cal-btn--ghost{background:#e8e8e8;color:#555}.cal-form{padding:14px 16px;border-bottom:1px solid #e8e8e8;background:#fafbfc}.cal-form-title{margin:0 0 10px;font-weight:600;font-size:.95rem;color:#1a1a2e}.cal-form-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(155px,1fr));gap:8px}.cal-field{display:flex;flex-direction:column;gap:3px}.cal-field--wide{grid-column:1/-1}.cal-field label{font-size:.75rem;color:#888;font-weight:500;margin-bottom:0}.cal-field input,.cal-field select,.cal-field textarea{padding:5px 8px;border:1px solid #ddd;border-radius:4px;font-size:.85rem;width:100%}.cal-form-actions{margin-top:10px;display:flex;gap:8px}.cal-day{padding:10px 14px;display:flex;flex-direction:column;gap:8px;min-height:80px}.cal-item{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border-radius:6px;border-left:4px solid #ccc;background:#f9f9f9}.cal-item--lesson{border-left-color:#4a90d9;background:#f0f6ff}.cal-item--birthday{border-left-color:#e84393;background:#fff0f7}.cal-item--done{opacity:.75}.cal-item-time{font-size:.78rem;color:#888;white-space:nowrap;min-width:42px;text-align:right;padding-top:2px;line-height:1.5}.cal-item-body{flex:1;min-width:0}.cal-sub{color:#666;font-size:.86rem}.cal-meta{font-size:.76rem;color:#aaa;margin-top:3px}.cal-badge-mode{display:inline-block;padding:1px 5px;border-radius:3px;background:#e8e8e8;color:#555;font-size:.72rem;margin-right:4px}.cal-badge-ev{display:inline-block;padding:1px 6px;border-radius:3px;color:#fff;font-size:.72rem;font-weight:600;margin-left:6px}.cal-badge-ev--birthday{background:#e84393}.cal-del-btn{background:none;border:none;color:#ccc;cursor:pointer;font-size:.78rem;padding:2px 5px}.cal-del-btn:hover{color:#e74c3c}.cal-empty{color:#bbb;font-size:.88rem;text-align:center;padding:24px 0}.cal-week{display:grid;grid-template-columns:repeat(7,1fr);border-top:1px solid #eee}.cal-week-col{border-right:1px solid #eee;padding:6px 4px;min-height:120px}.cal-week-col:last-child{border-right:none}.cal-week-col--today{background:#f5f8ff}.cal-week-head{display:flex;flex-direction:column;align-items:center;text-decoration:none;margin-bottom:6px}.cal-week-head:hover{text-decoration:none}.cal-week-dname{font-size:.72rem;color:#999;text-transform:uppercase}.cal-week-num{display:flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;font-size:.9rem;color:#333}.cal-week-num--today{background:#1a1a2e;color:#fff;font-weight:700}.cal-week-item{border-radius:3px;padding:3px 5px;margin-bottom:3px;overflow:hidden}.cal-week-item--lesson{background:#e8f0ff;border-left:3px solid #4a90d9}.cal-week-item--birthday{border-left:3px solid #e84393;background:#fff0f7}.cal-week-item--event{background:#fafafa}.cal-wi-time{font-size:.66rem;color:#999}.cal-wi-title{font-size:.74rem;color:#333;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cal-week-empty{color:#ddd;font-size:.75rem;text-align:center;margin-top:8px}.cal-month-head{display:grid;grid-template-columns:repeat(7,1fr);background:#f7f8fa;border-top:1px solid #eee}.cal-month-head>div{text-align:center;padding:6px 0;font-size:.75rem;color:#999;font-weight:600}.cal-month-grid{display:grid;grid-template-columns:repeat(7,1fr)}.cal-month-cell{border-right:1px solid #eee;border-bottom:1px solid #eee;padding:5px 6px;min-height:56px}.cal-month-cell.cal-mc--out{opacity:.3}.cal-month-cell.cal-mc--today .cal-mc-num{background:#1a1a2e;color:#fff;border-radius:50%}.cal-mc-num{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;font-size:.83rem;color:#333}.cal-mc-num--link{text-decoration:none;color:#4a90d9;font-weight:600}.cal-mc-num--link:hover{text-decoration:none}.cal-mc-dots{display:flex;gap:3px;margin-top:3px}.cal-dot{display:inline-block;width:7px;height:7px;border-radius:50%}.cal-dot--blue{background:#4a90d9}.cal-dot--orange{background:#f5a623}.cal-dot--pink{background:#e84393}.lm-overlay{display:none;position:fixed;inset:0;background:#00000073;z-index:1000;align-items:flex-end;justify-content:center}.lm-overlay.lm-open{display:flex}.lm-card{background:#fff;border-radius:14px 14px 0 0;width:100%;max-width:560px;max-height:90vh;overflow-y:auto;padding:20px 20px 32px;box-shadow:0 -4px 24px #00000026}.lm-handle{width:40px;height:4px;background:#ddd;border-radius:2px;margin:0 auto 16px}.lm-title{font-size:1.05rem;font-weight:700;margin:0 0 2px}.lm-sub{color:#888;font-size:.85rem;margin:0 0 12px}.lm-row{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:6px;font-size:.88rem}.lm-badge{padding:2px 8px;border-radius:4px;background:#f0f0f0;color:#555;font-size:.78rem}.lm-status{padding:3px 10px;border-radius:4px;font-size:.82rem;font-weight:600}.lm-status--cancelled{background:#fdecea;color:#c0392b}.lm-status--full{background:#eafaf1;color:#1e8449}.lm-status--partial{background:#fef9e7;color:#b7950b}.lm-status--rescheduled{background:#eaf4fb;color:#1a6fa8}.lm-status-row{margin-bottom:10px}.lm-note{font-size:.82rem;color:#888;margin-top:4px}.lm-divider{border:none;border-top:1px solid #eee;margin:14px 0}.lm-section-title{font-weight:600;font-size:.9rem;margin:0 0 8px}.lm-section-title--cancel{color:#c0392b}.lm-section-title--reschedule{color:#1a6fa8}.lm-tab-row{display:flex;gap:8px;margin-bottom:12px}.lm-field{margin-bottom:10px}.lm-field label{display:block;font-size:.78rem;color:#888;margin-bottom:3px}.lm-field input,.lm-field textarea{width:100%;padding:7px 9px;border:1px solid #ddd;border-radius:5px;font-size:.88rem}.lm-field textarea{resize:vertical}.lm-row-time{display:flex;gap:10px}.lm-row-time .lm-field{flex:1}.lm-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.lm-btn{padding:8px 16px;border:none;border-radius:6px;cursor:pointer;font-size:.88rem;font-weight:500}.lm-btn--cancel{background:#e74c3c;color:#fff}.lm-btn--reschedule{background:#4a90d9;color:#fff}.lm-btn--ghost{background:#e8e8e8;color:#555}.lm-close-only{margin-top:12px}.sched-tabs{display:flex;gap:12px;margin-bottom:8px}.sched-tabs a{text-decoration:none}.sched-tabs a.active{font-weight:700}.sched-nav{display:flex;align-items:center;gap:12px;margin:10px 0}.sched-lesson{border:1px solid #ddd;padding:8px;margin:6px 0}.sched-week-day{margin-bottom:10px}.sched-week-item{padding:4px 0;border-bottom:1px solid #eee}@media(max-width:600px){.cal-week{grid-template-columns:repeat(7,1fr)}.cal-wi-title{display:none}.cal-period{font-size:.8rem}.cal-form-grid{grid-template-columns:1fr 1fr}}.course-cover{max-width:200px;display:block;margin-bottom:6px}.schedule-day-label{margin-right:10px}.schedule-time-row{display:flex;gap:16px;margin-top:8px;flex-wrap:wrap}.schedule-loc-block{margin-top:8px}.students-table-wrap{overflow-y:auto;border:1px solid #ddd;margin:10px 0}.students-table-wrap--scrollable{max-height:400px}.teacher-course-card{border:1px solid #ccc;padding:10px;margin:5px 0}.thumb-wrap{display:inline-block;margin:5px}.thumb{max-width:150px;max-height:150px}.thumb-lg{max-width:200px}.question-card{border:1px solid #ccc;padding:10px;margin:10px 0}.answer-indicator{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;text-align:center;line-height:30px;border:1px solid}.answer-indicator--correct{border-color:green;color:green}.answer-indicator--wrong{border-color:red;color:red}.admin-banners{margin-bottom:16px}.admin-banner{border-radius:6px;padding:12px 14px;margin-bottom:8px}.admin-banner--message{background:#fff8e1;border:1px solid #f5a623;border-left:4px solid #f5a623}.admin-banner--deletion{background:#fdecea;border:1px solid #e74c3c;border-left:4px solid #e74c3c}.admin-banner__body{display:flex;align-items:flex-start;gap:12px}.admin-banner__content{flex:1;min-width:0}.admin-banner__title{font-size:.9rem}.admin-banner__title--deletion{color:#c0392b}.admin-banner__text{margin:4px 0 0;font-size:.88rem;color:#555;white-space:pre-wrap}.admin-banner__meta{margin:4px 0 0;font-size:.78rem;color:#888}.admin-banner__ts{font-size:.75rem;color:#aaa}.admin-banner__actions{display:flex;gap:8px;margin-top:8px;flex-wrap:wrap}.admin-banner__dismiss{background:none;border:none;cursor:pointer;color:#aaa;font-size:1.1rem;padding:0 2px;line-height:1;flex-shrink:0}.report-section{border:2px solid #e67e22;padding:15px;margin-bottom:20px;border-radius:8px}.report-section h2{color:#e67e22;margin-top:0}.report-item{border:1px solid #ddd;padding:10px;margin:8px 0;border-radius:4px}.makeup-panel{margin-top:8px;padding:8px;background:#fff8e1;border-radius:4px}.makeup-date-row{margin-top:6px;display:flex;gap:4px;flex-wrap:wrap}.withdrawal-section{border:2px solid #e67e22;padding:14px;margin-bottom:20px;border-radius:8px}.withdrawal-section h2{color:#e67e22;margin:0 0 10px}.withdrawal-item{border:1px solid #eee;padding:10px;margin:6px 0;border-radius:5px;display:flex;gap:10px;flex-wrap:wrap;align-items:flex-start}.unreported-section{border:2px solid #e74c3c;padding:12px;margin-bottom:20px;border-radius:6px}.unreported-section strong{color:#e74c3c}.unreported-section ul{margin:8px 0 0}.msg-form{margin-top:6px}.msg-textarea{width:220px;padding:5px;border:1px solid #ddd;border-radius:4px;font-size:.82rem;resize:vertical;display:block}.classroom-row{display:flex;gap:8px;align-items:center;margin-bottom:4px}.input-sm{width:70px}.input-md{width:200px}.input-w-180{width:180px}.input-locked{background:#f5f5f5;color:#888;cursor:not-allowed}.profile-header{margin-bottom:16px}.parent-child-block{border:2px solid #444;padding:15px;margin:15px 0;border-radius:4px}.product-grid{display:flex;flex-wrap:wrap;gap:16px;margin-top:12px}.product-card{border:1px solid #ccc;padding:10px;border-radius:4px;width:250px;vertical-align:top}.product-card img{max-width:230px;max-height:200px;display:block;margin-bottom:8px}.notification-item{border:1px solid #ccc;padding:10px;margin:5px 0}.notification-item.unread{background:#e3f2fd}
