*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.fixed{position:fixed}.inline{display:inline}.table{display:table}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}:root{color-scheme:light;--ink: #1f2937;--muted: #667085;--line: #cfd8e3;--line-strong: #aebccc;--bg: #f4f7fb;--panel: #ffffff;--header: #e8eef6;--morning: #eef8f2;--morning-head: #d6efdf;--afternoon: #fff7e7;--afternoon-head: #ffe8b8;--evening: #eef4ff;--evening-head: #d9e6ff;--accent: #2563eb;--accent-dark: #1d4ed8;--danger: #b42318}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif}button,input,select,textarea{font:inherit}button{cursor:pointer}.app-shell{min-height:100vh}.login-shell{display:grid;min-height:100vh;place-items:center;padding:22px;background:var(--bg)}.login-panel{display:grid;gap:16px;width:min(420px,100%);border:1px solid var(--line);border-radius:8px;background:#fff;padding:28px;box-shadow:0 16px 40px #10182814}.login-panel h1{margin:0;font-size:24px}.login-panel p{margin:6px 0 0;color:var(--muted);font-size:14px}.login-field{display:grid;gap:6px}.login-field span{color:var(--muted);font-size:13px;font-weight:700}.login-field input{width:100%;height:40px;border:1px solid var(--line-strong);border-radius:5px;padding:7px 10px}.login-field input:focus{border-color:var(--accent);outline:2px solid rgba(37,99,235,.14)}.login-error{border:1px solid #fecaca;border-radius:5px;background:#fef2f2;color:var(--danger);padding:9px 10px;font-size:14px;font-weight:700}.login-submit{width:100%;min-height:40px}.loading-panel{align-items:center;justify-items:center;text-align:center}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:24px;padding:16px 22px;border-bottom:1px solid var(--line);background:#fffffff5;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.topbar h1{margin:0;font-size:22px;font-weight:700;letter-spacing:0}.topbar p{margin:4px 0 0;color:var(--muted);font-size:13px}.sync-status{display:inline-flex;align-items:center;min-height:28px;margin-bottom:10px;border:1px solid #bfdbfe;border-radius:5px;background:#eff6ff;color:#1d4ed8;padding:4px 9px;font-size:12px;font-weight:700}.tabs{display:flex;flex-wrap:wrap;gap:8px}.tab,.icon-button{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:36px;border:1px solid var(--line);border-radius:6px;background:#fff;color:#344054;padding:8px 12px;font-size:14px;font-weight:600;white-space:nowrap;transition:background .15s ease,border-color .15s ease,color .15s ease}.tab span,.icon-button span{white-space:nowrap}.tab:hover,.icon-button:hover{border-color:var(--line-strong);background:#f8fafc}.tab.active,.icon-button.primary{border-color:var(--accent);background:var(--accent);color:#fff}.user-tab{border-color:#d0d5dd;background:#f8fafc}.icon-button.danger{border-color:#f3b5b0;color:var(--danger)}main{padding:18px 22px 32px}.panel{border:1px solid var(--line);background:var(--panel);box-shadow:0 1px 2px #1018280a}.toolbar{display:flex;align-items:end;justify-content:space-between;gap:16px;padding:14px;border-bottom:1px solid var(--line);background:#fbfdff}.field{display:grid;gap:5px;min-width:220px}.field.compact{min-width:170px}.field label,.mini-field span,.metric span{color:var(--muted);font-size:12px;font-weight:600}.field input,.field select,.metric.editable input,.mini-field select{width:100%;height:36px;border:1px solid var(--line-strong);border-radius:4px;background:#fff;color:var(--ink);padding:6px 9px}.field input:focus,.field select:focus,.mini-field input:focus,.mini-field select:focus,.metric.editable input:focus{border-color:var(--accent);outline:2px solid rgba(37,99,235,.14)}.summary-strip{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px}.summary-strip.inline{flex:1}.summary-strip.accounts,.summary-strip.data-summary{justify-content:flex-start;padding:14px;border-bottom:1px solid var(--line)}.metric{display:grid;align-content:center;min-width:138px;min-height:58px;border:1px solid var(--line);border-radius:6px;background:#fff;padding:9px 12px}.metric strong{margin-top:3px;color:#111827;font-size:18px;line-height:1.2}.metric.strong{border-color:#93c5fd;background:#eff6ff}.metric.strong strong{color:var(--accent-dark)}.metric.editable{min-width:170px}.metric.editable input{margin-top:4px}.schedule-wrap{overflow:auto;max-height:calc(100vh - 205px)}.schedule-table{width:100%;min-width:1720px;border-collapse:separate;border-spacing:0;table-layout:fixed}.schedule-table th,.schedule-table td{border-right:1px solid var(--line);border-bottom:1px solid var(--line);vertical-align:top}.schedule-table thead th{position:sticky;top:0;z-index:5;height:42px;color:#243041;font-size:14px;font-weight:700;text-align:center}.date-head,.total-head{background:var(--header)}.date-head,.date-cell{left:0;position:sticky;z-index:6;width:88px;border-left:1px solid var(--line)}.date-cell{background:#f8fafc;text-align:center}.date-cell span,.date-cell small{display:block}.date-cell span{margin-top:16px;font-size:17px;font-weight:700}.date-cell small{margin-top:5px;color:var(--muted);font-size:12px}.slot-head{width:305px}.slot-head.morning{background:var(--morning-head)}.slot-head.afternoon{background:var(--afternoon-head)}.slot-head.evening{background:var(--evening-head)}.lesson-cell{padding:7px}.lesson-cell.morning{background:var(--morning)}.lesson-cell.afternoon{background:var(--afternoon)}.lesson-cell.evening{background:var(--evening)}.lesson-editor{display:grid;gap:7px}.fixed-badge{display:flex;align-items:center;gap:6px;min-height:28px;border:1px solid #bfdbfe;border-radius:4px;background:#eff6ff;padding:4px 6px}.fixed-badge span{margin-right:auto;color:#1d4ed8;font-size:12px;font-weight:700}.fixed-badge button,.text-button{border:0;background:transparent;color:#2563eb;padding:2px 4px;font-size:12px;font-weight:700}.fixed-badge button:hover,.text-button:hover{text-decoration:underline}.text-button.danger,.fixed-badge button:first-of-type{color:var(--danger)}.lesson-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.mini-field{display:grid;gap:3px}.mini-field input{width:100%;height:30px;border:1px solid var(--line-strong);border-radius:3px;background:#fffffff0;padding:4px 7px;font-size:13px}.mini-field select{height:30px;padding:3px 7px;font-size:13px}.lesson-fee{display:flex;align-items:center;justify-content:space-between;min-height:30px;border:1px solid var(--line);border-radius:4px;background:#ffffffb3;padding:4px 8px}.lesson-fee span{color:var(--muted);font-size:12px;font-weight:600}.lesson-fee strong{font-size:14px}.daily-total{width:120px;background:#fff;color:#0f766e;font-size:15px;font-weight:800;text-align:right;padding:18px 10px}.bottom-total{display:flex;justify-content:flex-end;gap:10px;padding:12px 14px;border-top:1px solid var(--line);background:#fbfdff}.table-card{overflow:auto;margin:14px;border:1px solid var(--line)}.records-table{width:100%;min-width:760px;border-collapse:collapse;background:#fff}.records-table th,.records-table td{border-bottom:1px solid var(--line);border-right:1px solid var(--line);padding:9px 10px;text-align:left;white-space:nowrap}.records-table th{background:var(--header);color:#344054;font-size:13px;font-weight:700}.records-table td{font-size:14px}.records-table tr:hover td{background:#f8fbff}.empty{height:96px;color:var(--muted);text-align:center!important}.section-title{margin:18px 14px 8px;color:#243041;font-size:17px}.fixed-panel .toolbar{align-items:center}.fixed-hint{flex:1;color:var(--muted);font-size:13px;line-height:1.5}.fixed-form{display:grid;grid-template-columns:repeat(8,minmax(120px,1fr)) 150px;gap:10px;padding:14px;border-bottom:1px solid var(--line);background:#fff}.fixed-submit{align-self:end;min-height:30px}.fixed-rules-table td:last-child{width:120px}.segmented{display:inline-flex;align-self:end;border:1px solid var(--line-strong);border-radius:6px;overflow:hidden;background:#fff}.segmented button{min-width:70px;border:0;border-right:1px solid var(--line);background:#fff;color:#475467;padding:8px 12px;font-size:14px;font-weight:700}.segmented button:last-child{border-right:0}.segmented button.active{background:var(--accent);color:#fff}.student-calendar-wrap{padding:14px}.student-calendar-wrap.compact{padding:0}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(118px,1fr));gap:0;border-left:1px solid var(--line);border-top:1px solid var(--line)}.calendar-head{border-bottom:0}.calendar-head div{border-right:1px solid var(--line);background:var(--header);color:#344054;padding:8px 10px;font-size:13px;font-weight:800;text-align:center}.calendar-cell{display:grid;align-content:start;gap:7px;min-height:116px;border:0;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:#fff;padding:8px;text-align:left}.calendar-cell.blank{background:#f8fafc}.calendar-cell.has-records{background:#f7fbff}.calendar-cell.has-records.morning{background:var(--morning)}.calendar-cell.has-records.afternoon{background:var(--afternoon)}.calendar-cell.has-records.evening{background:var(--evening)}.calendar-cell.has-records.mixed{background:linear-gradient(135deg,var(--morning) 0 33%,var(--afternoon) 33% 66%,var(--evening) 66% 100%)}.calendar-cell.selected{outline:2px solid var(--accent);outline-offset:-2px}.calendar-cell:disabled{color:inherit;cursor:default;opacity:1}.calendar-date{display:inline-flex;align-items:center;justify-content:center;width:26px;height:24px;border-radius:4px;background:#eef2f7;color:#243041;font-size:13px;font-weight:800}.calendar-lessons{display:grid;gap:4px}.calendar-chip{display:grid;gap:2px;overflow:hidden;border:1px solid #bfdbfe;border-radius:4px;background:#eff6ff;color:#1d4ed8;padding:4px 5px;font-size:12px;font-weight:700}.calendar-chip.morning{border-color:#b7dfc4;background:var(--morning-head);color:#166534}.calendar-chip.afternoon{border-color:#f3cc82;background:var(--afternoon-head);color:#92400e}.calendar-chip.evening{border-color:#b8ccf5;background:var(--evening-head);color:#1d4ed8}.calendar-chip strong,.calendar-chip span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.calendar-chip span{font-size:11px;font-weight:600;opacity:.88}.no-lesson{color:#98a2b3;font-size:12px}.day-detail .table-card{margin:8px 0 0}.print-statement{display:none}.print-summary{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 16px}.print-month-block{-moz-column-break-inside:avoid;break-inside:avoid;margin-top:18px}.print-month-block h2{margin:12px 0 8px;font-size:16px}.data-actions{display:flex;flex-wrap:wrap;gap:10px;padding:14px}.storage-note{display:flex;align-items:center;gap:9px;margin:0 14px 14px;border:1px solid #bfdbfe;border-radius:6px;background:#eff6ff;color:#1e3a8a;padding:12px}.hidden-input{display:none}@media(max-width:900px){.topbar,.toolbar{align-items:stretch;flex-direction:column}.tabs,.summary-strip{justify-content:flex-start}.tab{flex:0 0 auto}.fixed-form{grid-template-columns:repeat(2,minmax(0,1fr))}.calendar-grid{grid-template-columns:repeat(7,minmax(88px,1fr))}}@media print{.topbar,.toolbar,.data-actions,.storage-note,.sync-status,.student-screen-content{display:none!important}main{padding:0}.summary-strip.accounts{display:none}.panel,.table-card{border:0;box-shadow:none}.print-statement{display:block}.print-statement h1{margin:0 0 10px;font-size:22px}.print-statement .records-table,.print-statement .table-card{min-width:0;width:100%}.print-statement .calendar-grid{grid-template-columns:repeat(7,1fr)}.print-statement .calendar-cell{min-height:88px;padding:5px}.print-statement .calendar-chip{font-size:10px}.print-statement .calendar-chip span{font-size:9px}}

.app-logo{display:block;height:48px;width:auto;margin-bottom:10px}
.login-panel .app-logo{height:64px;margin:0 auto 12px}
.topbar .app-logo{height:36px;margin-bottom:4px}
