html,body{width:100%;height:100%}input::-ms-clear,input::-ms-reveal{display:none}*,*:before,*:after{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:rgba(0,0,0,0)}@-ms-viewport{width:device-width}body{margin:0}[tabindex="-1"]:focus{outline:none}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5em;font-weight:500}p{margin-top:0;margin-bottom:1em}abbr[title],abbr[data-original-title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;border-bottom:0;cursor:help}address{margin-bottom:1em;font-style:normal;line-height:inherit}input[type=text],input[type=password],input[type=number],textarea{-webkit-appearance:none}ol,ul,dl{margin-top:0;margin-bottom:1em}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:500}dd{margin-bottom:.5em;margin-left:0}blockquote{margin:0 0 1em}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}pre,code,kbd,samp{font-size:1em;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace}pre{margin-top:0;margin-bottom:1em;overflow:auto}figure{margin:0 0 1em}img{vertical-align:middle;border-style:none}a,area,button,[role=button],input:not([type=range]),label,select,summary,textarea{touch-action:manipulation}table{border-collapse:collapse}caption{padding-top:.75em;padding-bottom:.3em;text-align:left;caption-side:bottom}input,button,select,optgroup,textarea{margin:0;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}button,html [type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{padding:0;border-style:none}input[type=radio],input[type=checkbox]{box-sizing:border-box;padding:0}input[type=date],input[type=time],input[type=datetime-local],input[type=month]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;margin:0;padding:0;border:0}legend{display:block;width:100%;max-width:100%;margin-bottom:.5em;padding:0;color:inherit;font-size:1.5em;line-height:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item}template{display:none}[hidden]{display:none!important}mark{padding:.2em;background-color:#feffe6}:root{font-family:Inter,PingFang SC,Microsoft YaHei,-apple-system,BlinkMacSystemFont,Segoe UI,Tahoma,sans-serif;color:#0f172a;background:#f8fafc;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;background:#f8fafc}#root{min-width:0}.page{margin:0;padding:0;min-height:100vh}.card{background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:14px;margin-bottom:12px;box-shadow:0 1px 2px #0f172a0a;max-width:100%}.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.header-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px}.full{grid-column:1 / -1}input,select,button{font:inherit;padding:8px 10px}button{cursor:pointer}table{width:100%;border-collapse:collapse;font-size:14px}th,td{text-align:left;padding:10px 8px;border-bottom:1px solid #e2e8f0}.welcome{margin-right:12px}.ant-tabs-nav{padding:0}h1,h2,h3,h4,h5{font-family:inherit;letter-spacing:0}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:10px;border:2px solid #f8fafc}::-webkit-scrollbar-thumb:hover{background:#94a3b8}.error{color:#b11111}.warning{color:#9a3412;background:#fff7ed;border:1px solid #fed7aa;border-radius:8px;padding:8px 10px}.info-bar{margin-top:10px;padding:10px;border:1px solid #c8d9ee;border-radius:8px;background:#edf4ff}.tab-active{background:#0f4c81;color:#fff;border-color:#0f4c81}.link-button{border:0;background:transparent;color:#0f4c81;text-decoration:underline;padding:0 0 0 8px}.card p{margin-top:0}.nested-card{margin-top:12px;padding:12px;border:1px solid #d9e1ea;border-radius:8px;background:#f9fbfd}.csv-input{width:100%;min-height:140px;margin:8px 0;padding:10px;font:inherit}.checkbox-row{gap:6px}@keyframes attendance-alert-pulse{0%,to{background-color:#ff4d4f;box-shadow:0 0 #ff4d4f80}50%{background-color:#cf1322;box-shadow:0 0 0 6px #ff4d4f00}}.attendance-alert-blink{animation:attendance-alert-pulse 1.2s ease-in-out infinite;color:#fff!important;border-color:transparent!important;font-weight:600}.app-shell{background:#f3f6fa;min-height:100vh;max-width:100vw;overflow-x:hidden}.app-login-page{display:flex;justify-content:center;align-items:center;min-height:100vh;padding:16px;background:#f3f6fa}.app-login-card{width:min(400px,100%);padding:32px}.app-page-pad{padding:24px}.app-contained-page{width:min(1080px,100%);margin:0 auto;padding:24px}.app-staging-banner{background:#cf1322;color:#fff;text-align:center;padding:6px 16px;font-size:13px;font-weight:600;letter-spacing:0}.app-topbar{background:#fff;border-bottom:1px solid #d9e1ea;padding:16px 24px;display:flex;justify-content:space-between;align-items:center;gap:16px}.app-topbar__identity{min-width:0}.app-topbar__identity h1,.app-topbar__identity p{overflow-wrap:anywhere}.app-topbar__actions{display:flex;gap:12px;align-items:center;justify-content:flex-end;flex-wrap:wrap;min-width:0}.app-tab-bar,.app-subtab-bar{background:#fff;border-bottom:1px solid #d9e1ea;max-width:100%}.app-tabs{padding:0 24px;max-width:100%}.app-tabs>.ant-tabs-nav{margin:0}.app-tabs .ant-tabs-nav-wrap{overflow-x:auto;overflow-y:hidden;scrollbar-width:thin}.app-tabs .ant-tabs-nav-list{min-width:max-content}.app-subtab-bar{padding:0 24px;border-bottom-color:#eee;overflow-x:auto;overflow-y:hidden}.app-subtab-list{display:flex;gap:0;min-width:max-content}.app-subtab{flex:0 0 auto;white-space:nowrap}.app-settings-shell{min-width:0}.teacher-portal-shell{display:grid;gap:16px}.teacher-portal-shell__alert{padding:24px 24px 0}.ant-table-wrapper,.ant-card,.ant-alert,.ant-tabs,.ant-form,.ant-descriptions{max-width:100%}.ant-table-wrapper,.ant-descriptions-view{overflow-x:auto}@media (max-width: 768px){body{overflow-x:hidden}.app-login-card{padding:20px}.app-page-pad,.app-contained-page{padding:12px}.app-topbar{padding:12px;flex-direction:column;align-items:stretch}.app-topbar__identity h1{font-size:20px!important}.app-topbar__actions{justify-content:flex-start;gap:8px}.app-topbar__actions>button{flex:1 1 132px;min-width:0}.app-topbar__actions .ant-segmented{flex:0 1 auto;min-width:0}.app-tabs{padding:0 12px}.app-tabs .ant-tabs-tab{padding:10px 0}.app-subtab-bar{padding:0 12px}.teacher-portal-shell__alert{padding:12px 12px 0}.card,.nested-card{padding:12px}.page [style*="padding: 24px"]{padding:12px!important}.page [style*="padding: 0px 24px"],.page [style*="padding: 0 24px"],.page [style*="padding: 24px 24px"]{padding-left:12px!important;padding-right:12px!important}.ant-modal{max-width:calc(100vw - 24px)!important;margin:8px auto}.ant-modal-content{padding:16px!important}.ant-modal-body{max-height:calc(100dvh - 160px);overflow:auto}.ant-drawer-content-wrapper{width:100vw!important;max-width:100vw!important}.ant-space:not(.ant-space-vertical){flex-wrap:wrap;row-gap:8px;max-width:100%}.ant-space-item,.ant-picker,.ant-input-number,.ant-select,.ant-input,textarea,input,select,button{max-width:100%}.ant-form-item{margin-bottom:12px}.ant-pagination{justify-content:flex-start}.ant-card .ant-card-body{padding:12px}}@media (max-width: 480px){.app-login-page{align-items:flex-start;padding-top:32px}.app-topbar__actions>button{flex-basis:100%}.app-tabs .ant-tabs-tab-btn,.app-subtab{font-size:13px}}
