._shell_a5236_1{min-height:100vh;background:#1a1a1a;display:flex;align-items:center;justify-content:center;padding:24px}._card_a5236_10{background:#2c2c2a;border:.5px solid rgba(255,255,255,.12);border-radius:var(--r-lg);padding:40px 44px 36px;width:100%;max-width:390px;display:flex;flex-direction:column;align-items:center}._logoWrap_a5236_22{text-align:center;margin-bottom:4px}._logoMark_a5236_24{display:flex;align-items:baseline;justify-content:center;line-height:1}._ly_a5236_31{color:#e8401a;font-size:28px;font-weight:500;font-family:var(--font)}._lou_a5236_32{color:#f5b800;font-size:28px;font-weight:500;font-family:var(--font)}._lt_a5236_33{color:#fff;font-size:28px;font-weight:500;font-family:var(--font)}._logoSub_a5236_35{font-size:10px;color:#fff6;letter-spacing:.12em;text-transform:uppercase;margin-top:4px;font-family:var(--font)}._heading_a5236_44{font-size:19px;font-weight:500;color:#fff;text-align:center;margin-top:24px;letter-spacing:-.01em;font-family:var(--font)}._sub_a5236_54{font-size:var(--fs-body);color:#ffffff80;text-align:center;margin-top:5px;line-height:1.5;font-family:var(--font)}._roleSection_a5236_63{width:100%;margin-top:22px}._roleLabel_a5236_65{font-size:var(--fs-label);color:#ffffff80;margin-bottom:9px;font-family:var(--font)}._roleRow_a5236_72{display:flex;gap:10px}._roleCard_a5236_74{flex:1;border:1.5px solid rgba(255,255,255,.12);border-radius:var(--r-md);padding:16px 10px 14px;text-align:center;cursor:pointer;transition:border-color .15s;background:transparent;display:flex;flex-direction:column;align-items:center}._roleCard_a5236_74:hover{border-color:#e8401a99}._roleCard_a5236_74._roleSel_a5236_88{border-color:#e8401a;background:#e8401a1a}._roleCard_a5236_74 i{font-size:22px;color:#e8401a;display:block;margin-bottom:7px}._roleName_a5236_91{font-size:var(--fs-body);font-weight:500;color:#fff;font-family:var(--font)}._roleSub_a5236_98{font-size:var(--fs-xs);color:#ffffff73;margin-top:2px;font-family:var(--font)}._divider_a5236_105{display:flex;align-items:center;gap:10px;width:100%;margin-top:22px}._divider_a5236_105:before,._divider_a5236_105:after{content:"";flex:1;height:.5px;background:#ffffff1f}._divider_a5236_105 span{font-size:var(--fs-xs);color:#fff6;font-family:var(--font)}._authBtn_a5236_116{width:100%;padding:10px 15px;border:.5px solid rgba(255,255,255,.15);border-radius:var(--r-sm);background:#ffffff0f;cursor:pointer;display:flex;align-items:center;gap:11px;font-size:var(--fs-body);color:#fff;font-family:var(--font);transition:background .12s;margin-top:9px}._authBtn_a5236_116:hover{background:#ffffff1a}._authBtn_a5236_116 i{font-size:18px}._footer_a5236_135{font-size:var(--fs-xs);color:#ffffff59;text-align:center;margin-top:20px;line-height:1.5;font-family:var(--font)}._footer_a5236_135 a{color:#f47b20;text-decoration:none}._footer_a5236_135 a:hover{text-decoration:underline}._shell_1tdw6_1{display:flex;height:100vh;overflow:hidden;background:var(--bg-primary)}._sidebar_1tdw6_8{width:210px;flex-shrink:0;background:#2c2c2a;display:flex;flex-direction:column;padding-bottom:var(--sp-md);overflow-y:auto}._sidebarLogo_1tdw6_18{padding:var(--sp-md) var(--sp-md) var(--sp-sm);border-bottom:.5px solid rgba(255,255,255,.08);margin-bottom:4px;flex-shrink:0}._logoMark_1tdw6_25{display:flex;align-items:baseline}._ly_1tdw6_26{color:#e8401a;font-size:17px;font-weight:500;font-family:var(--font)}._lou_1tdw6_27{color:#f5b800;font-size:17px;font-weight:500;font-family:var(--font)}._lt_1tdw6_28{color:#fff;font-size:17px;font-weight:500;font-family:var(--font)}._logoSub_1tdw6_30{font-size:10px;color:#ffffff59;letter-spacing:.1em;text-transform:uppercase;margin-top:3px;font-family:var(--font)}._nav_1tdw6_39{flex:1;padding:0 8px}._navSection_1tdw6_41{font-size:10px;color:#ffffff47;letter-spacing:.1em;text-transform:uppercase;padding:var(--sp-md) var(--sp-sm) 3px;font-family:var(--font)}._navItem_1tdw6_50{display:flex;align-items:center;gap:9px;width:100%;padding:9px var(--sp-sm);color:#ffffff8c;font-size:var(--fs-body);font-family:var(--font);cursor:pointer;border-radius:var(--r-sm);border:none;background:transparent;text-align:left;margin:2px 0;transition:background .12s,color .12s}._navItem_1tdw6_50:hover{background:#ffffff12;color:#ffffffe6}._navItem_1tdw6_50 i{font-size:16px}._navActive_1tdw6_70{background:#e8401a38!important;color:#fff!important}._navActive_1tdw6_70 i{color:#f47b20}._navBadge_1tdw6_73{margin-left:auto;background:#e8401a;color:#fff;font-size:10px;padding:1px 6px;border-radius:20px;font-weight:500}._navBottom_1tdw6_83{margin-top:auto;border-top:.5px solid rgba(255,255,255,.08);padding:var(--sp-sm) 8px 0;flex-shrink:0}._main_1tdw6_90{flex:1;display:flex;flex-direction:column;overflow:hidden;background:#f5f0ee;min-width:0}._topbar_1tdw6_99{background:var(--bg-primary);border-bottom:.5px solid var(--border-light);padding:0 var(--sp-lg);height:54px;display:flex;align-items:center;justify-content:space-between;flex-shrink:0}._pageTitle_1tdw6_110{font-size:15px;font-weight:500;color:var(--text-primary);letter-spacing:-.01em;font-family:var(--font)}._topbarRight_1tdw6_118{display:flex;align-items:center;gap:var(--sp-sm)}._roleBadge_1tdw6_120{font-size:var(--fs-xs);padding:3px 10px;border-radius:20px;font-weight:500;white-space:nowrap;font-family:var(--font)}._roleTeacher_1tdw6_128{background:#e8401a1f;color:#c93515}._roleStudent_1tdw6_129{background:#f5b8002e;color:#633806}._avatar_1tdw6_131{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-size:11px;font-weight:500;flex-shrink:0;font-family:var(--font)}._content_1tdw6_145{flex:1;overflow-y:auto;padding:var(--sp-lg);display:flex;flex-direction:column;gap:var(--sp-md)}@media (max-width: 768px){._sidebar_1tdw6_8{display:none}._shell_1tdw6_1{flex-direction:column}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--red: #E8401A;--orange: #F47B20;--yellow: #F5B800;--dark: #2C2C2A;--font: "DM Sans", sans-serif;--fs-xs: 11px;--fs-sm: 12px;--fs-body: 13px;--fs-label: 12px;--r-sm: 8px;--r-md: 12px;--r-lg: 16px;--sp-xs: 6px;--sp-sm: 12px;--sp-md: 18px;--sp-lg: 28px;--bg-primary: #ffffff;--bg-secondary: #f5f5f4;--bg-tertiary: #F5F0EE;--text-primary: #1a1a1a;--text-secondary: #6b7280;--border-light: rgba(0,0,0,.08);--border-mid: rgba(0,0,0,.15)}body{font-family:var(--font);background:var(--bg-tertiary);color:var(--text-primary);min-height:100vh}#root{min-height:100vh;display:flex;flex-direction:column}select,input[type=text],input[type=date],textarea{width:100%;font-family:var(--font);font-size:var(--fs-body);font-weight:400;color:var(--text-primary);background:var(--bg-primary);border:.5px solid var(--border-mid);border-radius:var(--r-sm);padding:8px 10px;line-height:1.4;-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none}select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:30px;cursor:pointer}select:focus,input[type=text]:focus,input[type=date]:focus,textarea:focus{border-color:var(--red);box-shadow:0 0 0 2px #e8401a14}textarea{resize:vertical;min-height:68px}.sel-sm{font-family:var(--font);font-size:var(--fs-sm);font-weight:400;color:var(--text-primary);background:var(--bg-primary);border:.5px solid var(--border-mid);border-radius:var(--r-sm);padding:5px 26px 5px 9px;line-height:1.4;-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 7px center;white-space:nowrap;max-width:160px;overflow:hidden;text-overflow:ellipsis;width:auto}.btn{font-size:var(--fs-sm);padding:7px 14px;border-radius:var(--r-sm);border:.5px solid var(--border-mid);background:transparent;cursor:pointer;color:var(--text-primary);display:inline-flex;align-items:center;gap:6px;font-family:var(--font);font-weight:400;white-space:nowrap;flex-shrink:0;transition:background .12s}.btn:hover{background:var(--bg-secondary)}.btn-p{background:var(--red);color:#fff;border-color:var(--red)}.btn-p:hover{background:#c93515}.btn-warn{background:#e8401a14;color:#c93515;border-color:#e8401a40}.card{background:var(--bg-primary);border:.5px solid var(--border-light);border-radius:var(--r-md);padding:var(--sp-md) var(--sp-lg)}.card-hdr{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--sp-md);flex-wrap:nowrap;gap:8px}.card-title{font-size:14px;font-weight:500;color:var(--text-primary);letter-spacing:-.01em;font-family:var(--font);white-space:nowrap}.stat-card{background:var(--bg-secondary);border-radius:var(--r-sm);padding:var(--sp-md)}.stat-label{font-size:var(--fs-xs);color:var(--text-secondary);margin-bottom:6px;font-family:var(--font)}.stat-val{font-size:22px;font-weight:500;color:var(--text-primary);line-height:1;font-family:var(--font)}.stat-sub{font-size:var(--fs-xs);color:var(--text-secondary);margin-top:5px;font-family:var(--font)}.row{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:.5px solid var(--border-light);font-size:var(--fs-body);font-family:var(--font);color:var(--text-primary)}.row:last-child{border-bottom:none}.dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.pill{font-size:var(--fs-xs);padding:3px 9px;border-radius:20px;font-weight:500;white-space:nowrap;flex-shrink:0;font-family:var(--font)}.pill-ok{background:#3b6d1126;color:#27500a}.pill-warn{background:#ba751726;color:#633806}.pill-no{background:#a32d2d21;color:#791f1f}.pill-info{background:#185fa51f;color:#0c447c}.form-label{font-family:var(--font);font-size:var(--fs-label);font-weight:400;color:var(--text-secondary);margin-bottom:5px;display:block;line-height:1.4}.form-grp{margin-bottom:var(--sp-sm)}.alert-banner{background:#e8401a12;border:.5px solid rgba(232,64,26,.25);border-radius:var(--r-sm);padding:10px var(--sp-md);display:flex;align-items:center;gap:10px;font-size:var(--fs-body);color:#712b13;font-family:var(--font)}.pkg-bg{background:var(--bg-secondary);border-radius:4px;height:6px;margin-top:7px}.pkg-fill{height:6px;border-radius:4px}.att-table{width:100%;font-size:var(--fs-body);border-collapse:collapse;table-layout:fixed;font-family:var(--font)}.att-table th{text-align:left;color:var(--text-secondary);font-weight:500;padding:0 8px 10px;border-bottom:.5px solid var(--border-light);font-size:var(--fs-sm)}.att-table td{padding:9px 8px;border-bottom:.5px solid var(--border-light);color:var(--text-primary);font-size:var(--fs-body)}.att-table tr:last-child td{border-bottom:none}.upload-zone{border:1.5px dashed var(--border-mid);border-radius:var(--r-sm);padding:var(--sp-lg);text-align:center;color:var(--text-secondary);font-size:var(--fs-body);cursor:pointer;font-family:var(--font)}.upload-zone i{font-size:26px;color:var(--red);display:block;margin-bottom:7px}.notif-item{display:flex;gap:14px;padding:13px 0;border-bottom:.5px solid var(--border-light);align-items:flex-start}.notif-item:last-child{border-bottom:none}.notif-icon{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:14px}.notif-name{font-size:var(--fs-body);font-weight:500;color:var(--text-primary);font-family:var(--font)}.notif-text{font-size:var(--fs-sm);color:var(--text-secondary);margin-top:3px;line-height:1.5;font-family:var(--font)}.notif-time{font-size:var(--fs-xs);color:var(--text-secondary);white-space:nowrap;font-family:var(--font)}.stu-avatar{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:10.5px;font-weight:500;flex-shrink:0;font-family:var(--font)}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-md)}.three-col{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-sm)}.four-col{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--sp-sm)}@media (max-width: 768px){.two-col,.three-col,.four-col{grid-template-columns:1fr}.app-sidebar{display:none}.app-shell{flex-direction:column}}
