@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-sans:"PingFang SC", "Microsoft YaHei", system-ui, sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--animate-spin:spin 1s linear infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}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;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.flex-1{flex:1}.animate-spin{animation:var(--animate-spin)}.border{border-style:var(--tw-border-style);border-width:1px}.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{font-family:var(--font-sans);color:#263548;font-synthesis:none;--primary:#165fa0;--border:#dce2e8;--muted:#657384;background:#f4f5f7;font-size:14px}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:default;opacity:.5}a{color:inherit;text-decoration:none}button,input,select,textarea{outline-offset:3px}:focus-visible{outline:2px solid #165fa0}input,select,textarea{color:#263548;background:#fff;border:1px solid #ccd5df;border-radius:4px;padding:10px 12px}input::placeholder,textarea::placeholder{color:#778596}input:focus,textarea:focus,select:focus{border-color:#165fa0}input[readonly]{color:#657384;background:#f1f3f6}h1,h2,h3,p{margin:0}h1{letter-spacing:0;font-size:25px;font-weight:650}h2{font-size:20px;font-weight:650}h3{font-weight:600}.muted{color:var(--muted)}.small{font-size:12px}.flex-1{flex:1}.btn{justify-content:center;align-items:center;gap:calc(var(--spacing) * 2);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));white-space:nowrap;background:#fff;border:1px solid #ccd5df;border-radius:4px;padding:9px 14px;font-size:13px;font-weight:500;display:inline-flex}.btn:hover{background:#eef2f6}.btn.primary{background:var(--primary);color:#fff;border-color:var(--primary)}.btn.primary:hover{background:#124d83}.btn.danger{color:#a35c4e;background:#fff}.text-btn{align-items:center;gap:var(--spacing);color:var(--primary);white-space:nowrap;background:0 0;border:0;font-size:12px;display:inline-flex}.text-btn:hover,.record-link:hover{text-decoration:underline}.icon-btn{color:#657384;background:0 0;border:0;border-radius:6px;justify-content:center;align-items:center;width:32px;height:32px;display:inline-flex}.icon-btn:hover{color:var(--primary);background:#eef2f6}.error,.notice{border-radius:5px;align-items:flex-start;gap:8px;margin-bottom:18px;padding:12px 14px;font-size:13px;line-height:1.7;display:flex}.error{color:#ad4439;background:#fff0ed;border:1px solid #f4d4ce}.notice{color:#435b73;background:#edf2f7;border:1px solid #d5e3f0}.error svg,.notice svg{flex-shrink:0;margin-top:2px}.brand{display:block}.school-logo{width:100%;height:auto;display:block}.brand-portal{color:#536478;letter-spacing:2px;margin:14px 0 0;font-size:12px;display:block}.app-shell{color:#223047;--border:#e6ebf2;--muted:#748196;background:#f6f8fb;min-height:100vh;display:flex}.app-shell .btn,.modal .btn{border-color:#dfe5ed;border-radius:8px;min-height:38px;padding:8px 14px;font-size:12px;box-shadow:0 1px 2px #22304706}.app-shell .btn.primary,.modal .btn.primary{border-color:#165fa0;box-shadow:0 2px 4px #165fa016}.app-shell .icon-btn,.modal .icon-btn{color:#7d8a9e;border-radius:8px;width:34px;height:34px}.app-shell input:not([type=checkbox]):not([type=file]),.app-shell select,.app-shell textarea{border-color:#dfe5ed;border-radius:7px;padding:10px 12px}.app-shell input:not([type=checkbox]):not([type=file]):focus,.app-shell select:focus,.app-shell textarea:focus{border-color:#77a4cd;outline:0;box-shadow:0 0 0 3px #165fa010}.modal .field>span{color:#56657c;font-size:12px;font-weight:500}.modal textarea{resize:vertical;min-height:86px;line-height:1.8}.form-grid:has(textarea[name=note]):has(textarea[name=handling_note])>.field:has(textarea),.form-grid:has(input[name=viewers]):has(input[name=editors])>.field:has(.permission-options){grid-column:auto}.form-grid:has(input[name=viewers]):has(input[name=editors])>.field:has(select[name=assigned_handler]){grid-column:1/-1}.modal .permission-options{gap:8px}.modal .permission-options .check-field{background:#fafbfd;border:1px solid #e3e9f2;border-radius:6px;min-height:34px;padding:4px 10px;font-size:12px}.modal .check-field input{margin:0}.sidebar nav svg{stroke-width:1.7px;flex-shrink:0;width:18px;height:18px}.sidebar .brand-portal{color:#56657c;letter-spacing:1px;margin-top:12px;font-size:12px}.sidebar{z-index:20;background:#fff;border-right:1px solid #e6ebf2;flex-direction:column;width:232px;height:100dvh;padding:24px 14px 18px;display:flex;position:fixed}.sidebar .brand{padding:0 8px}.school-label{color:#8a95a5;letter-spacing:1px;border-bottom:1px solid #edf0f5;margin:12px 8px 16px;padding-bottom:12px;font-size:11px}nav{scrollbar-width:thin;flex-direction:column;gap:4px;min-height:0;display:flex;overflow:auto}nav a{color:#647187;border-radius:8px;align-items:center;gap:11px;min-height:40px;padding:9px 14px;font-size:13px;transition:background-color .15s,color .15s;display:flex}nav a:hover{color:#223047;background:#f3f6fa}nav a.nav-active{color:#fff;background:#165fa0;font-weight:500}.nav-label{color:#929bac;padding:15px 14px 7px;font-size:11px}.sidebar-footer{color:#8a95a5;border-top:1px solid #edf0f5;margin-top:auto;padding:20px 8px 0}.sidebar-footer strong{color:#748196;font-size:11px;font-weight:400;display:block}.sidebar-footer span{margin-top:6px;font-size:11px;display:block}.workspace{flex:1;min-width:0;margin-left:232px}.topbar{background:#fff;border-bottom:1px solid #e6ebf2;justify-content:space-between;align-items:center;gap:20px;height:72px;padding:0 32px;display:flex}.breadcrumb{color:#8a95a5;align-items:center;gap:12px;min-width:0;font-size:12px;display:flex}.breadcrumb strong{color:#43536a;text-overflow:ellipsis;white-space:nowrap;font-weight:500;overflow:hidden}.account-area{flex-shrink:0;align-items:center;gap:20px;display:flex}.account-profile{align-items:center;gap:10px;display:flex}.account-identity strong{font-size:13px;font-weight:500;display:block}.account-identity span{color:#8a95a5;margin-top:3px;font-size:11px;display:block}.account-tools{border-left:1px solid #e6ebf2;align-items:center;gap:6px;padding-left:16px;display:flex}.avatar{color:#165fa0;background:#edf4fc;border:1px solid #dce8f5;border-radius:50%;justify-content:center;align-items:center;width:36px;height:36px;font-size:13px;display:flex}.main-content{max-width:1480px;margin:auto;padding:30px 32px 20px}.page-heading{justify-content:space-between;align-items:center;gap:20px;margin-bottom:24px;display:flex}.page-heading h1{letter-spacing:0;font-size:24px;font-weight:600;line-height:1.4}.page-heading p{color:#748196;margin-top:8px;font-size:12px;line-height:1.8}.heading-actions{gap:9px;display:flex}.today{color:#748196;background:#fff;border:1px solid #e6ebf2;border-radius:8px;align-items:center;gap:8px;padding:9px 12px;font-size:12px;display:flex}.school-banner{isolation:isolate;background:#fff;border:1px solid #e6ebf2;border-radius:12px;justify-content:space-between;align-items:center;gap:20px;padding:24px 28px;display:flex;position:relative;overflow:hidden}.school-banner>img{z-index:-2;object-fit:cover;object-position:center;width:46%;height:100%;position:absolute;top:0;right:0}.school-banner:after{content:"";z-index:-1;background:linear-gradient(90deg,#fff 52%,#ffffffd9 60%,#fff0 82%);position:absolute;inset:0}.school-banner span{color:#748196;font-size:12px}.school-banner h2{color:#214e79;letter-spacing:3px;margin:9px 0;font-family:Songti SC,SimSun,serif;font-size:26px;font-weight:600}.school-banner p{color:#748196;letter-spacing:1px;font-size:11px}.school-banner .text-btn{color:#165fa0;background:#ffffffed;border:1px solid #dce4ee;border-radius:8px;padding:9px 14px}.stats-grid{background:#fff;border:1px solid #e6ebf2;border-radius:12px;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;margin:20px 0 24px;display:grid;overflow:hidden}.stats-two{grid-template-columns:repeat(2,minmax(0,1fr))}.stat-card{border-right:1px solid #edf0f5;align-items:center;gap:14px;padding:22px 26px;transition:background-color .15s;display:flex}.stat-card:last-child{border-right:0}.stat-card:hover{background:#f6f8fb}.stat-icon{color:#2d6da5;background:#edf4fc;border-radius:12px;flex-shrink:0;order:1;justify-content:center;align-items:center;width:44px;height:44px;margin-left:auto;display:flex}.stat-label{color:#748196;font-size:12px}.stat-card strong{color:#223047;font-variant-numeric:tabular-nums;margin-top:8px;font-size:30px;font-weight:600;line-height:1.25;display:block}.stat-card strong small{color:#657384;padding-left:7px;font-size:12px;font-weight:400}.dashboard-columns{grid-template-columns:1.35fr 1fr;gap:20px;display:grid}.panel{background:#fff;border:1px solid #e6ebf2;border-radius:12px;overflow:hidden;box-shadow:0 2px 6px #22304703}.panel-heading{border-bottom:1px solid #edf0f5;justify-content:space-between;align-items:center;gap:15px;padding:22px 24px 18px;display:flex}.panel-heading h2{font-size:14px;font-weight:600}.recent-list{padding:0 24px}.recent-item{border-bottom:1px solid #edf0f5;align-items:center;gap:13px;min-height:86px;padding:18px 0;display:flex}.recent-item:last-child{border:0}.recent-icon{color:#6c809b;background:#f3f6fa;border-radius:10px;flex-shrink:0;padding:10px;display:inline-flex}.recent-item strong{color:#263548;font-size:13px;font-weight:500}.recent-item p{color:#8994a5;margin-top:6px;font-size:11px}.recent-item .badge{margin-left:auto}.badge{color:#9b741e;white-space:nowrap;background:#fff6e5;border:1px solid #0000;border-radius:6px;align-items:center;gap:6px;padding:4px 9px;font-size:11px;font-weight:500;line-height:1.5;display:inline-flex}.badge:before{content:"";background:currentColor;border-radius:50%;width:5px;height:5px}.badge.status-done,.badge.status-paid,.badge.status-approved{color:#27845d;background:#ecf8f1;border-color:#d8eddf}.badge.status-processing,.badge.status-submitted{color:#2d6da5;background:#edf4fc;border-color:#dce8f5}.badge.status-rejected{color:#b14d51;background:#fff0f1;border-color:#f1dcdd}.badge.neutral{color:#6c7890;background:#f1f4f8;border-color:#e5eaf1}.badge.neutral:before{display:none}.quick-links{grid-template-columns:1fr 1fr;gap:0 20px;padding:8px 24px;display:grid}.quick-links a{color:#4f6179;border-bottom:1px solid #edf0f5;align-items:center;gap:10px;min-height:48px;padding:12px 0;font-size:12px;display:flex}.quick-links a svg:last-child{color:#aab4c1;width:13px;margin-left:auto}.security-note{color:#7b8ca3;background:#f8fafd;border:1px solid #e9eef5;border-radius:8px;gap:11px;margin:12px 24px 22px;padding:14px;display:flex}.security-note strong{color:#5c708d;font-size:12px;font-weight:500}.security-note p{color:#8793a4;margin-top:5px;font-size:11px;line-height:1.8}.page-footer{color:#96a0b0;justify-content:space-between;gap:16px;margin-top:28px;padding:0 0 10px;font-size:11px;display:flex}.login-footer,.page-footer{flex-wrap:wrap;gap:8px 16px}.icp-link{color:inherit;white-space:nowrap}.table-toolbar{justify-content:space-between;align-items:center;gap:16px;padding:20px 24px 0;display:flex}.tab-group{background:#f4f6fa;border:1px solid #edf0f5;border-radius:9px;gap:2px;padding:4px;display:flex}.tab-group button{color:#748196;background:0 0;border:0;border-radius:6px;align-items:center;gap:7px;min-height:32px;padding:6px 12px;font-size:12px;display:inline-flex}.tab-group button.active{color:#165fa0;background:#fff;font-weight:500;box-shadow:0 1px 4px #22304712}.tab-group span{font-variant-numeric:tabular-nums;background:#e9eff7;border-radius:4px;padding:1px 5px;font-size:10px;line-height:1.5}.tab-group span:empty{display:none}.filters{border-bottom:1px solid #e6ebf2;flex-wrap:wrap;align-items:center;gap:10px;padding:18px 24px 20px;display:flex}.filters input,.filters select{height:38px;padding:9px 11px;font-size:12px}.search-box{color:#8b98aa;background:#f8fafd;border:1px solid #e2e7ef;border-radius:8px;flex:1;align-items:center;gap:9px;min-width:230px;max-width:350px;padding-left:12px;display:flex}.search-box input{background:0 0;border:0;width:100%;min-width:0}.search-box:focus-within{border-color:#77a4cd;box-shadow:0 0 0 3px #165fa010}.app-shell .search-box input:focus{box-shadow:none;outline:0}.date-range{background:#fff;border:1px solid #e2e7ef;border-radius:8px;align-items:center;padding:0 3px;display:flex}.app-shell .date-range input{background:0 0;border:0;width:139px}.date-range>span{color:#a1acbb;padding:0 4px;font-size:11px}.date-range:focus-within{border-color:#77a4cd}.table-scroll{overflow-x:auto}table{border-collapse:collapse;text-align:left;width:100%;font-size:13px}thead{color:#8893a4;background:#fafbfd}th{white-space:nowrap;border-bottom:1px solid #e9edf3;padding:14px 20px;font-size:12px;font-weight:400}td{color:#66758a;vertical-align:middle;border-bottom:1px solid #edf0f5;padding:18px 20px}tbody tr:hover{background:#f8fafd}.record-link{color:#263548;text-align:left;background:0 0;border:0;max-width:260px;padding:0;font-size:13px;font-weight:500;line-height:1.7}.records-table{min-width:660px}.records-table th:first-child,.records-table td:first-child{padding-left:24px}.records-table th:last-child,.records-table td:last-child{text-align:right;padding-right:24px}.records-table .numeric{text-align:right;font-variant-numeric:tabular-nums;color:#344760}.records-table .date-cell{white-space:nowrap;font-variant-numeric:tabular-nums;font-size:12px}.records-table tbody tr:last-child td{border-bottom:0}.records-table td:last-child .text-btn{border-radius:6px;padding:5px 10px}.records-table td:last-child .text-btn:hover{background:#eaf2fb;text-decoration:none}.attachment-count{color:#8a98ac;font-variant-numeric:tabular-nums;align-items:center;gap:6px;font-size:12px;display:inline-flex}.pagination{color:#8a95a5;border-top:1px solid #edf0f5;justify-content:space-between;align-items:center;gap:12px;padding:16px 24px;font-size:12px;display:flex}.pagination>div{color:#647187;font-variant-numeric:tabular-nums;align-items:center;gap:12px;display:flex}.empty{color:#a9b8cc;flex-direction:column;align-items:center;gap:12px;padding:64px 24px;display:flex}.empty strong{color:#536478;font-size:14px;font-weight:500}.empty p{color:#8a95a5;text-align:center;font-size:12px;line-height:1.8}.loading{color:#536478;align-items:center;gap:9px;font-size:13px;display:inline-flex}.table-loading{text-align:center;padding:65px}.panel>.error{margin:5px 22px 18px}.boot{justify-content:center;align-items:center;min-height:100vh;display:flex}.modal{color:#263548;background:#fff;border:1px solid #e6ebf2;border-radius:14px;width:min(720px,100vw - 32px);max-height:min(840px,100dvh - 64px);margin:auto;padding:0;box-shadow:0 24px 80px #1b2c4540}.modal-wide{width:min(830px,100vw - 28px)}.modal::backdrop{background:#15253b66}.modal-header{z-index:2;background:#fff;border-bottom:1px solid #e6ebf2;justify-content:space-between;align-items:flex-start;gap:16px;padding:24px 28px 20px;display:flex;position:sticky;top:0}.modal-header h2{font-size:18px;font-weight:600;line-height:1.5}.modal-header p{color:#8a95a5;margin-top:6px;font-size:12px;line-height:1.8}.modal-body{padding:26px 28px}.modal-footer{z-index:1;background:#fff;border-top:1px solid #e6ebf2;justify-content:flex-end;align-items:center;gap:10px;padding:18px 28px;display:flex;position:sticky;bottom:0}.form-grid{grid-template-columns:1fr 1fr;gap:22px 20px;display:grid}.field{flex-direction:column;gap:8px;font-size:12px;display:flex}.field>span{color:#43536a;font-weight:500}.field input,.field select,.field textarea{width:100%;font-size:13px}.field small{color:#8a95a5;font-size:11px;line-height:1.8}.required{color:#b07665}.span-full{grid-column:1/-1}.check-field{align-items:center;gap:8px;min-height:40px;display:flex}.check-field input{width:16px;height:16px;accent-color:var(--primary)}.upload-zone{color:#6b8db7;cursor:pointer;background:#f8fafd;border:1px dashed #bfd1e5;border-radius:10px;align-items:center;gap:14px;padding:20px;display:flex;position:relative}.upload-zone input{opacity:0;cursor:pointer;width:100%;position:absolute;inset:0}.upload-zone:focus-within{outline:2px solid #165fa0}.upload-zone strong{color:#435c7b;font-size:13px;font-weight:500;display:block}.upload-zone span{flex:1;min-width:0}.upload-zone small{color:#8797ad;margin-top:6px;font-size:11px;line-height:1.7;display:block}.upload-zone>svg{flex-shrink:0}.upload-zone:hover{background:#f1f7fd;border-color:#7ba7d1}.upload-field>p{margin-top:10px}.file-list{margin:12px 0 0;padding:0;list-style:none}.file-list li{color:#435b73;align-items:center;gap:8px;padding:8px 0;font-size:12px;display:flex}.file-list li span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.file-list li small{flex-shrink:0;margin-left:auto}.details-grid{grid-template-columns:1fr 1fr;gap:0 28px;margin:0;display:grid}.details-grid>div{border-bottom:1px solid #edf0f5;padding:15px 0}.details-grid>.span-full{background:#f8fafd;border:1px solid #edf0f5;border-radius:8px;margin-top:18px;padding:16px 18px}.details-grid dt{color:#8a95a5;font-size:12px}.details-grid dd{color:#344760;font-size:13px;line-height:1.9}dt{color:#657384;margin-bottom:8px;font-size:12px}dd{color:#43536a;white-space:pre-wrap;overflow-wrap:anywhere;margin:0;font-size:13px;line-height:1.8}.attachment-section{margin-top:24px;padding-top:22px}.attachment-section h3{margin-bottom:16px;font-size:14px;font-weight:500}.count{color:#657384;margin-left:7px;font-size:12px}.attachments{grid-template-columns:repeat(3,minmax(0,1fr));gap:13px;display:grid}.attachment{border:1px solid var(--border);border-radius:8px;overflow:hidden}.attachment img{object-fit:contain;background:#f3f5f8;width:100%;height:140px}.file-placeholder{color:#657384;background:#f3f5f8;flex-direction:column;justify-content:center;align-items:center;gap:10px;height:140px;font-size:12px;display:flex}.attachment-caption{color:#657384;align-items:center;gap:8px;padding:8px 10px;font-size:12px;display:flex}.attachment-caption span{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.audit-json{white-space:pre-wrap;overflow-wrap:anywhere;background:#f3f5f8;border-radius:8px;padding:17px;font-size:12px}.toast{color:#fff;z-index:40;background:#165fa0;border-radius:9px;align-items:center;gap:10px;padding:13px 20px;font-size:12px;display:flex;position:fixed;bottom:28px;left:50%;transform:translate(-50%);box-shadow:0 8px 35px #20364d30}.timetable-toolbar{justify-content:space-between;align-items:center;gap:16px;padding:20px 24px;display:flex}.timetable-toolbar>span{white-space:nowrap;flex-shrink:0}.timetable-toolbar>div{align-items:center;gap:14px;min-width:0;display:flex}.timetable-toolbar select{max-width:300px;font-size:12px}.timetable{table-layout:fixed;text-align:center;min-width:900px}.timetable caption{caption-side:top;color:#536b87;text-align:center;border-top:1px solid #edf0f5;padding:20px;font-size:13px;font-weight:500}.timetable th{color:#748196;padding:14px 8px}.timetable td{border:1px solid #edf0f5;height:100px;padding:8px}.timetable th:first-child{color:#657384;width:80px;font-size:12px}.lesson-card{text-align:left;color:#436787;background:#f3f7fc;border:1px solid #dce8f5;border-left:3px solid #75a4d1;border-radius:7px;flex-direction:column;align-items:flex-start;gap:7px;width:100%;min-height:80px;padding:10px 9px;font-size:12px;line-height:1.6;display:flex}.lesson-card:disabled{opacity:1;cursor:default}.lesson-card strong{font-size:13px;font-weight:600}.lesson-card span{font-size:11px}.lesson-card small{color:#8395aa;font-size:10px}.subject-1{color:#62739c;background:#f4f5fc;border-color:#e3e5f5 #e3e5f5 #e3e5f5 #9ea9d1}.subject-2{color:#8a7854;background:#fcf8f0;border-color:#f0e6d2 #f0e6d2 #f0e6d2 #c5b18a}.slot-empty{color:#d8e1d9}.mobile-menu{display:none}.login-page{border-top:3px solid var(--primary);background:#fff;min-height:100vh}.login-header{background:#fff;justify-content:space-between;align-items:center;gap:24px;padding:22px max(40px,50vw - 640px);display:flex}.login-header .brand{align-items:center;gap:26px;display:flex}.login-header .school-logo{width:320px}.login-header .brand-portal{letter-spacing:3px;white-space:nowrap;border-left:1px solid #ccd5df;margin:0;padding-left:26px;font-size:15px}.school-website{color:#536478;white-space:nowrap;align-items:center;gap:12px;font-size:13px;display:inline-flex}.school-website:hover{color:var(--primary)}.login-hero{isolation:isolate;background:#c9d6df;position:relative}.login-campus{z-index:-2;object-fit:cover;object-position:center;width:100%;height:100%;position:absolute;inset:0}.login-hero:after{content:"";z-index:-1;background:linear-gradient(#0000 35%,#071e398c);position:absolute;inset:0}.login-hero-inner{justify-content:space-between;align-items:flex-end;gap:48px;max-width:1360px;min-height:560px;margin:auto;padding:40px;display:flex}.login-story{color:#fff;text-shadow:0 2px 14px #0a254d50;padding-bottom:16px}.login-story p{letter-spacing:3px;font-size:15px}.login-story h1{letter-spacing:5px;margin:14px 0;font-family:Songti SC,SimSun,serif;font-size:42px;font-weight:600;line-height:1.5}.login-story>span{letter-spacing:3px;font-size:14px}.login-form{background:#fffffff7;border-radius:3px;flex-shrink:0;width:380px;padding:32px 34px;box-shadow:0 12px 50px #12375620}.login-section-label{color:var(--primary);letter-spacing:2px;font-size:12px;display:block}.login-card h2{margin:13px 0 10px;font-size:26px;font-weight:600}.login-card>.muted{margin-bottom:10px;font-size:12px;line-height:1.8}.login-feedback{height:44px;overflow:auto}.login-feedback .error{background:0 0;border:0;margin:0;padding:0;font-size:12px;line-height:1.7}.login-card form{flex-direction:column;gap:20px;display:flex}.login-card .field>span{font-size:13px}.login-card input{border-radius:3px;padding:12px 14px}.login-submit{border-radius:3px;width:100%;margin-top:5px;padding:12px}.login-help{color:#657384;align-items:flex-start;gap:7px;margin-top:22px;font-size:11px;line-height:1.8;display:flex}.login-help svg{flex-shrink:0;margin-top:3px}.school-intro{justify-content:space-between;align-items:center;gap:64px;max-width:1360px;margin:auto;padding:30px 40px;display:flex}.school-intro-copy{max-width:630px}.school-intro h2{letter-spacing:1px;font-family:Songti SC,SimSun,serif;font-size:19px}.school-intro p{color:#657384;margin-top:10px;font-size:12px;line-height:1.9}.school-intro .school-programs{color:#536478;font-size:11px}.school-facts{flex-shrink:0;gap:40px;margin:0;display:flex}.school-facts dt{color:#657384;font-size:12px}.school-facts dd{color:#263548;font-variant-numeric:tabular-nums;white-space:nowrap;font-size:29px;font-weight:400}.school-facts small{color:#657384;font-size:12px}.login-footer{border-top:1px solid var(--border);color:#657384;justify-content:space-between;align-items:center;max-width:1360px;margin:auto;padding:20px 40px;font-size:11px;display:flex}@media(min-width:1700px){.main-content{padding-top:45px}}@media(max-width:1150px){.main-content{padding:26px 22px 18px}.topbar{padding:0 22px}.stats-grid{gap:0}.stat-card{gap:10px;padding:16px}.stat-icon{width:36px;height:36px}.dashboard-columns{gap:17px}.filters{gap:8px}.search-box{min-width:210px}.login-form{width:350px;padding:28px}.login-story h1{letter-spacing:2px;font-size:34px}.school-intro{gap:30px}}@media(max-width:800px){.sidebar{transition:transform .2s;transform:translate(-100%)}.sidebar-open{transform:translate(0)}.sidebar-backdrop{z-index:19;background:#10253d50;border:0;position:fixed;inset:0}.workspace{margin-left:0}.mobile-menu{display:inline-flex}.topbar{height:64px;padding:0 15px}.main-content{padding:24px 16px 15px}.account-identity{display:none}.account-tools{border:0;gap:2px;padding-left:0}.account-area{gap:8px}.page-heading{align-items:flex-start;gap:15px}.page-heading h1{font-size:23px}.page-heading p{line-height:1.8}.today{display:none}.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr));margin:17px 0 21px}.dashboard-columns{grid-template-columns:1fr}.page-footer span{display:none}.filters{padding:15px}.filters input[type=date]{max-width:none}.filters .search-box{flex-basis:100%;width:100%;min-width:0;max-width:none}.date-range{flex:1}.app-shell .date-range input{width:100%;min-width:0}.search-box input{width:100%}.table-toolbar{gap:8px;padding:16px 15px 0}.tab-group button{padding-inline:9px}.app-shell .export-btn{min-height:34px;padding:7px 9px;font-size:11px}.pagination{padding:14px 15px;font-size:11px}.timetable-toolbar{align-items:flex-start;padding:15px}.timetable-toolbar>div{flex-wrap:wrap;gap:8px}.timetable-toolbar select{max-width:100%}.timetable caption{text-align:left}.heading-actions{flex-wrap:wrap;justify-content:flex-end}.btn{padding:8px 11px;font-size:12px}.heading-actions .btn{min-height:35px}.form-grid{grid-template-columns:1fr;gap:18px}.details-grid{grid-template-columns:1fr;gap:0}.modal{max-height:calc(100dvh - 32px)}.modal-header,.modal-body{padding:20px}.modal-footer{padding:15px 20px}.attachments{grid-template-columns:repeat(2,minmax(0,1fr))}.login-header{gap:10px;padding:20px 24px}.login-header .brand{display:block}.login-header .school-logo{width:min(245px,60vw)}.login-header .brand-portal{letter-spacing:2px;border:0;margin-top:12px;padding:0;font-size:12px}.school-website{gap:5px;font-size:12px}.login-hero{background:#f4f6f8}.login-campus{object-position:45% center;z-index:0;height:210px;position:absolute}.login-hero:after{display:none}.login-hero-inner{flex-direction:column;align-items:stretch;gap:0;min-height:0;padding:0;display:flex}.login-story{background:linear-gradient(#0000,#071e3970);height:210px;padding:128px 24px 22px;position:relative}.login-story p{display:none}.login-story h1{letter-spacing:2px;margin:0 0 6px;font-size:25px}.login-story>span{letter-spacing:1px;font-size:11px}.login-form{width:auto;box-shadow:none;border-radius:0;padding:30px 28px}.login-card{max-width:420px;margin:auto}.school-intro{padding:26px 28px;display:block}.school-intro h2{font-size:18px}.school-facts{gap:36px;margin-top:22px}.login-footer{padding:18px 28px;font-size:11px}.login-footer span{display:none}.school-banner{flex-wrap:wrap;gap:16px;padding:22px}.school-banner>img{opacity:.55;width:60%}.school-banner:after{background:linear-gradient(90deg,#fff 25%,#ffffffe6 55%,#ffffff60)}.school-banner h2{letter-spacing:2px;font-size:24px}.stats-grid{gap:0}.stat-card{border-bottom:1px solid var(--border);padding:18px}.stat-card:nth-child(2n){border-right:0}.stat-card:nth-last-child(-n+2){border-bottom:0}.breadcrumb{gap:6px;font-size:11px}}@media print{.sidebar,.topbar,.page-footer,.heading-actions,.notice,.timetable-toolbar,.toast{display:none!important}.workspace{margin:0}.main-content{padding:0}body{background:#fff}.page-heading h1{font-size:20px}.page-heading p{display:none}.panel{border:0;overflow:visible}.table-scroll{overflow:visible}.timetable{min-width:0;font-size:9px}@page{size:A4 landscape;margin:10mm}.timetable caption{padding:6px 10px}.timetable th{padding:4px}.timetable td{height:36px;padding:2px}.timetable tr{break-inside:avoid}.lesson-card{break-inside:avoid;-webkit-print-color-adjust:exact;print-color-adjust:exact;gap:2px;min-height:0;padding:4px;line-height:1.25}.lesson-card strong{font-size:10px}.timetable th:first-child{width:50px}}.permission-options{flex-wrap:wrap;gap:10px 20px;display:flex}.permission-options .check-field{font-weight:400}.timetable td .lesson-card+.lesson-card{margin-top:6px}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}
