:root{color:#0f172a;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;background:#f1f5f9;font-family:Segoe UI,system-ui,-apple-system,sans-serif;font-weight:400;line-height:1.5}*{box-sizing:border-box}body{min-width:320px;min-height:100vh;margin:0}a{color:inherit;text-decoration:none}button,input{font:inherit}.app-shell{min-height:100vh;display:flex}.app-shell__main{flex-direction:column;flex:1;min-width:0;display:flex}.app-shell__content{flex:1;padding:24px 28px 40px}.sidebar{color:#e2e8f0;background:#0f172a;flex-direction:column;flex-shrink:0;width:260px;padding:20px 14px;display:flex}.sidebar__brand{border-bottom:1px solid #1e293b;flex-direction:column;align-items:flex-start;gap:10px;margin-bottom:12px;padding:8px 10px 20px;display:flex}.brand-logo{object-fit:contain;width:auto;display:block}.brand-logo--sidebar{max-width:160px;height:40px}.brand-logo--compact{max-width:140px;height:36px}.brand-logo--login{max-width:240px;height:80px;margin:0 auto}@media (width>=768px){.brand-logo--login{max-width:260px;height:88px}}.sidebar__subtitle{color:#94a3b8;letter-spacing:.02em;font-size:.75rem;font-weight:600}.sidebar__nav{flex-direction:column;gap:4px;display:flex}.sidebar__link{color:#cbd5e1;border-radius:8px;align-items:center;gap:10px;padding:10px 12px;font-size:.92rem;transition:background .15s,color .15s;display:flex}.sidebar__link:hover{color:#f8fafc;background:#1e293b}.sidebar__link--active{color:#fff;background:#2563eb}.topbar{background:#fff;border-bottom:1px solid #e2e8f0;justify-content:space-between;align-items:center;padding:18px 28px;display:flex}.topbar__title{margin:0;font-size:1.35rem;font-weight:700}.topbar__meta{color:#64748b;margin:4px 0 0;font-size:.85rem}.topbar__logout{color:#334155;cursor:pointer;background:#fff;border:1px solid #e2e8f0;border-radius:8px;align-items:center;gap:8px;padding:8px 14px;display:inline-flex}.topbar__logout:hover{background:#f8fafc}.page-stack{flex-direction:column;gap:20px;display:flex}.page-card{background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:24px;box-shadow:0 1px 2px #0f172a0a}.page-card h2{margin:0 0 8px;font-size:1.2rem}.page-card__desc{color:#64748b;max-width:640px;margin:0}.page-card__badge{color:#1d4ed8;background:#eff6ff;border-radius:999px;margin-top:16px;padding:4px 10px;font-size:.8rem;font-weight:600;display:inline-block}.stat-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px;display:grid}.stat-card{background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:18px}.stat-card__head{justify-content:space-between;align-items:center;display:flex}.stat-card__title{color:#64748b;font-size:.85rem}.stat-card__icon{color:#94a3b8}.stat-card__value{margin-top:10px;font-size:1.5rem;font-weight:700}.stat-card__hint{color:#94a3b8;margin-top:6px;font-size:.8rem}.login-page{background:linear-gradient(160deg,#f8fafc 0%,#e2e8f0 100%);place-items:center;min-height:100vh;padding:24px;display:grid}.login-card{background:#fff;border:1px solid #e2e8f0;border-radius:16px;width:100%;max-width:420px;padding:32px;box-shadow:0 10px 40px #0f172a14}.login-card__brand{text-align:center;margin-bottom:24px}.login-card__host{color:#64748b;margin:8px 0 0;font-size:.85rem;font-weight:600}.subdomain-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.btn--xs{min-height:auto;padding:4px 10px;font-size:.75rem}.login-card__heading{color:#0f172a;margin:16px 0 0;font-size:1.25rem;font-weight:700}.login-card__subtitle{color:#64748b;margin:8px 0 0;font-size:.95rem}.center-card__logo{margin:0 auto 16px}.login-card h1{margin:0 0 6px;font-size:1.4rem}.login-card p{color:#64748b;margin:0;font-size:.9rem}.login-form{flex-direction:column;gap:14px;display:flex}.login-forgot-link{color:#2563eb;text-align:center;cursor:pointer;text-underline-offset:2px;background:0 0;border:none;margin:0;padding:0;font-size:.9rem;font-weight:600;text-decoration:underline}.login-forgot-link:hover:not(:disabled){color:#1d4ed8}.login-forgot-link:disabled{opacity:.5;cursor:not-allowed}.login-reset-backdrop{align-items:flex-end;padding:16px}@media (width>=480px){.login-reset-backdrop{align-items:center}}.login-reset-modal{width:100%;max-width:420px;max-height:calc(100vh - 32px);overflow-y:auto}.login-reset-modal__desc{color:#64748b;margin:0 0 16px;font-size:.92rem;line-height:1.5}.login-reset-modal__label{color:#334155;flex-direction:column;gap:6px;margin-bottom:12px;font-size:.88rem;font-weight:600;display:flex}.login-reset-modal__label input{border:1px solid #cbd5e1;border-radius:8px;min-height:48px;padding:12px 14px;font-size:16px}.login-reset-modal__actions{flex-direction:column;gap:10px;margin-top:8px}.login-reset-modal__actions .btn{width:100%}@media (width>=480px){.login-reset-modal__actions{flex-flow:wrap}.login-reset-modal__actions .btn{flex:1;width:auto;min-width:120px}}.login-form label{color:#334155;flex-direction:column;gap:6px;font-size:.88rem;font-weight:600;display:flex}.login-form input{border:1px solid #cbd5e1;border-radius:8px;padding:10px 12px}.login-form input:focus{border-color:#2563eb;outline:2px solid #93c5fd}.form-error{color:#b91c1c;background:#fef2f2;border:1px solid #fecaca;border-radius:8px;padding:8px 10px;font-size:.88rem}.btn{cursor:pointer;border:none;border-radius:8px;padding:10px 16px;font-weight:600}.btn--primary{color:#fff;background:#2563eb}.btn--primary:hover:not(:disabled){background:#1d4ed8}.btn--primary:disabled{opacity:.6;cursor:not-allowed}.btn--ghost{color:#334155;background:#fff;border:1px solid #e2e8f0;justify-content:center;align-items:center;display:inline-flex}.center-page{place-items:center;min-height:100vh;padding:24px;display:grid}.center-card{text-align:center;background:#fff;border:1px solid #e2e8f0;border-radius:12px;max-width:480px;padding:32px}.center-card__icon--warn{color:#d97706;margin-bottom:12px}.center-card h1{margin:0 0 10px}.center-card p{color:#64748b;margin:0 0 20px}.center-card__actions{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.loading-screen{color:#64748b;flex-direction:column;justify-content:center;align-items:center;gap:12px;min-height:100vh;display:flex}.loading-screen__icon{color:#2563eb;animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.page-heading{margin:0;font-size:1.25rem;font-weight:700}.page-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;display:flex}.muted{color:#64748b;margin:0}.alert{border-radius:8px;padding:12px 14px;font-size:.92rem}.alert--error{color:#b91c1c;background:#fef2f2;border:1px solid #fecaca}.alert--success{color:#15803d;background:#f0fdf4;border:1px solid #bbf7d0}.data-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px;display:grid}.data-card{background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:18px}.data-card__head{justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:12px;display:flex}.data-card__head h3{margin:0;font-size:1.05rem}.data-card__meta{grid-template-columns:1fr 1fr;gap:10px 16px;margin:0;display:grid}.data-card__meta dt{color:#94a3b8;margin:0 0 2px;font-size:.75rem}.data-card__meta dd{color:#334155;word-break:break-word;margin:0;font-size:.9rem}.badge{border-radius:999px;padding:3px 8px;font-size:.75rem;font-weight:600;display:inline-block}.badge--ok{color:#166534;background:#dcfce7}.badge--muted{color:#64748b;background:#f1f5f9}.form-grid{grid-template-columns:1fr 1fr;gap:16px;max-width:720px;display:grid}.form-grid label{color:#334155;flex-direction:column;gap:6px;font-size:.88rem;font-weight:600;display:flex}.form-grid input,.form-grid select{border:1px solid #cbd5e1;border-radius:8px;padding:10px 12px;font-weight:400}.form-grid__full{grid-column:1/-1}.form-grid__checkbox{grid-column:1/-1;align-items:center;flex-direction:row!important;gap:10px!important;font-weight:500!important}.form-grid__actions{grid-column:1/-1}.field-hint{color:#94a3b8;font-size:.78rem;font-weight:400}.form-row{flex-wrap:wrap;align-items:flex-end;gap:16px;display:flex}.form-row__grow{flex-direction:column;flex:1;gap:6px;min-width:220px;font-size:.88rem;font-weight:600;display:flex}.form-row select{border:1px solid #cbd5e1;border-radius:8px;padding:10px 12px;font-weight:400}.table-wrap{overflow-x:auto}.data-table{border-collapse:collapse;width:100%;font-size:.9rem}.data-table th,.data-table td{text-align:left;border-bottom:1px solid #e2e8f0;padding:10px 12px}.data-table th{color:#64748b;font-size:.8rem;font-weight:600}.code-pill{color:#1d4ed8;letter-spacing:.05em;background:#eff6ff;border-radius:6px;padding:4px 8px;font-weight:700}.quick-links{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px;display:grid}.quick-link{flex-direction:column;gap:6px;transition:border-color .15s,box-shadow .15s;display:flex}.quick-link:hover{border-color:#93c5fd;box-shadow:0 4px 12px #2563eb14}.quick-link span{color:#64748b;font-size:.88rem}.filter-bar{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.filter-bar--wrap{padding:0}.filter-bar__label{color:#64748b;margin-right:4px;font-size:.82rem;font-weight:600}.filter-bar__btn{color:#475569;cursor:pointer;background:#fff;border:1px solid #e2e8f0;border-radius:999px;padding:6px 14px;font-size:.85rem;font-weight:500}.filter-bar__btn:hover{color:#1d4ed8;border-color:#93c5fd}.filter-bar__btn--active{color:#fff;background:#2563eb;border-color:#2563eb}.btn--sm{align-items:center;gap:6px;padding:6px 10px;font-size:.8rem;display:inline-flex}.lesson-create-layout{grid-template-columns:1fr 320px;align-items:start;gap:20px;display:grid}.lesson-create-form label{color:#334155;flex-direction:column;gap:6px;margin-bottom:14px;font-size:.88rem;font-weight:600;display:flex}.lesson-create-form select,.lesson-create-form input[type=number],.lesson-create-form input[type=text]{border:1px solid #cbd5e1;border-radius:8px;padding:10px 12px;font-weight:400}.form-fieldset{border:1px solid #e2e8f0;border-radius:10px;margin-bottom:14px;padding:12px 14px}.form-fieldset legend{padding:0 4px;font-size:.88rem;font-weight:600}.form-fieldset__head{justify-content:space-between;align-items:center;margin-bottom:10px;font-size:.88rem;font-weight:600;display:flex}.radio-inline{align-items:center;gap:8px;margin-bottom:8px;display:flex;flex-direction:row!important;font-weight:500!important}.student-pick-list{flex-direction:column;gap:6px;max-height:220px;display:flex;overflow-y:auto}.student-pick-item{cursor:pointer;border-radius:6px;align-items:flex-start;gap:8px;padding:6px 4px;font-size:.88rem;display:flex;font-weight:400!important}.student-pick-item:hover{background:#f8fafc}.lesson-create-summary h3{margin:0 0 16px;font-size:1.05rem}.summary-dl{flex-direction:column;gap:12px;margin:0;display:flex}.summary-dl dt{color:#94a3b8;margin:0 0 2px;font-size:.75rem}.summary-dl dd{color:#0f172a;margin:0;font-size:.92rem}.payments-layout{grid-template-columns:1fr 320px;align-items:start;gap:20px;display:grid}.payments-filters input[type=search]{border:1px solid #cbd5e1;border-radius:8px;width:100%;margin-bottom:12px;padding:10px 12px}.payments-student-list{flex-direction:column;gap:8px;max-height:480px;display:flex;overflow-y:auto}.payments-student-row{border:1px solid #e2e8f0;border-radius:8px;align-items:center;gap:8px;display:flex;overflow:hidden}.payments-student-row--selected{background:#eff6ff;border-color:#2563eb}.payments-student-row__main{text-align:left;cursor:pointer;font:inherit;background:0 0;border:none;flex-direction:column;flex:1;gap:4px;padding:10px 12px;display:flex}.payments-form-panel label{flex-direction:column;gap:6px;margin:12px 0;font-size:.88rem;font-weight:600;display:flex}.payments-form-panel input{border:1px solid #cbd5e1;border-radius:8px;padding:10px 12px;font-weight:400}.stat-card--highlight{background:#eff6ff;border-color:#93c5fd}.finance-tabs{margin-bottom:8px}.finance-split{grid-template-columns:340px 1fr;align-items:start;gap:20px;display:grid}.finance-form{max-width:360px}.balance-form{max-width:420px}.requests-tabs{flex-wrap:wrap}.requests-status-filter{margin-top:-4px}.filter-bar__btn--sm{padding:6px 12px;font-size:.82rem}.requests-list{flex-direction:column;gap:14px;display:flex}.requests-empty{text-align:center;padding:24px 0}.requests-cancel-hint{margin:0 0 8px;font-size:.88rem}.request-card{background:#fafafa;border:1px solid #e2e8f0;border-radius:12px;padding:16px}.request-card__head{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px;display:flex}.request-card__title{color:#0f172a;margin:0;font-size:1.05rem}.request-card__meta{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px 16px;margin:0;display:grid}.request-card__meta>div{flex-direction:column;gap:2px;display:flex}.request-card__meta dt{color:#64748b;text-transform:uppercase;letter-spacing:.02em;font-size:.75rem;font-weight:700}.request-card__meta dd{color:#0f172a;margin:0;font-size:.92rem}.request-card__actions{flex-wrap:wrap;gap:10px;margin-top:14px;display:flex}.badge--warn{color:#92400e;background:#fef3c7}.badge--danger{color:#991b1b;background:#fee2e2}.btn--danger{color:#fff;background:#b91c1c;border:none}.btn--danger:hover:not(:disabled){background:#991b1b}.video-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;display:grid}.video-card{background:#fafafa;border:1px solid #e2e8f0;border-radius:12px;flex-direction:column;gap:8px;padding:16px;display:flex}.video-card__head{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.video-card__title{color:#0f172a;margin:0;font-size:1rem}.video-card__meta{color:#475569;margin:0;font-size:.88rem}.video-card__desc{color:#64748b;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;font-size:.85rem;display:-webkit-box;overflow:hidden}.video-card__date{margin:0;font-size:.8rem}.video-card__actions{flex-wrap:wrap;gap:8px;margin-top:4px;display:flex}.video-modal label{flex-direction:column;gap:6px;margin-bottom:12px;font-size:.88rem;font-weight:600;display:flex}.video-modal input,.video-modal textarea,.video-modal select{border:1px solid #cbd5e1;border-radius:8px;padding:10px 12px;font-weight:400}.modal-card__actions{justify-content:flex-end;gap:10px;margin-top:8px;display:flex}.video-modal{max-width:520px}.video-tracking-filters__grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:14px;display:grid}.video-tracking-filters label{flex-direction:column;gap:6px;font-size:.85rem;font-weight:600;display:flex}.video-tracking-filters select,.video-tracking-filters input{border:1px solid #cbd5e1;border-radius:8px;padding:8px 10px;font-weight:400}.video-tracking-table{overflow-x:auto}.lesson-type-hint{color:#1e40af;background:#eff6ff;border-radius:8px;margin:0 0 12px;padding:10px 12px}.branch-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px;display:grid}.branch-card{background:#fafafa;border:1px solid #e2e8f0;border-radius:12px;padding:16px}.branch-card__head{justify-content:space-between;align-items:flex-start;gap:8px;margin-bottom:10px;display:flex}.branch-card__head h3{margin:0;font-size:1.05rem}.branch-card__levels{color:#475569;margin:0 0 8px;padding-left:18px;font-size:.9rem}.branch-card__meta{margin:0 0 10px;font-size:.8rem}.branch-card__actions{flex-wrap:wrap;gap:8px;display:flex}.branch-modal{max-width:480px}.branch-levels-editor__label{margin-bottom:8px;font-size:.88rem;font-weight:600;display:block}.branch-levels-editor__row{gap:8px;margin-bottom:10px;display:flex}.branch-levels-editor__row input{border:1px solid #cbd5e1;border-radius:8px;flex:1;padding:8px 10px}.branch-levels-editor__list{flex-direction:column;gap:6px;margin:0 0 16px;padding:0;list-style:none;display:flex}.branch-levels-editor__list li{background:#f1f5f9;border-radius:8px;justify-content:space-between;align-items:center;padding:8px 10px;display:flex}.dashboard-hero{margin-bottom:4px}.stat-grid--dashboard{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}.dashboard-panels{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:20px;display:grid}.dashboard-panel__head{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.dashboard-panel__head h3{margin:0;font-size:1rem}.dashboard-list{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.dashboard-list li{border-bottom:1px solid #e2e8f0;flex-wrap:wrap;align-items:center;gap:8px;padding-bottom:10px;display:flex}.dashboard-list li:last-child{border-bottom:none;padding-bottom:0}.weekly-schedule-page .weekly-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;display:flex}.weekly-toolbar__field{flex-direction:column;gap:6px;min-width:220px;font-size:.88rem;font-weight:600;display:flex}.weekly-toolbar__field select{border:1px solid #cbd5e1;border-radius:8px;padding:10px 12px;font-weight:400}.weekly-week-nav{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.weekly-week-nav__title{color:#0f172a;text-align:center;min-width:180px;padding:0 8px;font-size:.95rem;font-weight:700}.weekly-week-nav__current{color:#1d4ed8!important;background:#eff6ff!important;border-color:#2563eb!important}.weekly-grid-scroll{background:#fff;border:1px solid #e2e8f0;border-radius:12px;max-height:calc(100vh - 220px);overflow:auto}.weekly-grid{border-collapse:separate;border-spacing:0;width:100%;min-width:1100px}.weekly-grid__corner,.weekly-grid__day-head,.weekly-grid__hour{z-index:2;color:#475569;background:#f8fafc;font-size:.82rem;font-weight:700;position:sticky}.weekly-grid__corner{z-index:4;text-align:left;border-bottom:1px solid #e2e8f0;border-right:1px solid #e2e8f0;min-width:72px;padding:10px 12px;left:0}.weekly-grid__day-head{z-index:3;text-align:center;border-bottom:1px solid #e2e8f0;min-width:140px;padding:10px 8px;top:0}.weekly-grid__hour{z-index:2;text-align:left;white-space:nowrap;border-bottom:1px solid #f1f5f9;border-right:1px solid #e2e8f0;padding:8px 12px;left:0}.weekly-grid__cell{vertical-align:top;border-bottom:1px solid #f1f5f9;border-right:1px solid #f8fafc;min-width:140px;height:1px;padding:4px}.weekly-grid__empty{color:#cbd5e1;text-align:center;padding:8px;font-size:.8rem;display:block}.weekly-cell-lessons{flex-direction:column;gap:4px;min-height:100%;display:flex}.schedule-card{text-align:left;cursor:pointer;width:100%;font:inherit;background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:8px;transition:box-shadow .15s,border-color .15s}.schedule-card:hover{border-color:#93c5fd;box-shadow:0 2px 8px #2563eb1f}.schedule-card--private{border-left:3px solid #2563eb}.schedule-card--group,.schedule-card--qualified{background:#faf5ff;border-left:3px solid #7c3aed}.schedule-card--makeup,.schedule-card--makeup.schedule-card--temp{background:#fffbeb;border-left:3px solid #d97706}.schedule-card--temp:not(.schedule-card--makeup){background:#f0fdf4;border-left-color:#16a34a}.schedule-card__time{color:#0f172a;font-size:.78rem;font-weight:700}.schedule-card__branch{color:#334155;margin-top:2px;font-size:.8rem;font-weight:600}.schedule-card__type{color:#64748b;margin-top:2px;font-size:.75rem}.schedule-card__students{color:#475569;margin-top:4px;font-size:.78rem;line-height:1.35}.schedule-card__price{color:#64748b;margin-top:4px;font-size:.75rem}.schedule-card__tags{flex-wrap:wrap;gap:4px;margin-top:6px;display:flex}.schedule-tag{border-radius:4px;padding:2px 6px;font-size:.68rem;font-weight:700}.schedule-tag--temp{color:#166534;background:#dcfce7}.schedule-tag--makeup{color:#b45309;background:#fef3c7}.schedule-tag--conflict{color:#b91c1c;background:#fee2e2}.modal-backdrop{z-index:100;background:#0f172a73;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.modal-card{background:#fff;border-radius:12px;width:100%;max-width:440px;max-height:90vh;padding:24px;overflow-y:auto;box-shadow:0 20px 50px #0f172a33}.modal-card h3{margin:0 0 16px}.institution-modules-modal{max-width:520px}.modules-editor{border:1px solid #e5e7eb;border-radius:12px;margin:0;padding:16px}.modules-editor__legend{color:#111827;padding:0 4px;font-size:15px;font-weight:700}.modules-editor__hint{margin:8px 0 12px}.modules-editor__grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;display:grid}.modules-editor__item{cursor:pointer;color:#374151;background:#f9fafb;border:1px solid #e5e7eb;border-radius:10px;flex-direction:column;gap:4px;padding:10px 12px;font-size:14px;font-weight:600;display:flex}.modules-editor__item:has(input:checked){color:#5b4bff;background:#eef2ff;border-color:#c7d2fe}.modules-editor__item input{accent-color:#5b4bff;width:16px;height:16px}.modules-editor__key{color:#9ca3af;font-size:11px;font-weight:500}.data-card__actions{border-top:1px solid #e5e7eb;margin-top:12px;padding-top:12px}.module-guard{margin:0}@media (width<=900px){.app-shell{flex-direction:column}.sidebar{flex-flow:wrap;align-items:flex-start;width:100%}.sidebar__nav{flex-flow:wrap;width:100%}.form-grid,.data-card__meta,.lesson-create-layout,.payments-layout,.finance-split{grid-template-columns:1fr}}
