:root{--color-primary:#2f60b3;--color-primary-hover:#285298;--color-primary-dark:#1b2452;--color-bg-app:#f4f5f7;--color-bg-sidebar:#f4f5f7;--color-white:#fff;--color-border:#e2e4e9;--color-text:#1f2430;--color-text-muted:#6b7280;--color-text-faint:#9aa1af;--color-green:#22b14c;--color-yellow:#f5c518;--color-red:#ef4444;--color-cell-empty:#c3cbe6;--color-badge:#ef4444;--radius-lg:16px;--radius-md:12px;--radius-sm:8px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:var(--color-text);background:var(--color-bg-app);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font:15px/1.45 system-ui,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}body{margin:0}#root{min-height:100vh}button,input,select{font:inherit;color:inherit}button{cursor:pointer}h1,h2,h3,p{margin:0}.sidebar{background:var(--color-bg-sidebar);border-right:1px solid var(--color-border);flex-direction:column;flex-shrink:0;gap:32px;width:232px;padding:24px 16px;display:flex}.sidebar-logo{object-fit:contain;width:88px;height:62.29px;margin:-11px 0 0 44px}.sidebar-nav{flex-direction:column;gap:6px;display:flex}.sidebar-link{border-radius:var(--radius-sm);color:var(--color-text);border:1.5px solid #0000;align-items:center;gap:10px;padding:12px 14px;font-size:14px;font-weight:500;text-decoration:none;display:flex}.sidebar-link:hover{background:#2f60b30f}.sidebar-link.active{background:var(--color-white);border-color:var(--color-primary);color:var(--color-primary)}.snbt-countdown{background:var(--color-primary);color:var(--color-white);border-radius:999px;align-items:center;gap:10px;padding:8px 14px;font-size:13px;font-weight:500;display:flex}.snbt-countdown-boxes{align-items:center;gap:4px;display:flex}.snbt-box{background:var(--color-primary-dark);font-variant-numeric:tabular-nums;text-align:center;border-radius:6px;min-width:22px;padding:4px 7px;font-weight:700}.snbt-colon{font-weight:700}.app-header{background:var(--color-white);border-bottom:1px solid var(--color-border);flex-shrink:0;justify-content:space-between;align-items:center;height:76px;padding:0 28px;display:flex}.app-header-title{color:var(--color-primary);align-items:center;gap:12px;display:flex}.app-header-title h1{color:var(--color-primary);font-size:19px;font-weight:700}.app-layout{min-height:100vh;display:flex}.app-layout-main{flex-direction:column;flex:1;min-width:0;display:flex}.app-layout-content{flex:1;padding:24px 28px;overflow:auto}.login-page{background:var(--color-bg-app);justify-content:center;align-items:center;min-height:100vh;display:flex}.login-card{background:var(--color-white);border:1px solid var(--color-border);border-radius:var(--radius-lg);width:360px;max-width:calc(100vw - 32px);padding:32px}.login-logo{object-fit:contain;width:auto;height:40px;margin-bottom:24px}.login-card h1{margin-bottom:20px;font-size:18px;font-weight:600}.login-card form{flex-direction:column;gap:14px;display:flex}.login-card label{color:var(--color-text-muted);flex-direction:column;gap:6px;font-size:13px;display:flex}.login-card input{border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:10px 12px;font-size:14px}.login-card input:focus{outline:2px solid var(--color-primary);outline-offset:-1px}.login-card button[type=submit]{background:var(--color-primary);color:var(--color-white);border-radius:var(--radius-sm);border:none;margin-top:6px;padding:11px;font-size:14px;font-weight:600}.login-card button[type=submit]:hover{background:var(--color-primary-hover)}.login-card button[type=submit]:disabled{opacity:.6;cursor:default}.login-error{color:var(--color-red);margin:0;font-size:13px}.login-switch{width:100%;color:var(--color-primary);background:0 0;border:none;margin-top:16px;font-size:13px}.student-avatar{border-radius:50%;flex-shrink:0;width:44px;height:44px}.student-avatar-photo{object-fit:cover}.student-avatar-placeholder{background:var(--color-primary);color:var(--color-white);justify-content:center;align-items:center;display:flex}.progress-card{background:var(--color-white);border:1px solid var(--color-border);border-radius:var(--radius-lg);min-width:0;padding:20px}.progress-empty{color:var(--color-text-muted);padding:24px 4px;font-size:14px}.progress-body{min-height:120px;max-height:calc(100vh - 320px);overflow:auto}.progress-grid-table{grid-template-columns:44px 2px 1fr;align-items:center;gap:20px 18px;width:max-content;min-width:100%;display:grid}.progress-avatar{grid-column:1}.progress-divider{background:var(--color-primary);grid-area:1/2/-1;justify-self:center;width:2px;height:100%}.progress-cells{grid-column:3;grid-template-columns:repeat(13,30px);justify-items:center;column-gap:16px;display:grid}.progress-cell{border:2px solid var(--color-cell-empty);background:var(--color-white);border-radius:7px;width:24px;height:24px}.progress-cell.green{background:var(--color-green);border-color:var(--color-green)}.progress-cell.yellow{background:var(--color-yellow);border-color:var(--color-yellow)}.progress-cell.red{background:var(--color-red);border-color:var(--color-red)}.progress-cell.empty{background:var(--color-white);border-color:var(--color-cell-empty)}.progress-legend{border-top:1px solid var(--color-border);grid-template-columns:repeat(13,30px);justify-items:center;column-gap:16px;margin-top:20px;padding-top:16px;padding-left:82px;display:grid;overflow-x:auto}.progress-legend-icon{border:1.5px solid var(--color-primary);width:30px;height:30px;color:var(--color-primary);border-radius:50%;justify-content:center;align-items:center;font-size:11px;font-weight:600;display:flex}.modal-overlay{z-index:50;background:#0f142866;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-card{background:var(--color-white);border-radius:var(--radius-lg);width:360px;max-width:calc(100vw - 32px);padding:24px}.modal-card h2{margin-bottom:18px;font-size:17px;font-weight:700}.modal-card form{flex-direction:column;gap:14px;display:flex}.modal-card label{color:var(--color-text-muted);flex-direction:column;gap:6px;font-size:13px;display:flex}.modal-card input,.modal-card select{border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:9px 10px;font-size:14px}.add-student-foto-row{align-items:center;gap:12px;display:flex}.add-student-foto-preview{object-fit:cover;border-radius:50%;flex-shrink:0;width:56px;height:56px}.add-student-foto-btn{border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-primary);cursor:pointer;padding:8px 12px;font-size:13px;font-weight:600}.modal-error{color:var(--color-red);margin:0;font-size:13px}.modal-empty{color:var(--color-text-muted);font-size:14px}.modal-actions{gap:10px;margin-top:6px;display:flex}.modal-cancel,.modal-submit{border-radius:var(--radius-sm);border:none;flex:1;padding:10px;font-size:14px;font-weight:600}.modal-cancel{background:var(--color-bg-app);color:var(--color-text)}.modal-submit{background:var(--color-primary);color:var(--color-white)}.modal-submit:disabled{opacity:.6}.upcoming-panel{flex-direction:column;gap:14px;display:flex}.upcoming-header{align-items:center;gap:8px;display:flex}.upcoming-header h2{color:var(--color-primary);font-size:15px;font-weight:700}.upcoming-badge{background:var(--color-badge);color:var(--color-white);border-radius:50%;justify-content:center;align-items:center;min-width:18px;height:18px;font-size:11px;font-weight:700;display:flex}.schedule-btn{background:var(--color-primary);color:var(--color-white);border-radius:var(--radius-md);border:none;justify-content:space-between;align-items:center;padding:12px 16px;font-size:14px;font-weight:600;display:flex}.upcoming-list{flex-direction:column;gap:12px;max-height:calc(100vh - 280px);padding-right:2px;display:flex;overflow-y:auto}.upcoming-empty{color:var(--color-text-muted);font-size:13px}.upcoming-card{background:var(--color-white);border:1px solid var(--color-border);border-radius:var(--radius-md);flex-shrink:0;padding:14px 16px}.upcoming-card-top{justify-content:space-between;margin-bottom:6px;font-size:12px;display:flex}.upcoming-date{color:var(--color-primary);font-weight:600}.upcoming-time{color:var(--color-text-muted)}.upcoming-nama{margin-bottom:4px;font-size:18px;font-weight:700}.upcoming-bottom{justify-content:space-between;align-items:baseline;font-size:13px;display:flex}.upcoming-topik{color:var(--color-text-muted)}.upcoming-meeting{color:var(--color-primary);font-size:11px;font-weight:600}.dashboard{flex-wrap:wrap;align-items:flex-start;gap:24px;display:flex}.dashboard-main{flex:2 480px;min-width:0}.dashboard-side{flex:300px;min-width:280px;max-width:320px}.dashboard-section-title{color:var(--color-primary);margin-bottom:14px;font-size:15px;font-weight:700}.dashboard-error{color:var(--color-red);padding:24px}.student-list-panel{flex-direction:column;flex-shrink:0;gap:14px;width:230px;display:flex}.add-student-btn{background:var(--color-primary);color:var(--color-white);border-radius:var(--radius-md);border:none;align-items:center;gap:8px;padding:12px 16px;font-size:14px;font-weight:600;display:flex}.add-student-btn:hover{background:var(--color-primary-hover)}.student-list{flex-direction:column;gap:10px;max-height:calc(100vh - 220px);padding-right:2px;display:flex;overflow-y:auto}.student-list-empty{color:var(--color-text-muted);font-size:13px}.student-list-item{background:var(--color-white);border:1.5px solid var(--color-border);border-radius:var(--radius-md);text-align:left;flex-shrink:0;align-items:center;gap:10px;padding:10px 12px;display:flex}.student-list-item.active{border-color:var(--color-primary)}.student-list-info{flex:1;min-width:0}.student-list-nama{color:var(--color-text);white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:700;overflow:hidden}.student-list-sekolah,.student-list-univ{color:var(--color-text-muted);white-space:nowrap;text-overflow:ellipsis;font-size:11px;overflow:hidden}.student-list-badge{background:var(--color-bg-app);color:var(--color-text-muted);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;min-width:22px;height:22px;font-size:11px;font-weight:700;display:flex}.profile-card{background:var(--color-white);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:20px}.profile-header h2{color:var(--color-primary);margin-bottom:16px;font-size:15px;font-weight:700}.profile-body{align-items:flex-start;gap:20px;display:flex}.profile-avatar-wrap{flex-shrink:0;position:relative}.profile-avatar-edit{background:var(--color-primary);width:24px;height:24px;color:var(--color-white);border:2px solid var(--color-white);border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute;bottom:-2px;right:-2px}.profile-avatar-edit:hover{background:var(--color-primary-hover)}.profile-avatar-edit:disabled{opacity:.6}.profile-fields{flex:1;min-width:0;position:relative}.profile-section{margin-bottom:16px}.profile-section h3{color:var(--color-primary);margin-bottom:8px;font-size:13px;font-weight:700}.profile-section dl{grid-template-columns:90px 1fr;row-gap:6px;margin:0;font-size:13px;display:grid}.profile-section dt{color:var(--color-text-muted)}.profile-section dd{color:var(--color-text);margin:0}.profile-edit-btn{background:var(--color-primary);color:var(--color-white);border-radius:var(--radius-sm);border:none;padding:8px 14px;font-size:13px;font-weight:600;position:absolute;top:0;right:0}.profile-edit-btn:hover{background:var(--color-primary-hover)}.profile-form-grid{grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px;display:grid}.profile-form label{color:var(--color-text-muted);flex-direction:column;gap:5px;font-size:12px;display:flex}.profile-form input{border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:8px 10px;font-size:13px}.profile-error{color:var(--color-red);margin:0 0 10px;font-size:13px}.profile-form-actions{gap:10px;display:flex}.profile-cancel,.profile-save{border-radius:var(--radius-sm);border:none;padding:9px 16px;font-size:13px;font-weight:600}.profile-cancel{background:var(--color-bg-app);color:var(--color-text)}.profile-save{background:var(--color-primary);color:var(--color-white)}.profile-save:disabled{opacity:.6}.learning-card{background:var(--color-white);border:1px solid var(--color-border);border-radius:var(--radius-lg);margin-top:20px;padding:20px}.learning-card h2{color:var(--color-primary);margin-bottom:16px;font-size:15px;font-weight:700}.learning-rows{flex-direction:column;gap:10px;display:flex}.learning-row{align-items:center;gap:14px;display:flex}.learning-icon{border:1.5px solid var(--color-primary);width:30px;height:30px;color:var(--color-primary);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:11px;font-weight:600;display:flex}.learning-bar-track{background:var(--color-bg-app);border-radius:6px;flex:1;height:10px;overflow:hidden}.learning-bar-fill{border-radius:6px;height:100%}.learning-bar-fill.green{background:var(--color-green)}.learning-bar-fill.yellow{background:var(--color-yellow)}.learning-bar-fill.red{background:var(--color-red)}.learning-axis{color:var(--color-text-faint);justify-content:space-between;margin-top:10px;padding-left:44px;font-size:11px;display:flex}.class-panel{flex-direction:column;flex-shrink:0;gap:10px;width:270px;display:flex}.class-panel-title{color:var(--color-primary);margin-bottom:4px;font-size:15px;font-weight:700}.class-sessions{color:var(--color-text-muted);justify-content:space-between;align-items:center;font-size:13px;display:flex}.class-sessions-edit{color:var(--color-primary);background:0 0;border:none;padding:2px}.class-sessions-value{color:var(--color-text);font-size:26px;font-weight:700}.class-sessions-edit-row{gap:8px;display:flex}.class-sessions-edit-row input{border:1px solid var(--color-border);border-radius:var(--radius-sm);width:80px;padding:6px 8px;font-size:14px}.class-sessions-edit-row button{border-radius:var(--radius-sm);background:var(--color-primary);color:var(--color-white);border:none;padding:6px 12px;font-size:13px;font-weight:600}.schedule-btn{background:var(--color-primary);color:var(--color-white);border-radius:var(--radius-md);border:none;justify-content:space-between;align-items:center;margin:10px 0 6px;padding:12px 16px;font-size:14px;font-weight:600;display:flex}.schedule-btn:hover{background:var(--color-primary-hover)}.class-list-section h3{color:var(--color-primary);margin:12px 0 8px;font-size:13px;font-weight:700}.class-list{flex-direction:column;gap:8px;max-height:220px;display:flex;overflow-y:auto}.class-list-empty{color:var(--color-text-muted);margin:0;font-size:12px}.class-list-item{background:var(--color-white);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:inherit;flex-shrink:0;padding:10px 12px;text-decoration:none;transition:border-color .15s;display:block}.class-list-item:hover{border-color:var(--color-primary)}.class-list-top{color:var(--color-text-faint);justify-content:space-between;align-items:center;gap:8px;display:flex}.class-list-date{color:var(--color-primary);gap:8px;font-size:13px;font-weight:600;display:flex}.class-list-date span{color:var(--color-text-muted);font-size:12px;font-weight:400}.class-list-bottom{flex-direction:column;margin-top:4px;display:flex}.class-list-meeting{color:var(--color-text-muted);font-size:11px}.class-list-material{color:var(--color-text);font-size:14px;font-weight:700}.student-page{flex-wrap:wrap;align-items:flex-start;gap:24px;display:flex}.student-main{flex:2 400px;min-width:0}.student-error,.student-empty{color:var(--color-text-muted);padding:24px}.calendar-page{flex-direction:column;gap:20px;display:flex}.calendar-error{color:var(--color-red);padding:24px}.calendar-top{flex-wrap:wrap;align-items:center;gap:20px;display:flex}.calendar-upcoming{background:var(--color-white);border:1px solid var(--color-border);border-radius:var(--radius-md);flex-direction:column;flex:1;gap:4px;min-width:260px;padding:12px 16px;display:flex}.calendar-upcoming-empty{color:var(--color-text-muted);justify-content:center;font-size:13px}.calendar-upcoming-label{color:var(--color-primary);font-size:12px;font-weight:700}.calendar-upcoming-body{align-items:baseline;gap:12px;display:flex}.calendar-upcoming-nama{font-size:17px;font-weight:700}.calendar-upcoming-meta{color:var(--color-text-muted);gap:10px;font-size:12px;display:flex}.calendar-schedule-btn{background:var(--color-primary);color:var(--color-white);border-radius:var(--radius-md);border:none;flex-shrink:0;padding:12px 20px;font-size:14px;font-weight:600}.calendar-schedule-btn:hover{background:var(--color-primary-hover)}.calendar-card{background:var(--color-white);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:16px;overflow-x:auto}.calendar-nav{align-items:center;gap:10px;margin-bottom:14px;display:flex}.calendar-nav button{background:var(--color-bg-app);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text);padding:6px 12px;font-size:13px;font-weight:600}.calendar-title{color:var(--color-primary);margin-left:8px;font-size:15px;font-weight:700}.calendar-grid{grid-template-columns:repeat(7,minmax(120px,1fr));min-width:840px;display:grid}.calendar-grid-header{border-bottom:1px solid var(--color-border);margin-bottom:4px}.calendar-weekday{color:var(--color-text-muted);text-transform:uppercase;padding:6px 4px;font-size:11px;font-weight:700}.calendar-day{border:1px solid var(--color-border);flex-direction:column;gap:4px;min-height:92px;margin:-1px 0 0 -1px;padding:6px;display:flex}.calendar-day.outside{background:var(--color-bg-app)}.calendar-day.outside .calendar-day-number{color:var(--color-text-faint)}.calendar-day-number{border-radius:50%;justify-content:center;align-items:center;width:20px;height:20px;font-size:12px;font-weight:600;display:flex}.calendar-day-number.today{background:var(--color-primary);color:var(--color-white)}.calendar-day-events{flex-direction:column;gap:3px;display:flex}.calendar-event{color:var(--color-primary);white-space:nowrap;text-overflow:ellipsis;background:#2f60b31a;border-radius:4px;padding:2px 5px;font-size:10px;font-weight:600;overflow:hidden}.calendar-event-more{color:var(--color-text-muted);font-size:10px}.material-page{flex-direction:column;gap:16px;display:flex}.material-error{color:var(--color-red);padding:24px}.material-breadcrumb{color:var(--color-primary);font-size:15px;font-weight:700}.material-breadcrumb span{color:var(--color-text)}.material-body{flex-wrap:wrap;align-items:flex-start;gap:20px;display:flex}.material-tabs{flex-direction:column;flex-shrink:0;gap:8px;width:220px;display:flex}.material-tab{background:var(--color-white);border:1.5px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text);text-align:left;align-items:center;gap:10px;padding:12px 14px;font-size:13px;font-weight:600;display:flex}.material-tab.active{border-color:var(--color-primary);color:var(--color-primary)}.material-tab-icon{border:1.5px solid;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:26px;height:26px;font-size:10px;display:flex}.material-main{flex-direction:column;flex:2 420px;gap:20px;min-width:0;display:flex}.material-content{background:var(--color-white);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:20px}.material-content h2{color:var(--color-primary);margin-bottom:12px;font-size:15px;font-weight:700}.material-summary{color:var(--color-text);margin:0;font-size:14px;line-height:1.6}.teaching-module-header{justify-content:space-between;align-items:center;display:flex}.teaching-module-header h2{margin-bottom:0}.module-icon-btn{border-radius:var(--radius-sm);background:var(--color-primary);width:32px;height:32px;color:var(--color-white);flex-shrink:0;justify-content:center;align-items:center;display:flex}.module-icon-btn:hover{background:var(--color-primary-hover)}.preview-module-btn{background:var(--color-primary);color:var(--color-white);border-radius:var(--radius-sm);border:none;align-items:center;gap:8px;margin:14px 0;padding:9px 16px;font-size:13px;font-weight:600;text-decoration:none;display:inline-flex}.module-preview{border:1px solid var(--color-border);border-radius:var(--radius-md);width:100%;height:500px}.submitted-by-panel{flex:260px;min-width:240px;max-width:300px}.submitted-by-panel h2{color:var(--color-primary);margin-bottom:14px;font-size:15px;font-weight:700}.submitted-by-list{flex-direction:column;gap:12px;display:flex}.submitted-by-card{background:var(--color-white);border:1px solid var(--color-border);border-radius:var(--radius-md);align-items:center;gap:12px;padding:14px;display:flex}.submitted-by-avatar{background:var(--color-primary);width:38px;height:38px;color:var(--color-white);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:13px;font-weight:700;display:flex}.submitted-by-nama{font-size:15px;font-weight:700}.submitted-by-meta{color:var(--color-text-muted);font-size:11px;line-height:1.5}.settings-page{flex-direction:column;gap:28px;display:flex}.account-card{background:var(--color-bg-app);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:20px;position:relative}.account-card h2{color:var(--color-primary);margin-bottom:16px;font-size:15px;font-weight:700}.account-grid{grid-template-columns:1fr 1fr;gap:16px 32px;display:grid}.account-label{color:var(--color-text-muted);margin-bottom:4px;font-size:12px;display:block}.account-value{background:var(--color-white);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:9px 12px;font-size:14px;display:block}.account-edit-btn{background:var(--color-primary);color:var(--color-white);border-radius:var(--radius-sm);border:none;padding:9px 16px;font-size:13px;font-weight:600;position:absolute;top:20px;right:20px}.account-edit-btn:hover{background:var(--color-primary-hover)}.account-form-grid{grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px;display:grid}.account-form label{color:var(--color-text-muted);flex-direction:column;gap:5px;font-size:12px;display:flex}.account-form input{border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:9px 10px;font-size:13px}.account-error{color:var(--color-red);margin:0 0 10px;font-size:13px}.account-form-actions{gap:10px;display:flex}.account-cancel,.account-save{border-radius:var(--radius-sm);border:none;padding:9px 16px;font-size:13px;font-weight:600}.account-cancel{background:var(--color-white);color:var(--color-text);border:1px solid var(--color-border)}.account-save{background:var(--color-primary);color:var(--color-white)}.account-save:disabled{opacity:.6}.class-detail{flex-direction:column;gap:18px;display:flex}.class-detail-error{color:var(--color-red);padding:24px}.class-detail-breadcrumb{color:var(--color-primary);font-size:15px;font-weight:700}.class-detail-breadcrumb a{color:var(--color-primary);text-decoration:none}.class-detail-breadcrumb-current{color:var(--color-text)}.class-detail-top{flex-wrap:wrap;align-items:flex-start;gap:20px;display:flex}.info-card{background:var(--color-bg-app);border:1px solid var(--color-border);border-radius:var(--radius-lg);flex:2 420px;min-height:140px;padding:20px;position:relative}.info-card-header h2,.score-card h2,.notes-card h2,.assignment-header h2{color:var(--color-primary);margin-bottom:14px;font-size:15px;font-weight:700}.info-grid{grid-template-columns:1fr 1fr;gap:10px 24px;font-size:14px;display:grid}.info-label{color:var(--color-text-muted);width:110px;display:inline-block}.info-value{color:var(--color-text);font-weight:500}.info-edit-btn{background:var(--color-primary);color:var(--color-white);border-radius:var(--radius-sm);border:none;align-items:center;gap:6px;padding:7px 14px;font-size:12px;font-weight:600;display:flex;position:absolute;bottom:16px;right:20px}.info-edit-btn:hover{background:var(--color-primary-hover)}.info-form-grid{grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px;display:grid}.info-form label{color:var(--color-text-muted);flex-direction:column;gap:5px;font-size:12px;display:flex}.info-form input,.info-form select{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-white);padding:8px 10px;font-size:13px}.info-error{color:var(--color-red);margin:0 0 10px;font-size:13px}.info-form-actions{gap:10px;display:flex}.info-form-actions button{border-radius:var(--radius-sm);border:none;padding:8px 16px;font-size:13px;font-weight:600}.info-form-actions button[type=button]{background:var(--color-white);border:1px solid var(--color-border)}.info-save{background:var(--color-primary);color:var(--color-white)}.score-card{background:var(--color-bg-app);border:1px solid var(--color-border);border-radius:var(--radius-lg);text-align:center;flex-direction:column;flex:220px;align-items:center;padding:20px;display:flex}.score-card h2{align-self:flex-start}.score-input{border:1px solid var(--color-border);border-radius:var(--radius-sm);text-align:center;background:var(--color-white);width:100px;height:56px;margin-bottom:14px;font-size:20px}.score-display{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-white);justify-content:center;align-items:center;width:100px;height:56px;margin-bottom:14px;font-size:24px;font-weight:700;display:flex;position:relative}.score-dot{border:2px solid var(--color-white);border-radius:4px;width:16px;height:16px;position:absolute;top:-6px;right:-6px}.score-dot.green{background:var(--color-green)}.score-dot.yellow{background:var(--color-yellow)}.score-dot.red{background:var(--color-red)}.score-actions{gap:10px;width:100%;display:flex}.score-cancel,.score-finish{border-radius:var(--radius-sm);border:none;flex:1;padding:9px;font-size:13px;font-weight:600}.score-cancel{background:var(--color-red);color:var(--color-white)}.score-finish{background:var(--color-primary);color:var(--color-white)}.score-finish:disabled{opacity:.6}.score-edit-btn{background:var(--color-primary);color:var(--color-white);border-radius:var(--radius-sm);border:none;align-items:center;gap:6px;padding:8px 16px;font-size:12px;font-weight:600;display:flex}.notes-card{background:var(--color-white);border:1px solid var(--color-border);border-radius:var(--radius-lg);flex:2 420px;padding:20px}.notes-textarea{border:1px solid var(--color-border);border-radius:var(--radius-sm);width:100%;min-height:90px;font:inherit;resize:vertical;padding:12px;font-size:14px}.notes-text{color:var(--color-text);white-space:pre-wrap;margin:0;font-size:14px;line-height:1.6}.assignment-card{background:var(--color-white);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:20px}.assignment-header{justify-content:space-between;align-items:center;display:flex}.assignment-header-actions{gap:8px;margin-bottom:14px;display:flex}.assignment-icon-btn{border-radius:var(--radius-sm);background:var(--color-primary);width:32px;height:32px;color:var(--color-white);justify-content:center;align-items:center;display:flex}.preview-module-btn{background:var(--color-primary);color:var(--color-white);border-radius:var(--radius-sm);border:none;align-items:center;gap:8px;margin-bottom:14px;padding:9px 16px;font-size:13px;font-weight:600;text-decoration:none;display:inline-flex}.preview-module-btn:hover{background:var(--color-primary-hover)}.assignment-dropzone{background:var(--color-bg-app);border:1.5px dashed var(--color-border);border-radius:var(--radius-md);flex-direction:column;align-items:center;gap:10px;padding:40px 20px;display:flex}.assignment-dropzone.drag-over{border-color:var(--color-primary);background:#2f60b30f}.assignment-dropzone p{color:var(--color-text-muted);margin:0;font-size:14px}.choose-files-btn{background:var(--color-primary);color:var(--color-white);border-radius:var(--radius-sm);border:none;align-items:center;gap:8px;padding:9px 16px;font-size:13px;font-weight:600;display:flex}.dropzone-hint{color:var(--color-text-faint);font-size:12px}.assignment-preview{border:1px solid var(--color-border);border-radius:var(--radius-md);width:100%;height:600px}
