:root{--bg: #f6f8fb;--surface: #ffffff;--surface-2: #eef2f7;--surface-3: #f8fafc;--text: #14181f;--text-muted: #5a6472;--text-hint: #8b94a3;--border: #e6eaf0;--border-strong: #d4dae3;--accent: #3b5bdb;--accent-strong: #2f49b8;--accent-soft: #e9edfd;--role-accent: #3b5bdb;--role-accent-strong: #2f49b8;--role-accent-soft: #e9edfd;--info: #3b5bdb;--info-text: #2f49b8;--info-soft: #e9edfd;--success: #18a866;--success-text: #0f7a4f;--success-soft: #e3f4ec;--warning: #d99413;--warning-text: #8a5a00;--warning-soft: #fbeecd;--danger: #e0584f;--danger-text: #c0362f;--danger-soft: #fde7e6;--font-sans: "Manrope", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--fs-display: 34px;--fs-h1: 24px;--fs-h2: 20px;--fs-h3: 16px;--fs-body: 15px;--fs-small: 13px;--fs-caption: 12px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--radius: 14px;--radius-sm: 10px;--radius-pill: 999px;--shadow-sm: 0 1px 2px rgba(20, 24, 33, .06), 0 1px 1px rgba(20, 24, 33, .04);--shadow-md: 0 4px 16px rgba(20, 24, 33, .08);--shadow-lg: 0 12px 32px rgba(20, 24, 33, .12);--shadow: 0 4px 16px rgba(20, 24, 33, .05)}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;font-family:Manrope,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:var(--bg);color:var(--text);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}::selection{background:#d6defb}a{color:var(--role-accent);text-decoration:none}.ms{font-family:Material Symbols Rounded;font-weight:300;line-height:1;display:inline-flex;vertical-align:middle}.tf-scroll{scrollbar-width:thin;scrollbar-color:#dce2ea transparent}.tf-scroll::-webkit-scrollbar{width:10px;height:10px}.tf-scroll::-webkit-scrollbar-thumb{background:#dce2ea;border-radius:8px;border:3px solid transparent;background-clip:padding-box}@keyframes overlayIn{0%{opacity:0}to{opacity:1}}@keyframes modalIn{0%{opacity:0;transform:translateY(14px) scale(.98)}to{opacity:1;transform:none}}.app-shell{--role-accent: #3b5bdb;--role-accent-strong: #2f49b8;--role-accent-soft: #e9edfd;display:flex;height:100vh;overflow:hidden;background:var(--bg)}.app-shell-student{--role-accent: #0f8a8a;--role-accent-strong: #0c6e6e;--role-accent-soft: #e0f0f0}.sidebar{width:240px;min-width:0;flex-shrink:0;background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;transition:width .22s cubic-bezier(.4,0,.2,1);overflow:hidden}.app-shell.is-collapsed .sidebar{width:76px}.sidebar-brand{height:62px;flex-shrink:0;display:flex;align-items:center;gap:11px;padding:0 18px;background:color-mix(in srgb,var(--role-accent-soft) 70%,#fff);border-bottom:1px solid var(--border);color:var(--role-accent-strong);font-weight:800;font-size:16px;letter-spacing:-.01em;white-space:nowrap}.brand-mark{width:30px;height:30px;flex-shrink:0;border-radius:8px;background:var(--role-accent);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:16px}.sidebar-nav{flex:1;padding:14px 12px;display:flex;flex-direction:column;gap:3px;overflow-y:auto}.sidebar-section{font-weight:700;font-size:10.5px;letter-spacing:.07em;text-transform:uppercase;color:#aab2bf;padding:8px 11px 4px}.sidebar-link{min-height:42px;display:flex;align-items:center;gap:12px;padding:10px 11px;border-radius:10px;color:var(--text-muted);font-weight:600;font-size:13.5px;white-space:nowrap;position:relative;transition:background .15s,color .15s}.sidebar-link:hover{background:var(--bg)}.sidebar-link.active{background:var(--role-accent-soft);color:var(--role-accent-strong);font-weight:700}.sidebar-link .ms{font-size:21px;flex-shrink:0}.sidebar-link>span:not(.ms):not(.nav-badge){flex:1}.nav-badge{background:var(--warning-soft);color:var(--warning-text);font-weight:700;font-size:11px;min-width:18px;height:18px;padding:0 5px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center}.app-shell.is-collapsed .nav-badge{position:absolute;top:7px;left:27px;width:7px;min-width:7px;height:7px;padding:0;overflow:hidden;color:transparent;background:var(--warning);border:1.5px solid #fff}.sidebar-user{flex-shrink:0;border-top:1px solid var(--surface-2);padding:10px 12px;display:flex;align-items:center;gap:11px}.avatar{width:34px;height:34px;flex-shrink:0;border-radius:9px;background:var(--role-accent);color:#fff;font-weight:700;font-size:13px;display:flex;align-items:center;justify-content:center;box-shadow:0 0 0 2px #fff,0 0 0 4px color-mix(in srgb,var(--role-accent) 30%,#fff)}.sidebar-user-meta{flex:1;min-width:0}.sidebar-user-name{font-weight:700;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-user-role{font-weight:600;font-size:11.5px;color:var(--role-accent-strong)}.app-main{flex:1;min-width:0;display:flex;flex-direction:column;overflow:hidden}.app-header{height:62px;flex-shrink:0;background:var(--surface);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:16px;padding:0 26px}.app-title{min-width:0}.app-title h1{margin:0;font-weight:700;font-size:18px;line-height:1.1;letter-spacing:-.01em}.app-title p{margin:3px 0 0;font-weight:500;font-size:12.5px;color:var(--text-hint)}.header-actions{margin-left:auto;display:flex;align-items:center;gap:10px}.app-content{flex:1;overflow-y:auto;padding:26px 26px 60px}.container{max-width:1180px;margin:0 auto}.metrics,.kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:22px}.metric{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px 20px;min-width:0}.metric .label{display:flex;align-items:center;gap:8px;font-weight:600;font-size:12.5px;color:var(--text-hint)}.metric .label .ms{font-size:19px;color:var(--role-accent)}.metric .value{margin-top:10px;font-size:30px;line-height:1.08;font-weight:800;letter-spacing:-.01em;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.grid,.dashboard-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(320px,1fr);gap:18px;align-items:start}.grid>*,.dashboard-column{min-width:0}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}.dashboard-column .card+.card{margin-top:18px}.card-heading{display:flex;align-items:center;gap:10px;padding:16px 20px;border-bottom:1px solid var(--surface-2)}.card h3{margin:0;font-size:16px;font-weight:700;display:flex;align-items:center;gap:9px;min-width:0}.card h3 .ms{font-size:20px;color:var(--role-accent)}.card-actions{margin-left:auto;display:flex;align-items:center;gap:8px}.card>:not(.card-heading){margin-left:20px;margin-right:20px}.card>:last-child{margin-bottom:18px}.card>.row,.card>div>.row{margin-left:0;margin-right:0}.card-tools{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:14px 0 10px}.row,.summary-row,.notification{display:flex;align-items:center;gap:13px;padding:12px 0;border-top:1px solid #f3f5f8}.row{justify-content:space-between}.summary-row,.notification{align-items:flex-start;justify-content:space-between}.row:first-of-type,.summary-row:first-of-type,.notification:first-of-type{border-top:none}.summary-title{font-size:14px;font-weight:700;margin-bottom:5px}.summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:5px 14px;color:var(--text-muted);font-size:12.5px}.summary-grid-wide{margin-bottom:10px}.resource-row{display:grid;grid-template-columns:38px minmax(0,1fr) auto;gap:13px;align-items:center;padding:13px 0;border-top:1px solid #f3f5f8}.resource-row:first-of-type{border-top:none}.resource-main{min-width:0;text-align:left}.resource-icon{width:34px;height:34px;border-radius:9px;background:var(--role-accent-soft);color:var(--role-accent-strong);display:flex;align-items:center;justify-content:center}.resource-icon .ms{font-size:19px}.resource-button,.resource-plain-button{width:100%;border:none;background:transparent;color:inherit;padding:13px 0;border-radius:0}.resource-button:hover,.resource-plain-button:hover{background:transparent}.resource-button.active .summary-title{color:var(--role-accent-strong)}.inline-panel{margin:0 0 14px 51px;padding:14px 16px;border:1px solid var(--border);border-radius:12px;background:var(--surface-3)}.notification-unread{color:var(--text);background:#fbfcff}.notification-read{color:var(--text-muted);opacity:.72}.notification-title{font-size:13px;font-weight:700}.toast-stack{position:fixed;right:22px;bottom:22px;display:grid;gap:10px;z-index:80;width:min(330px,calc(100vw - 44px))}.toast{background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--role-accent);border-radius:12px;padding:13px 15px;box-shadow:0 12px 32px #14182129}.toast-title{font-size:13.5px;font-weight:700}.toast-body{color:var(--text-muted);font-size:12.5px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;display:flex;align-items:center;justify-content:center;padding:20px;background:#14182157;animation:overlayIn .2s ease}.modal-panel{width:460px;max-width:100%;max-height:calc(100vh - 40px);overflow-y:auto;background:var(--surface);border-radius:18px;box-shadow:0 28px 70px #14182152;padding:26px;animation:modalIn .26s cubic-bezier(.4,0,.2,1)}.modal-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.modal-heading h2{margin:0;font-weight:800;font-size:20px;letter-spacing:-.01em;line-height:1.2}.modal-heading p{margin:3px 0 0;font-weight:500;font-size:13px;color:var(--text-hint)}.modal-fields{margin-top:20px;display:flex;flex-direction:column;gap:4px}.modal-field-row{gap:12px}.modal-field-row label{flex:1}.modal-field-row .time-field{flex:0 0 130px}.field-row>.field{flex:1;margin-bottom:0}.field-row>.field.time-field{flex:0 0 140px}.select-wrap,.amount-input{position:relative;display:block}.select-wrap select{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-right:38px}.select-wrap .ms{position:absolute;right:12px;top:50%;transform:translateY(-50%);font-size:20px;color:var(--text-hint);pointer-events:none}.amount-input input{padding-right:34px;font-variant-numeric:tabular-nums}.amount-input>span{position:absolute;right:13px;top:50%;transform:translateY(-50%);font-weight:600;color:var(--text-hint)}.modal-actions{margin-top:22px;display:flex;justify-content:flex-end;gap:10px}.modal-actions button{border-radius:11px;padding:10px 18px}.modal-actions .primary{display:inline-flex;align-items:center;gap:7px}.modal-actions .primary .ms{font-size:18px}.muted{color:var(--text-muted);font-size:12.5px;font-weight:500}.hint{color:var(--text-hint);font-size:12px;font-weight:500}.pill{display:inline-flex;align-items:center;gap:6px;padding:4px 10px 4px 8px;border-radius:999px;font-weight:600;font-size:11.5px;white-space:nowrap}.pill:before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor}.pill-info{background:var(--role-accent-soft);color:var(--role-accent-strong)}.pill-success{background:var(--success-soft);color:var(--success-text)}.pill-warning{background:var(--warning-soft);color:var(--warning-text)}.pill-danger{background:var(--danger-soft);color:var(--danger-text)}.pill-muted{background:var(--surface-2);color:var(--text-muted)}input,select,textarea{width:100%;font:inherit;padding:10px 12px;border:1px solid var(--border-strong);border-radius:11px;background:var(--surface);color:var(--text);outline:none}input:focus,select:focus,textarea:focus{border-color:color-mix(in srgb,var(--role-accent) 65%,var(--border-strong));box-shadow:0 0 0 3px color-mix(in srgb,var(--role-accent-soft) 70%,transparent)}textarea{min-height:84px;resize:vertical}label{display:block;font-size:13px;font-weight:600;color:var(--text-muted);margin-bottom:7px}.field{margin-bottom:12px}.field-row{display:flex;gap:10px;align-items:flex-end}button,.button-like{font:inherit;border:1px solid var(--border);border-radius:10px;background:var(--surface);color:var(--text);cursor:pointer;font-weight:600;transition:background .15s,border-color .15s,color .15s,transform .08s}button{padding:9px 14px}button:hover,.button-like:hover{background:var(--bg)}button:active,.button-like:active{transform:scale(.98)}button.primary,.primary-action{background:var(--role-accent);color:#fff;border-color:var(--role-accent)}button.primary:hover,.primary-action:hover{background:var(--role-accent-strong);border-color:var(--role-accent-strong)}button.small{padding:6px 10px;font-size:12.5px;border-radius:9px}button:disabled{opacity:.55;cursor:default;transform:none}.button-like{padding:9px 14px;display:inline-flex;align-items:center;justify-content:center;gap:7px;text-decoration:none}.button-like.small{padding:6px 10px;font-size:12.5px;border-radius:9px}.button-like.primary{background:var(--role-accent);color:#fff;border-color:var(--role-accent)}.button-like.primary:hover{background:var(--role-accent-strong);border-color:var(--role-accent-strong)}.primary-action{padding:9px 16px;border-radius:10px;display:inline-flex;align-items:center;gap:7px;white-space:nowrap;font-size:13.5px}.primary-action .ms{font-size:18px}.icon-button{width:38px;height:38px;padding:0;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;color:var(--text-muted);background:var(--surface)}.icon-button .ms{font-size:21px}.btn-group{display:flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:flex-end}.error,.notice{padding:10px 12px;border-radius:11px;font-size:13px;font-weight:600;margin:10px 0}.error{background:var(--danger-soft);color:var(--danger-text)}.notice{background:var(--success-soft);color:var(--success-text)}.auth-wrap{max-width:400px;margin:8vh auto;padding:0 20px}.auth-wrap .card{padding:0}.auth-wrap .card>:not(.card-heading){margin-left:24px;margin-right:24px}.auth-wrap .card>:last-child{margin-bottom:24px}.center-link{text-align:center;margin-top:12px;font-size:14px;font-weight:600}.section-title{font-size:12px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--text-hint);margin:12px 0 8px}.balance-hero{background:var(--role-accent-strong);border-radius:16px;padding:22px 24px;color:#fff;position:relative;overflow:hidden}.balance-hero:after{content:"";position:absolute;right:-30px;top:-30px;width:140px;height:140px;border-radius:50%;background:#ffffff0f}.balance-hero .label,.balance-hero .hint{color:color-mix(in srgb,#fff 65%,var(--role-accent-soft))}.balance-hero .value{font-weight:800;font-size:36px;margin-top:14px;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.teacher-toolbar{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:18px}.segmented{display:flex;gap:4px;background:var(--surface-2);border-radius:11px;padding:4px;overflow-x:auto}.segmented button{border:none;background:transparent;padding:8px 12px;white-space:nowrap;color:var(--text-muted)}.segmented button.active{background:var(--surface);color:var(--role-accent-strong);box-shadow:0 1px 2px #1418210f}.tab-count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;margin-left:7px;padding:0 5px;border-radius:999px;background:var(--surface-2);color:var(--text-hint);font-size:11px;font-weight:800}.segmented button.active .tab-count{background:var(--role-accent-soft);color:var(--role-accent-strong)}.toolbar-right{display:flex;align-items:center;justify-content:flex-end;gap:10px;min-width:0}.search-field{position:relative;width:min(280px,100%);flex-shrink:0}.search-field .ms{position:absolute;left:11px;top:50%;transform:translateY(-50%);font-size:19px;color:var(--text-hint)}.search-field input{padding-left:38px;background:var(--surface-3)}.view-toggle{display:inline-flex;align-items:center;gap:2px;padding:3px;border-radius:9px;background:var(--surface-2)}.view-toggle button{width:32px;height:30px;padding:0;border:none;border-radius:7px;background:transparent;color:var(--text-muted);display:inline-flex;align-items:center;justify-content:center}.view-toggle button.active{background:var(--surface);color:var(--role-accent-strong)}.view-toggle .ms{font-size:19px}.page-tabs-bar{display:flex;align-items:center;gap:20px;margin:-4px 0 18px;padding:0 0 12px;border-bottom:1px solid var(--border)}.page-tabs{flex:1;min-width:0;display:flex;gap:20px;overflow-x:auto}.page-tabs button{display:inline-flex;align-items:center;gap:7px;padding:4px 2px 10px;border:none;border-bottom:2px solid transparent;border-radius:0;background:transparent;color:var(--text-muted);white-space:nowrap;font-size:13.5px}.page-tabs button.active{border-bottom-color:var(--role-accent);color:var(--role-accent-strong)}.page-tabs button span{min-width:18px;height:18px;padding:0 5px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;background:var(--surface-2);color:var(--text-hint);font-size:11px;font-weight:800}.page-tabs button.active span{background:var(--role-accent-soft);color:var(--role-accent-strong)}.assignment-list{max-width:960px;margin:0 auto;display:flex;flex-direction:column;gap:12px}.assignment-list-row{display:grid;grid-template-columns:42px minmax(0,1fr) auto auto;gap:16px;align-items:center;padding:16px 18px;border:1px solid var(--border);border-left:3px solid var(--role-accent);border-radius:13px;background:var(--surface);box-shadow:var(--shadow)}.assignment-row-icon{width:42px;height:42px;flex-shrink:0;border-radius:11px;display:flex;align-items:center;justify-content:center}.assignment-row-icon .ms{font-size:22px}.assignment-icon-info{background:var(--role-accent-soft);color:var(--role-accent-strong)}.assignment-icon-warning{background:var(--warning-soft);color:var(--warning-text)}.assignment-icon-success{background:var(--success-soft);color:var(--success-text)}.assignment-icon-danger{background:var(--danger-soft);color:var(--danger-text)}.assignment-row-meta .deadline.danger,.assignment-row-meta .deadline.danger .ms{color:var(--danger-text)}.assignment-row-main{min-width:0}.assignment-row-title{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.assignment-row-title a{color:var(--text);font-weight:800;font-size:15px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-count{display:inline-flex;align-items:center;gap:4px;color:var(--text-hint);font-size:11.5px;font-weight:600}.file-count .ms{font-size:14px}.assignment-row-meta{display:flex;align-items:center;gap:13px;margin-top:5px;flex-wrap:wrap;color:var(--text-hint);font-size:12.5px;font-weight:500}.assignment-row-meta>span{display:inline-flex;align-items:center;gap:6px}.assignment-row-meta .ms{color:var(--text-hint);font-size:15px}.mini-avatar{width:22px;height:22px;border-radius:6px;display:inline-flex;align-items:center;justify-content:center;background:var(--role-accent-soft);color:var(--role-accent-strong);font-weight:800;font-size:9.5px}.primary-link{background:var(--role-accent);border-color:var(--role-accent);color:#fff}.primary-link:hover{background:var(--role-accent-strong);color:#fff}.modal-panel-wide{width:500px}.attachment-list{display:flex;flex-direction:column;gap:8px;margin-bottom:8px}.attachment-item{display:grid;grid-template-columns:24px minmax(0,1fr) 34px;gap:11px;align-items:center;padding:9px 12px;border:1px solid var(--surface-2);border-radius:10px;background:var(--bg)}.attachment-item>.ms{color:var(--role-accent);font-size:20px}.attachment-item strong,.attachment-item span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.attachment-item strong{color:var(--text);font-size:13px}.attachment-item span{color:var(--text-hint);font-size:11.5px;font-weight:600}.upload-drop-button{width:100%;display:inline-flex;align-items:center;justify-content:center;gap:9px;border:1.5px dashed #cdd5df;border-radius:11px;padding:13px;background:#fafbfc;color:var(--text-muted)}.upload-drop-button .ms{color:var(--text-hint);font-size:20px}.student-card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(245px,1fr));gap:14px;margin-top:18px}.student-card{display:flex;flex-direction:column;min-width:0;border:1px solid var(--border);border-radius:14px;padding:15px;color:var(--text);background:var(--surface);transition:border-color .15s,box-shadow .15s,transform .08s}.student-card:hover{border-color:color-mix(in srgb,var(--role-accent) 35%,var(--border));box-shadow:0 10px 24px #14182114;transform:translateY(-1px)}.student-card-top,.student-card-footer,.student-card-stats{display:flex;align-items:center;justify-content:space-between;gap:10px}.student-card-name{margin-top:13px;color:var(--text);font-size:15px;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.student-card-stats{margin-top:15px;padding:11px 0;border-top:1px solid var(--surface-2);border-bottom:1px solid var(--surface-2)}.student-card-stats span{min-width:0;display:flex;flex-direction:column;gap:2px}.student-card-stats strong{color:var(--text);font-size:14px;font-variant-numeric:tabular-nums}.student-card-stats em{color:var(--text-hint);font-style:normal;font-size:11.5px;font-weight:600}.student-card-footer{margin-top:12px;color:var(--text-muted);font-size:12.5px;font-weight:600}.student-card-footer span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.generated-field{display:grid;grid-template-columns:minmax(0,1fr) 44px;gap:8px}.generated-field button,.icon-button.compact{width:34px;height:34px;padding:0;border-radius:9px}.generated-field button{width:44px;height:auto;display:inline-flex;align-items:center;justify-content:center}.created-credentials{margin-top:20px;text-align:center}.created-credentials h3{margin:0;font-size:18px}.created-icon{width:56px;height:56px;margin:0 auto 14px;border-radius:16px;background:var(--success-soft);color:var(--success);display:flex;align-items:center;justify-content:center}.created-icon .ms{font-size:30px}.credential-row{display:grid;grid-template-columns:24px minmax(0,1fr) 34px;gap:11px;align-items:center;margin-top:10px;padding:11px 14px;border:1px solid var(--border);border-radius:11px;text-align:left}.credential-row>.ms{color:var(--text-hint);font-size:20px}.credential-row span{display:block;color:var(--text-hint);font-size:11.5px;font-weight:600}.credential-row strong{display:block;overflow:hidden;color:var(--text);font-size:14px;text-overflow:ellipsis;white-space:nowrap}.credential-row .credential-strong{font-variant-numeric:tabular-nums;letter-spacing:.04em}.modal-actions-wide{justify-content:stretch}.modal-actions-wide button{flex:1}.lesson-group{margin:16px 0 22px}.lesson-group:first-of-type{margin-top:0}.lesson-group-title{display:flex;align-items:center;gap:10px;margin:0 0 10px;color:var(--text);font-weight:700;font-size:14px}.lesson-group-title:after{content:"";flex:1;height:1px;background:var(--border)}.lesson-list-row{display:grid;grid-template-columns:68px 40px minmax(0,1fr) auto auto;gap:14px;align-items:center;padding:14px 0;border-top:1px solid #f3f5f8}.lesson-list-row:first-of-type{border-top:none}.lesson-time{border-right:1px solid var(--surface-2);padding-right:12px;text-align:center}.lesson-time strong{display:block;font-size:17px;font-weight:800;font-variant-numeric:tabular-nums}.lesson-time span{display:block;margin-top:1px;color:var(--text-hint);font-size:11px;font-weight:600}.lesson-info{min-width:0}.lesson-title{font-weight:700;font-size:14.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lesson-card{background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--role-accent);border-radius:12px;padding:14px 16px;display:flex;align-items:center;gap:16px}.lesson-card+.lesson-card{margin-top:10px}.lesson-card .lesson-time{width:62px;flex-shrink:0}.lesson-card .lesson-info{flex:1;min-width:0}.lesson-card>.pill,.lesson-card>button,.lesson-card>.button-like,.lesson-card>.action-menu-wrap{flex-shrink:0}.lesson-card.status-completed{border-left-color:var(--success)}.lesson-card.status-cancelled{border-left-color:var(--border-strong);opacity:.72}.lesson-card.status-cancelled .lesson-time strong{color:var(--text-hint)}.lesson-price{font-weight:700;font-size:13.5px;font-variant-numeric:tabular-nums;color:var(--text-muted);flex-shrink:0}@media (max-width: 760px){.lesson-card{flex-wrap:wrap}.lesson-card .lesson-info{flex-basis:calc(100% - 120px)}.lesson-card>.pill,.lesson-card>button,.lesson-card>.button-like{margin-left:76px}}.inline-form{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto;gap:8px;align-items:end;margin-top:10px}.action-menu-wrap{position:relative}.action-menu{position:absolute;top:calc(100% + 6px);right:0;z-index:30;width:180px;padding:6px;border:1px solid var(--border);border-radius:11px;background:var(--surface);box-shadow:0 14px 32px #14182129}.action-menu button{width:100%;display:flex;align-items:center;justify-content:flex-start;gap:8px;border:none;border-radius:8px;padding:8px 9px;background:transparent;color:var(--text-muted);font-size:13px}.action-menu button:hover{background:var(--surface-3)}.action-menu .ms{font-size:18px}.action-menu .danger-menu-item{color:var(--danger-text)}.danger-button{color:var(--danger-text);border-color:#f4cdca}.danger-button:hover{background:#fdf3f2}.button-link{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:1px solid var(--border);border-radius:10px;background:var(--surface);color:var(--text);cursor:pointer;font-weight:600;padding:9px 14px}.button-link:hover{background:var(--bg)}.small-link{padding:6px 10px;font-size:12.5px;border-radius:9px}.profile-header{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:22px 24px;display:flex;align-items:center;gap:18px;margin-bottom:18px}.profile-avatar{width:60px;height:60px;border-radius:16px;font-size:22px}.profile-header-main{flex:1;min-width:0}.profile-title{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.profile-title h2{margin:0;font-weight:800;font-size:22px;letter-spacing:-.01em}.profile-meta{display:flex;align-items:center;gap:16px;margin-top:7px;color:var(--text-muted);font-size:13px;font-weight:500;flex-wrap:wrap}.profile-meta span{display:inline-flex;align-items:center;gap:6px}.profile-meta .ms{font-size:17px;color:var(--text-hint)}.profile-inline{display:flex;align-items:center;gap:13px;margin:14px 0}.review-layout{max-width:1000px;margin:0 auto;display:grid;grid-template-columns:minmax(0,1.5fr) minmax(320px,1fr);gap:18px;align-items:start}.sticky-column{position:sticky;top:0}.review-text{color:#3a414c;font-weight:500;font-size:14px;line-height:1.6;margin:14px 0}.review-options{display:flex;flex-direction:column;gap:10px;margin:14px 0 16px}.review-option{width:100%;justify-content:flex-start;display:flex;align-items:center;gap:10px;padding:13px 14px}.review-option .ms{font-size:21px;color:var(--success-text)}.review-option.warning .ms{color:var(--warning-text)}.review-option.active{border-color:var(--success);background:#f0faf4;color:var(--success-text)}.review-option.warning.active{border-color:var(--warning);background:#fffaf0;color:var(--warning-text)}.quick-replies{display:flex;flex-wrap:wrap;gap:7px;margin:-4px 0 14px}.transaction-row{display:grid;grid-template-columns:38px minmax(0,1fr) auto;gap:12px;align-items:center;padding:13px 0;border-top:1px solid #f3f5f8}.transaction-row:first-of-type{border-top:none}.transaction-icon{width:34px;height:34px;border-radius:9px;background:var(--role-accent-soft);color:var(--role-accent-strong);display:flex;align-items:center;justify-content:center}.transaction-icon .ms{font-size:19px}.amount-positive{color:var(--danger-text)}.amount-negative{color:var(--success-text)}.balance-preview{display:flex;align-items:center;gap:12px;background:var(--bg);border:1px solid var(--border);border-radius:11px;padding:12px 14px;margin:14px 0}.balance-preview>div{flex:1}.balance-preview>div:last-child{text-align:right}.balance-preview strong{display:block;font-size:16px;font-variant-numeric:tabular-nums;margin-top:2px}.rule-banner{display:flex;align-items:center;gap:10px;margin:16px 0 4px;padding:12px 14px;border:1px solid #f1dca5;border-radius:12px;background:var(--warning-soft);color:#7a5a1e;font-weight:600;font-size:13px}.rule-banner .ms{color:var(--warning-text);font-size:20px}.receipt-modal{width:520px}.receipt-preview{width:100%;margin-top:18px;display:grid;grid-template-columns:34px minmax(0,1fr) auto;gap:12px;align-items:center;text-align:left;padding:14px;border-radius:12px;background:var(--surface-3)}.receipt-preview .ms{color:var(--role-accent);font-size:22px}.receipt-preview span{color:var(--text);font-weight:700}.receipt-preview strong{color:var(--text-hint);font-size:12px;font-variant-numeric:tabular-nums}.balance-effect{display:flex;align-items:flex-start;gap:12px;margin-top:14px;padding:13px 14px;border-radius:12px}.balance-effect .ms{margin-top:1px;font-size:21px}.balance-effect strong,.balance-effect span{display:block}.balance-effect strong{font-size:13.5px}.balance-effect span{margin-top:2px;color:var(--text-muted);font-size:12.5px;font-weight:500}.effect-confirm{background:var(--success-soft);color:var(--success-text)}.effect-reject{background:var(--danger-soft);color:var(--danger-text)}.finance-kpi-grid{display:grid;grid-template-columns:1.3fr repeat(3,minmax(0,1fr));gap:16px;margin-bottom:18px}.finance-hero-card{position:relative;overflow:hidden;border-radius:16px;padding:20px 22px;background:#1c2440;color:#fff}.finance-hero-card:after{content:"";position:absolute;right:-30px;top:-30px;width:130px;height:130px;border-radius:50%;background:#3b5bdb66}.finance-hero-card .label,.finance-hero-card .value,.finance-hero-card .hint{position:relative}.finance-hero-card .label{display:flex;align-items:center;gap:8px;color:#aeb6d4;font-weight:600;font-size:12.5px}.finance-hero-card .value{margin-top:12px;font-weight:800;font-size:32px;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.finance-hero-card .hint{margin-top:2px;color:#9aa3c4}.metric-success{color:var(--success-text)}.metric-warning{color:var(--warning-text)}.inline-filter{display:flex;gap:5px;flex-wrap:wrap}.inline-filter button{padding:5px 11px;border-radius:8px;font-size:12px}.inline-filter button.active{border-color:#c7d2f7;background:var(--role-accent-soft);color:var(--role-accent-strong)}.finance-table-head,.finance-student-row{display:grid;grid-template-columns:1.7fr 1fr 1.2fr;gap:14px}.finance-table-head{padding:11px 22px;border-bottom:1px solid var(--border);background:#fafbfd;color:var(--text-hint);font-weight:700;font-size:11px;letter-spacing:.04em;text-transform:uppercase}.finance-table-head span:nth-child(2),.finance-table-head span:nth-child(3){text-align:right}.finance-student-row{width:100%;align-items:center;padding:13px 22px;border:none;border-bottom:1px solid #f3f5f8;border-radius:0;background:transparent;text-align:left}.finance-student-row:hover,.finance-student-row.active{background:var(--surface-3)}.finance-student-main{min-width:0;display:flex;align-items:center;gap:11px}.finance-student-main>span:last-child{min-width:0}.finance-student-main strong,.finance-student-main em{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.finance-student-main strong{color:var(--text);font-size:14px}.finance-student-main em{color:var(--text-hint);font-size:12px;font-style:normal;font-weight:600}.finance-debt,.finance-zero{text-align:right;font-size:14.5px;font-variant-numeric:tabular-nums}.finance-debt{color:var(--text)}.finance-credit{color:var(--success-text);text-align:right;font-size:14.5px;font-variant-numeric:tabular-nums}.finance-zero{color:var(--text-hint)}.finance-tag{justify-self:end;display:inline-flex;align-items:center;gap:6px;padding:4px 10px 4px 8px;border-radius:999px;font-weight:600;font-size:11.5px;white-space:nowrap}.finance-tag:before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor}.finance-tag-warning{background:var(--warning-soft);color:var(--warning-text)}.finance-tag-success{background:var(--success-soft);color:var(--success-text)}.finance-tag-muted{background:var(--surface-2);color:var(--text-muted)}.finance-operation-row{display:grid;grid-template-columns:38px minmax(0,1fr) auto;gap:12px;align-items:center;padding:12px 0;border-top:1px solid #f3f5f8}.finance-operation-row:first-of-type{border-top:none}.finance-operation-row>strong{font-size:13.5px;font-variant-numeric:tabular-nums}.finance-operation-main{min-width:0}.finance-operation-main .summary-title{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.pending-receipts-card{padding:18px 20px;border:1px solid #f5e2c8;border-radius:16px;background:#fffaf0}.pending-receipts-card>div{display:flex;align-items:center;gap:10px;color:#7a5a1e}.pending-receipts-card .ms{color:var(--warning);font-size:20px}.pending-receipts-card strong{font-size:15px}.pending-receipts-card p{margin:8px 0 14px;color:#7a5a1e;font-size:12.5px;font-weight:500;line-height:1.5}.pending-receipts-card .primary-action{width:100%;justify-content:center}.receipts-container{max-width:960px}.receipt-list-head,.receipt-row{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(110px,.8fr) minmax(110px,.8fr) auto;gap:16px;align-items:center}.receipt-list-head{padding:2px 18px 10px;color:var(--text-hint);font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.receipt-list-head span:nth-child(2){text-align:right}.receipt-list{display:flex;flex-direction:column;gap:10px}.receipt-row{padding:14px 18px;border:1px solid var(--border);border-left-width:3px;border-radius:12px;background:var(--surface);box-shadow:var(--shadow)}.receipt-row-warning{border-left-color:var(--warning)}.receipt-row-success{border-left-color:var(--success)}.receipt-row-danger{border-left-color:var(--danger)}.receipt-person{display:flex;align-items:center;gap:12px;min-width:0}.receipt-person>div:last-child{min-width:0}.receipt-person strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px}.receipt-amount{text-align:right;font-size:17px;font-variant-numeric:tabular-nums}.receipt-file-link{display:inline-flex;align-items:center;gap:6px;max-width:100%;margin-top:4px;padding:0;border:none;background:transparent;color:var(--role-accent);font-size:12px;font-weight:600;text-align:left}.receipt-file-link:hover{background:transparent;text-decoration:underline}.receipt-file-link .ms{font-size:15px}.receipt-file-link span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.receipt-file-link em{color:var(--text-hint);font-style:normal;white-space:nowrap}.receipt-actions{justify-content:flex-end;flex-wrap:nowrap}.receipt-resolved{display:inline-flex;align-items:center;gap:6px;color:var(--text-hint);font-size:12px;font-weight:600;white-space:nowrap}.receipt-resolved .ms{font-size:16px}.student-payment-layout{display:grid;grid-template-columns:minmax(300px,.95fr) minmax(0,1.25fr);gap:18px;align-items:start;max-width:980px}.student-payment-side{display:flex;flex-direction:column;gap:18px;min-width:0}.student-payment-hero{border-radius:16px}.student-pending-card{margin:0}.student-payment-metrics{grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:18px}.card-note{margin-top:0;color:var(--text-hint);font-size:12.5px;font-weight:500;line-height:1.5}.payment-form{display:flex;flex-direction:column;gap:13px}.quick-amounts{display:flex;flex-wrap:wrap;gap:7px;margin-top:-6px}.quick-amounts button{padding:6px 13px;border-radius:var(--radius-pill);border-color:color-mix(in srgb,var(--role-accent) 25%,var(--border));background:var(--role-accent-soft);color:var(--role-accent-strong);font-size:12.5px}.upload-drop{position:relative;display:flex;align-items:center;gap:12px;width:100%;box-sizing:border-box;padding:15px;border:1.5px dashed var(--border-strong);border-radius:12px;background:var(--surface-3);cursor:pointer}.upload-drop.has-file{border-color:var(--success);background:var(--success-soft)}.upload-drop>span:nth-child(2){min-width:0}.upload-drop strong,.upload-drop em{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.upload-drop strong{color:var(--text);font-size:13.5px}.upload-drop em{color:var(--text-hint);font-size:12px;font-style:normal;font-weight:500}.upload-drop input[type=file]{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer}.info-note{display:flex;align-items:flex-start;gap:8px;padding:11px 13px;border:1px solid color-mix(in srgb,var(--role-accent) 22%,var(--border));border-radius:11px;background:color-mix(in srgb,var(--role-accent-soft) 65%,#fff);color:var(--role-accent-strong);font-size:12px;font-weight:500;line-height:1.5}.info-note .ms{margin-top:1px;font-size:17px}.student-receipt-list{display:flex;flex-direction:column}.student-receipt-row{display:grid;grid-template-columns:40px minmax(0,1fr) auto;gap:13px;align-items:center;padding:14px 0;border-top:1px solid #f3f5f8}.student-receipt-row:first-child{border-top:none}.student-receipt-main{min-width:0}.student-receipt-title{display:flex;align-items:baseline;gap:9px;min-width:0}.student-receipt-title strong{font-size:15px;font-variant-numeric:tabular-nums;white-space:nowrap}.student-receipt-title span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-muted);font-size:12.5px;font-weight:600}.student-file-link{margin-left:-7px;max-width:calc(100% + 7px)}.receipt-reject-reason{margin-top:4px;color:var(--danger-text);font-size:12px;font-weight:600}.student-history-more{justify-content:center;margin-top:10px}.profile-tabs{display:flex;gap:24px;margin:0 0 20px;border-bottom:1px solid var(--border);overflow-x:auto}.profile-tabs button{padding:0 2px 12px;border:none;border-bottom:2px solid transparent;border-radius:0;background:transparent;color:var(--text-muted);white-space:nowrap;font-size:14px}.profile-tabs button.active{border-bottom-color:var(--role-accent);color:var(--role-accent-strong)}.student-overview-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(320px,1fr);gap:18px;align-items:start}.student-info-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 28px;padding:4px 0 8px}.info-item{display:flex;align-items:center;gap:12px;min-width:0;padding:13px 0;border-bottom:1px solid #f3f5f8}.info-item .ms{color:var(--text-hint);font-size:19px}.info-item span,.info-item strong{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.info-item span{color:var(--text-hint);font-size:11.5px;font-weight:600}.info-item strong{color:var(--text);font-size:13.5px}.notes-textarea{min-height:74px;background:#fbfcfe}.extra-fields-placeholder{display:flex;align-items:center;gap:12px;margin-top:14px;padding:9px 13px;border:1px solid var(--surface-2);border-radius:10px;background:var(--bg);color:var(--text-muted)}.extra-fields-placeholder span{display:inline-flex;align-items:center;gap:6px;min-width:120px;color:var(--text-muted);font-size:12.5px;font-weight:700}.extra-fields-placeholder strong{font-size:13.5px}.activity-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.stat-box{padding:12px 14px;border:1px solid var(--surface-2);border-radius:11px;background:var(--surface-3)}.stat-box strong,.stat-box span{display:block}.stat-box strong{font-size:22px;font-weight:800;font-variant-numeric:tabular-nums}.stat-box strong.success{color:var(--success-text)}.stat-box span{margin-top:1px;color:var(--text-hint);font-size:11.5px;font-weight:600}.tag-list{display:flex;gap:8px;flex-wrap:wrap}.tag-list span{padding:5px 12px;border-radius:999px;background:var(--role-accent-soft);color:var(--role-accent-strong);font-size:12.5px;font-weight:700}.student-finance-row{display:grid;grid-template-columns:1.1fr 1fr 1fr;gap:16px;margin-bottom:18px}.student-balance-card{padding:20px 22px;border:1px solid #c7d2f7;border-radius:16px;background:var(--role-accent-soft)}.student-balance-card .label{display:flex;align-items:center;gap:8px;color:var(--role-accent-strong);font-size:12.5px;font-weight:700}.student-balance-card .value{margin-top:12px;color:var(--role-accent-strong);font-size:32px;font-weight:800;font-variant-numeric:tabular-nums}.student-balance-card .hint{margin-top:2px}.student-balance-card.is-credit{border-color:#cdeede;background:var(--success-soft)}.student-balance-card.is-credit .label,.student-balance-card.is-credit .value{color:var(--success-text)}.student-balance-card.is-credit .hint{color:#3f9b6e}.student-balance-card button{width:100%;margin-top:16px;display:inline-flex;align-items:center;justify-content:center;gap:7px;color:var(--role-accent-strong);border-color:#c7d2f7}.student-pending-note{margin-bottom:18px}.student-pending-note .button-link{margin-left:auto;white-space:nowrap}.journal-head,.journal-row{display:grid;grid-template-columns:40px minmax(0,1fr) 130px 130px;gap:14px;align-items:center}.journal-head{margin-top:14px;padding:11px 22px;border-top:1px solid var(--surface-2);border-bottom:1px solid var(--border);background:#fafbfd;color:var(--text-hint);font-size:11px;font-weight:800;letter-spacing:.04em;text-transform:uppercase}.journal-head span:nth-child(3),.journal-head span:nth-child(4){text-align:right}.journal-row{padding:13px 22px;border-bottom:1px solid #f3f5f8}.journal-row strong,.journal-row span{display:block;min-width:0}.journal-row>strong,.journal-row>span:last-child{text-align:right}.journal-row div:nth-child(2) strong,.journal-row div:nth-child(2) span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.journal-row div:nth-child(2) span{color:var(--text-hint);font-size:12px;font-weight:600}.direction-toggle{display:flex;gap:8px;margin-top:20px;padding:4px;border-radius:11px;background:var(--surface-2)}.direction-toggle button{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:6px;border:none;padding:9px}.direction-toggle button.active{background:var(--surface);color:var(--role-accent-strong);box-shadow:0 1px 2px #1418210f}.review-card,.review-verdict-panel{border:1px solid var(--border);border-radius:16px;background:var(--surface);box-shadow:var(--shadow)}.review-card{padding:22px 24px}.review-card-main{display:flex;gap:14px;align-items:flex-start}.review-card-icon{width:44px;height:44px;flex-shrink:0;display:flex;align-items:center;justify-content:center;border-radius:12px;background:var(--role-accent-soft);color:var(--role-accent-strong)}.review-card-icon .ms{font-size:24px}.review-title-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.review-title-row h2{margin:0;font-size:20px;font-weight:800}.review-meta-row{display:flex;align-items:center;gap:16px;margin-top:8px;flex-wrap:wrap;color:var(--text-muted);font-size:13px;font-weight:600}.review-meta-row span{display:inline-flex;align-items:center;gap:6px}.review-meta-row .ms{color:var(--text-hint);font-size:17px}.review-section-heading{display:flex;align-items:center;gap:10px;margin:-6px -2px 16px}.review-section-heading h3{margin:0;font-size:16px;font-weight:800}.review-section-heading>span:last-child{margin-left:auto;color:var(--text-hint);font-size:12.5px;font-weight:600}.submission-summary{display:flex;align-items:center;gap:12px;margin-bottom:12px}.submission-summary strong,.submission-summary span{display:block}.submission-summary span{color:var(--text-muted);font-size:12.5px;font-weight:600}.student-comment{display:flex;align-items:flex-start;gap:8px;margin:14px 0;color:var(--text-muted);font-size:12.5px;font-weight:600;line-height:1.5}.student-comment .ms{color:var(--text-hint);font-size:16px;margin-top:1px}.review-timeline{display:flex;flex-direction:column}.timeline-item{display:grid;grid-template-columns:16px minmax(0,1fr);gap:13px}.timeline-marker{display:flex;flex-direction:column;align-items:center}.timeline-dot{width:11px;height:11px;margin-top:3px;border-radius:50%}.timeline-dot.warning{background:var(--warning)}.timeline-dot.danger{background:var(--danger)}.timeline-dot.info{background:var(--role-accent)}.timeline-marker i{width:2px;flex:1;margin:3px 0;background:var(--border)}.timeline-item>div:last-child{padding-bottom:16px}.timeline-item strong,.timeline-item span{display:block}.timeline-item strong{font-size:13px}.timeline-item span{margin-top:2px;color:var(--text-hint);font-size:12px;font-weight:600}.review-verdict-panel{padding:22px}.review-verdict-panel h2{margin:0;font-size:17px;font-weight:800}.review-verdict-panel>p{margin:3px 0 18px;color:var(--text-hint);font-size:13px;font-weight:600}.review-option span{width:38px;height:38px;flex-shrink:0;border-radius:10px;background:var(--success-soft);color:var(--success-text);display:inline-flex;align-items:center;justify-content:center}.review-option.warning span{background:var(--warning-soft);color:var(--warning-text)}.review-option.active span{background:var(--success);color:#fff}.review-option.warning.active span{background:var(--warning);color:#fff}.review-attach{width:100%;margin-top:14px;display:flex;align-items:center;justify-content:flex-start;gap:10px;border:1.5px dashed #cdd5df;border-radius:11px;padding:11px 14px;color:var(--text-muted);background:transparent}.review-attach.active{border-color:#9cd0a8;background:#f0faf4;color:var(--success-text)}.review-submit{width:100%;margin-top:18px;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:13px;border-radius:12px;font-weight:800}.review-notify{display:flex;align-items:center;justify-content:center;gap:7px;margin-top:12px;color:var(--text-hint);font-size:11.5px;font-weight:600}.comment-thread{display:flex;flex-direction:column;gap:12px}.comment-item{display:flex;gap:11px;align-items:flex-start}.comment-body{flex:1;min-width:0;background:var(--surface-3);border:1px solid var(--border);border-radius:12px;padding:10px 13px}.comment-head{display:flex;align-items:baseline;gap:8px}.comment-author{font-weight:700;font-size:12.5px}.comment-author.teacher{color:var(--accent-strong)}.comment-author.student{color:var(--success-text)}.comment-time{font-size:11px;font-weight:500;color:var(--text-hint)}.comment-text{font-size:13px;font-weight:500;color:var(--text);margin-top:3px;line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere}.comment-form{display:flex;align-items:flex-end;gap:8px;margin-top:14px}.comment-form textarea{flex:1;min-height:42px;max-height:120px;resize:vertical;background:var(--surface-3);line-height:1.4}button.assignment-row-main{border:none;background:transparent;text-align:left;padding:0;margin:0;cursor:pointer;font:inherit;color:inherit}button.assignment-row-main:hover{background:transparent}.assignment-title-text{font-weight:800;font-size:15px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text)}.submit-box{margin-top:14px;padding-top:14px;border-top:1px solid var(--border)}.notice-row{display:flex;align-items:center;gap:9px;margin-top:14px;padding:11px 13px;border-radius:11px;font-weight:600;font-size:13px;background:var(--surface-2);color:var(--text-muted)}.notice-row .ms{font-size:19px}.notice-row.danger{background:var(--danger-soft);color:var(--danger-text)}.notice-row.success{background:var(--success-soft);color:var(--success-text)}.auth-page{min-height:100vh;display:grid;grid-template-columns:minmax(360px,.9fr) minmax(420px,1fr);background:#10162a}.auth-brand-panel{min-height:100vh;padding:54px 46px;color:#fff;display:flex;flex-direction:column}.auth-logo{width:48px;height:48px;border-radius:14px;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;font-size:22px;font-weight:900}.auth-brand-panel h1{margin:24px 0 0;font-size:36px;font-weight:900}.auth-brand-panel p{margin:8px 0 0;color:#aeb6d4;font-size:15px;font-weight:600}.auth-feature-list{margin-top:auto;display:flex;flex-direction:column;gap:16px}.auth-feature{display:flex;align-items:center;gap:13px}.auth-feature>div{width:40px;height:40px;flex-shrink:0;border-radius:11px;background:#ffffff14;color:#9fb0ff;display:flex;align-items:center;justify-content:center}.auth-feature strong,.auth-feature em{display:block}.auth-feature strong{font-size:14px}.auth-feature em{color:#9aa3c4;font-size:12.5px;font-style:normal;font-weight:600}.auth-form-side{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:32px;background:var(--bg)}.auth-form-card{width:420px;max-width:100%;padding:30px;border:1px solid var(--border);border-radius:18px;background:var(--surface);box-shadow:0 16px 44px #1418211f}.auth-form-heading h2{margin:0;font-size:25px;font-weight:900}.auth-form-heading p{margin:5px 0 22px;color:var(--text-hint);font-size:13px;font-weight:600}.auth-form{display:flex;flex-direction:column;gap:2px}.input-with-icon{position:relative}.input-with-icon .ms{position:absolute;left:13px;top:50%;transform:translateY(-50%);color:var(--text-hint);font-size:20px}.input-with-icon input{padding-left:42px}.role-segment{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:4px;border-radius:11px;background:var(--surface-2)}.role-segment button{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:none;padding:9px;background:transparent;color:var(--text-muted)}.role-segment button.active{background:var(--surface);color:var(--role-accent-strong);box-shadow:0 1px 2px #1418210f}.auth-submit{width:100%;margin-top:8px;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px;border-radius:12px}.auth-footer{margin-top:18px;text-align:center;color:var(--text-muted);font-size:14px;font-weight:700}.chat-layout{display:flex;gap:0;min-height:340px;margin:0 -20px -18px}.chat-dialogs{width:320px;flex-shrink:0;display:flex;flex-direction:column;gap:6px;border-right:1px solid var(--border);padding:14px;background:var(--surface)}.chat-dialog-item{display:grid;grid-template-columns:1fr auto;align-items:center;gap:4px 8px;text-align:left;padding:10px 11px;border:1px solid transparent;border-radius:10px;background:transparent}.chat-dialog-item.active{border-color:var(--role-accent-soft);background:var(--role-accent-soft);color:var(--role-accent-strong)}.chat-dialog-name{font-weight:700;font-size:13.5px}.chat-dialog-name.online:before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--success);margin-right:6px;vertical-align:1px}.chat-dialog-preview{grid-column:1 / -1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-unread{background:var(--role-accent);color:#fff;border-radius:999px;font-size:11px;min-width:18px;height:18px;text-align:center;padding:0 6px;display:inline-flex;align-items:center;justify-content:center}.chat-window{flex:1;min-width:0;display:flex;flex-direction:column;background:var(--bg);padding:14px}.chat-messages{flex:1;display:flex;flex-direction:column;gap:8px;overflow-y:auto;max-height:360px;padding:4px}.chat-msg{align-self:flex-start;max-width:min(80%,520px);background:var(--surface);border:1px solid var(--border);border-radius:14px 14px 14px 4px;padding:8px 11px}.chat-msg.mine{align-self:flex-end;background:var(--role-accent);color:#fff;border:none;border-radius:14px 14px 4px}.chat-msg.mine .hint{color:#ffffffb8}.chat-msg-text{font-size:14px;white-space:pre-wrap;word-break:break-word}.chat-compose{display:flex;gap:8px;align-items:center;margin-top:10px;border-top:1px solid var(--border);padding-top:12px}.chat-compose input[type=text],.chat-compose>input:not([type]){flex:1}.chat-page{height:calc(100vh - 62px);margin:-26px;display:flex;min-height:0;background:var(--bg)}.chat-page-list{width:320px;flex-shrink:0;background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;min-height:0}.chat-start-form{display:flex;gap:8px;padding:14px 16px 0}.chat-start-form select{min-width:0}.chat-page-search{position:relative;padding:12px 16px;flex-shrink:0}.chat-page-search .ms{position:absolute;left:27px;top:50%;transform:translateY(-50%);color:var(--text-hint);font-size:19px}.chat-page-search input{padding-left:38px;background:var(--surface-3)}.chat-page-dialogs{flex:1;min-height:0;overflow-y:auto}.chat-page-dialog{width:100%;display:grid;grid-template-columns:42px 1fr auto;align-items:center;gap:12px;position:relative;border:none;border-left:3px solid transparent;border-radius:0;padding:12px 16px 12px 13px;text-align:left;background:transparent}.chat-page-dialog:hover{background:var(--surface-3)}.chat-page-dialog.active{border-left-color:var(--role-accent);background:color-mix(in srgb,var(--role-accent-soft) 60%,#fff)}.dialog-avatar{width:42px;height:42px;border-radius:12px}.presence-dot{position:absolute;left:45px;bottom:12px;width:12px;height:12px;border-radius:50%;background:#c4ccd6;border:2px solid #fff}.presence-dot.online{background:var(--success)}.dialog-main{min-width:0;display:grid;gap:2px}.dialog-title-row{display:flex;align-items:center;gap:8px}.dialog-title-row strong{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px}.dialog-title-row span{flex-shrink:0;font-size:11.5px;font-weight:500;color:var(--text-hint)}.dialog-preview{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-hint);font-size:12.5px;font-weight:500}.dialog-preview.unread{color:var(--text);font-weight:700}.chat-page-thread{flex:1;min-width:0;min-height:0;display:flex;flex-direction:column}.chat-thread-header{flex-shrink:0;background:var(--surface);border-bottom:1px solid var(--border);padding:12px 22px;display:flex;align-items:center;gap:13px}.presence{color:var(--text-hint);font-weight:600;font-size:12px;display:flex;align-items:center;gap:6px}.presence span{width:6px;height:6px;border-radius:50%;background:#c4ccd6}.presence.online{color:var(--success-text)}.presence.online span{background:var(--success)}.chat-thread-actions{margin-left:auto;display:flex;gap:8px}.chat-page-messages{flex:1;min-height:0;overflow-y:auto;padding:22px 22px 8px;display:flex;flex-direction:column;gap:3px}.chat-date-pill{align-self:center;margin:4px 0 12px;color:var(--text-hint);background:#e9edf2;padding:4px 12px;border-radius:999px;font-size:11.5px;font-weight:600}.chat-page-message{align-self:flex-start;max-width:min(64%,680px);display:flex;flex-direction:column;align-items:flex-start;margin-bottom:8px}.chat-page-message.mine{align-self:flex-end;align-items:flex-end}.chat-page-bubble{background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:14px 14px 14px 4px;padding:9px 13px;box-shadow:0 1px 1px #1418210a}.chat-page-message.mine .chat-page-bubble{background:var(--role-accent);color:#fff;border:none;border-radius:14px 14px 4px}.chat-page-message.mine .hint,.chat-page-message.mine .section-title{color:#ffffffb8}.message-meta{display:flex;align-items:center;gap:5px;margin-top:4px;padding:0 4px;font-size:11px;font-weight:500;color:var(--text-hint)}.message-meta .ms{font-size:15px;color:var(--role-accent)}.chat-page-compose{flex-shrink:0;background:var(--surface);border-top:1px solid var(--border);padding:14px 22px;display:flex;align-items:flex-end;gap:10px}.chat-page-compose textarea{flex:1;min-height:42px;max-height:120px;resize:none;background:var(--surface-3);line-height:1.4}.chat-empty{margin:auto;display:flex;flex-direction:column;align-items:center;gap:8px;color:var(--text-hint)}.chat-empty .ms{width:60px;height:60px;border-radius:16px;background:var(--surface-2);align-items:center;justify-content:center;font-size:30px}.chat-empty strong{color:var(--text-muted);font-size:15px}.topbar{display:none}button.has-icon,.button-like.has-icon{display:inline-flex;align-items:center;justify-content:center;gap:7px}button .ms{font-size:18px}button.secondary,.button-like.secondary{background:var(--surface-2);border-color:var(--border);color:var(--text)}button.secondary:hover,.button-like.secondary:hover{background:#e3e9f1}button.ghost,.button-like.ghost{background:transparent;border-color:transparent;color:var(--role-accent)}button.ghost:hover,.button-like.ghost:hover{background:color-mix(in srgb,var(--role-accent-soft) 55%,transparent)}button.danger,.button-like.danger{background:var(--surface);color:var(--danger-text);border-color:#f4cdca}button.danger:hover,.button-like.danger:hover{background:#fdf3f2}button.lg,.button-like.lg{padding:12px 22px;font-size:15px;border-radius:11px}button.block,.button-like.block{width:100%}.spin{animation:tfspin .8s linear infinite}@keyframes tfspin{to{transform:rotate(360deg)}}.field-error{font-weight:500;font-size:12px;color:var(--danger-text);margin-top:6px}input.invalid,select.invalid,textarea.invalid{border-color:var(--danger);box-shadow:0 0 0 3px color-mix(in srgb,var(--danger-soft) 80%,transparent)}.badge{display:inline-flex;align-items:center;gap:6px;padding:2px 9px;border-radius:var(--radius-pill);font-weight:700;font-size:11.5px;white-space:nowrap;background:var(--surface-2);color:var(--text-muted)}.badge .ms{font-size:14px}.badge-info{background:var(--info-soft);color:var(--info-text)}.badge-success{background:var(--success-soft);color:var(--success-text)}.badge-warning{background:var(--warning-soft);color:var(--warning-text)}.badge-danger{background:var(--danger-soft);color:var(--danger-text)}.counter{min-width:18px;height:18px;padding:0 5px;border-radius:var(--radius-pill);display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:11px;background:var(--role-accent);color:#fff;flex-shrink:0}.counter-danger{background:var(--danger)}.counter-warning{background:var(--warning-soft);color:var(--warning-text)}.counter-muted{background:var(--surface-2);color:var(--text-hint)}.avatar.avatar-sm{width:30px;height:30px;border-radius:8px;font-size:12px}.avatar.avatar-lg{width:44px;height:44px;border-radius:12px;font-size:15px}.avatar.tone-teacher{background:var(--accent-soft);color:var(--accent-strong);box-shadow:none}.avatar.tone-student{background:var(--success-soft);color:var(--success-text);box-shadow:none}.avatar.tone-amber{background:var(--warning-soft);color:var(--warning-text);box-shadow:none}.avatar.tone-muted{background:var(--surface-2);color:var(--text-muted);box-shadow:none}.avatar-wrap{position:relative;flex-shrink:0;display:inline-flex}.avatar-online{position:absolute;right:-2px;bottom:-2px;width:11px;height:11px;border-radius:50%;background:var(--success);border:2px solid #fff}.avatar-online.away{background:#c4ccd6}.toast{display:flex;align-items:flex-start;gap:11px;animation:toastIn .28s cubic-bezier(.4,0,.2,1)}.toast>.ms{font-size:20px;margin-top:1px;flex-shrink:0;color:var(--role-accent)}.toast-main{flex:1;min-width:0}.toast-close{width:auto;height:auto;padding:0;border:none;background:none;color:#b8c0cc;flex-shrink:0}.toast-close:hover{background:none;color:var(--text-muted)}.toast.info{border-left-color:var(--info)}.toast.info>.ms{color:var(--info)}.toast.success{border-left-color:var(--success)}.toast.success>.ms{color:var(--success)}.toast.warning{border-left-color:var(--warning)}.toast.warning>.ms{color:var(--warning)}.toast.danger{border-left-color:var(--danger)}.toast.danger>.ms{color:var(--danger)}@keyframes toastIn{0%{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:none}}.skeleton{position:relative;overflow:hidden;background:var(--surface-2);border-radius:8px}.skeleton:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;transform:translate(-100%);background:linear-gradient(90deg,transparent,rgba(255,255,255,.6),transparent);animation:tfshimmer 1.3s infinite}@keyframes tfshimmer{to{transform:translate(100%)}}.skeleton-row{display:flex;align-items:center;gap:13px;padding:12px 0;border-top:1px solid #f3f5f8}.skeleton-row:first-child{border-top:none}.skeleton-avatar{width:38px;height:38px;border-radius:10px;flex-shrink:0}.skeleton-lines{flex:1;min-width:0}.empty-state{display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px;padding:34px 20px;color:var(--text-hint)}.empty-state>.ms{width:54px;height:54px;border-radius:16px;background:var(--surface-2);align-items:center;justify-content:center;font-size:28px;color:var(--text-muted)}.empty-state strong{color:var(--text-muted);font-size:15px;font-weight:700}.empty-state p{margin:0;font-size:13px}.empty-state.success>.ms{background:var(--success-soft);color:var(--success-text)}.metric-value-row{display:flex;align-items:baseline;gap:9px;margin-top:10px}.metric-value-row .value{margin-top:0}.metric-pill{font-weight:600;font-size:12.5px;padding:2px 9px;border-radius:var(--radius-pill)}.metric-pill.warning{color:var(--warning-text);background:var(--warning-soft)}.metric-pill.success{color:var(--success-text);background:var(--success-soft)}.metric-pill.info{color:var(--info-text);background:var(--info-soft)}.metric.warn .value{color:var(--warning-text)}.metric-sub{font-weight:500;font-size:12px;color:var(--text-hint);margin-top:3px}.metric-sub.pos{color:var(--success-text)}.card-head-chip{font-weight:600;font-size:12px;color:var(--text-muted);background:var(--surface-2);padding:3px 9px;border-radius:var(--radius-pill)}.card-head-link{margin-left:auto;padding:4px 6px;border:none;background:none;width:auto;height:auto;font-weight:600;font-size:13px;color:var(--role-accent)}.card-head-link:hover{background:none;text-decoration:underline}.card-heading .ms.warn{color:var(--warning)}.live-dot{width:8px;height:8px;border-radius:50%;background:var(--success);animation:tfpulse 2s infinite;flex-shrink:0}@keyframes tfpulse{0%{box-shadow:0 0 #18a86673}70%{box-shadow:0 0 0 6px #18a86600}to{box-shadow:0 0 #18a86600}}.dash-row{display:flex;align-items:center;gap:13px;padding:12px 20px;border-top:1px solid #f3f5f8}.dash-row:first-of-type{border-top:none}.dash-row.clickable{cursor:pointer;transition:background .15s}.dash-row.clickable:hover{background:var(--surface-3)}.dash-row.dim{opacity:.6}.dash-time{font-weight:700;font-size:14px;font-variant-numeric:tabular-nums;width:46px;flex-shrink:0}.dash-main{flex:1;min-width:0}.dash-main .t{font-weight:600;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dash-main .s{font-weight:500;font-size:12.5px;color:var(--text-hint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dash-amount{font-weight:700;font-size:14px;font-variant-numeric:tabular-nums;flex-shrink:0}.dash-icon{width:30px;height:30px;flex-shrink:0;border-radius:8px;display:flex;align-items:center;justify-content:center;background:var(--surface-2)}.dash-icon .ms{font-size:18px}.dash-head{display:flex;align-items:center;gap:8px;padding:15px 20px 6px}.dash-head .lbl{font-weight:700;font-size:12px;letter-spacing:.05em;text-transform:uppercase;color:var(--text-hint)}.unread-dot{width:8px;height:8px;border-radius:50%;background:var(--role-accent);margin-top:5px;flex-shrink:0}.card>.dash-row,.card>div>.dash-row,.card>.dash-head,.card>div>.dash-head,.card>.empty-state,.card>div>.empty-state,.card>.skeleton-row,.card>div>.skeleton-row,.card>.finance-table-head,.card>.finance-student-row,.card>.journal-head,.card>.journal-row,.card>.card-scroll{margin-left:0;margin-right:0}.card-scroll{max-height:320px;overflow-y:auto}.dash-icon.lg{width:38px;height:38px;border-radius:10px}.dash-icon.lg .ms{font-size:20px}.dash-icon.tone-info{background:var(--info-soft);color:var(--info-text)}.dash-icon.tone-success{background:var(--success-soft);color:var(--success-text)}.dash-icon.tone-warning,.dash-icon.tone-amber{background:var(--warning-soft);color:var(--warning-text)}.dash-icon.tone-danger{background:var(--danger-soft);color:var(--danger-text)}.dash-icon.tone-muted{background:var(--surface-2);color:var(--text-muted)}.card-head-chip.warning{color:var(--warning-text);background:var(--warning-soft)}.assignment-title-line{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.student-top{display:grid;grid-template-columns:1fr 1.45fr;gap:16px;margin-bottom:18px;align-items:stretch}.balance-hero .label{display:flex;align-items:center;gap:8px;font-weight:600;font-size:12.5px}.balance-hero .label .ms{font-size:19px}.balance-lock{margin-left:auto;display:inline-flex;align-items:center;gap:5px;font-weight:600;font-size:11px;background:#ffffff24;color:#fff;padding:3px 9px;border-radius:var(--radius-pill)}.balance-lock .ms{font-size:13px}.balance-foot{margin-top:16px;padding-top:14px;border-top:1px solid rgba(255,255,255,.16);display:flex;gap:24px}.balance-foot-label{font-weight:500;font-size:11.5px;color:color-mix(in srgb,#fff 60%,var(--role-accent-soft))}.balance-foot-value{font-weight:700;font-size:15px;font-variant-numeric:tabular-nums;margin-top:2px;color:#fff}.next-lesson{background:var(--surface);border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow);padding:22px 24px;display:flex;flex-direction:column}.next-lesson-head{display:flex;align-items:center;gap:8px;color:var(--text-hint);font-weight:600;font-size:12.5px}.next-lesson-head .ms{font-size:19px}.next-lesson-when{font-weight:800;font-size:24px;margin-top:14px;letter-spacing:-.01em}.next-lesson-topic{font-weight:600;font-size:14px;color:var(--text-muted);margin-top:4px}.next-lesson-foot{display:flex;align-items:center;gap:11px;margin-top:auto;padding-top:18px}.next-lesson-foot .dash-main{flex:1;min-width:0}.online-text{color:var(--success-text);font-weight:600}@media (max-width: 1180px){.student-top{grid-template-columns:1fr}}@media (max-width: 760px){.dash-row,.dash-head{padding-left:14px;padding-right:14px}}@media (max-width: 1180px){.metrics,.kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.grid,.dashboard-grid{grid-template-columns:1fr}}@media (max-width: 760px){.app-shell{height:auto;min-height:100vh;overflow:visible}.sidebar{display:none}.app-main{min-height:100vh}.app-header{position:sticky;top:0;z-index:10;padding:0 14px;gap:10px}.menu-button{display:none}.header-actions .primary-action span:not(.ms){display:none}.app-content{padding:16px 14px 40px}.metrics,.kpi-grid{grid-template-columns:1fr;gap:12px}.metric .value{font-size:26px}.field-row{flex-direction:column;align-items:stretch}.modal-panel{padding:22px}.modal-field-row .time-field{flex:1}.modal-actions{flex-wrap:wrap}.modal-actions button{flex:1}.row{align-items:flex-start;flex-direction:column}.resource-row{grid-template-columns:34px minmax(0,1fr)}.resource-row>.btn-group,.resource-row>.pill{grid-column:2 / -1;justify-content:flex-start}.inline-panel{margin-left:0}.btn-group{justify-content:flex-start}.teacher-toolbar{align-items:stretch;flex-direction:column}.search-field{width:100%}.lesson-list-row{grid-template-columns:52px 40px minmax(0,1fr);align-items:start}.lesson-list-row>.pill,.lesson-list-row>.btn-group{grid-column:2 / -1}.inline-form,.review-layout{grid-template-columns:1fr}.sticky-column{position:static}.profile-header{align-items:flex-start;flex-direction:column}.chat-layout{flex-direction:column;margin:0 -20px -18px}.chat-dialogs{width:100%;border-right:none;border-bottom:1px solid var(--border)}.chat-compose{flex-wrap:wrap}.chat-page{height:calc(100vh - 62px);margin:-16px -14px -40px;flex-direction:column}.chat-page-list{width:100%;max-height:42vh;border-right:none;border-bottom:1px solid var(--border)}.chat-page-message{max-width:88%}.chat-thread-header,.chat-page-messages,.chat-page-compose{padding-left:14px;padding-right:14px}}
