.btn{font-size:var(--text-sm);border-radius:var(--radius);cursor:pointer;transition:all var(--transition-base);white-space:nowrap;max-width:100%;min-height:var(--touch-min);border:none;justify-content:center;align-items:center;gap:.5rem;padding:.625rem 1rem;font-weight:600;display:inline-flex}.btn-primary{background-color:var(--primary);color:var(--primary-foreground)}.btn-primary:hover{background-color:var(--primary-hover)}.btn-secondary{background-color:var(--secondary);color:var(--secondary-foreground)}.btn-secondary:hover{background-color:var(--secondary-hover)}.btn-outline{border:1px solid var(--border);color:var(--foreground);background-color:#0000}.btn-outline:hover{background-color:var(--muted);border-color:var(--border-hover)}.btn-outline-light{color:#fff;background-color:#0000;border:1px solid #ffffff4d}.btn-outline-light:hover{background-color:#ffffff1a}.btn-sm{font-size:var(--text-sm);min-height:36px;padding:.375rem .75rem}.btn-lg{font-size:var(--text-body);padding:.75rem 1.5rem}.btn-block{width:100%}.card{background-color:var(--card);border:1px solid var(--card-border);border-radius:calc(var(--radius) + 2px);box-shadow:var(--card-shadow);transition:box-shadow var(--transition-base);max-width:100%;overflow:hidden}.card:hover{box-shadow:var(--shadow-md)}.card-header{border-bottom:1px solid var(--border);overflow-wrap:break-word;word-wrap:break-word;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;padding:1rem 1.25rem;display:flex}@media (width<=480px){.card-header{padding:.75rem 1rem}}.card-title{font-size:var(--text-body);word-wrap:break-word;overflow-wrap:break-word;color:var(--card-foreground);align-items:center;gap:.5rem;font-weight:700;display:flex}.card-title .material-symbols-rounded{font-size:var(--icon-md);flex-shrink:0;line-height:1}.badge-count{background:var(--muted);min-width:1.25rem;color:var(--muted-foreground);font-size:var(--text-caption);border-radius:999px;justify-content:center;align-items:center;padding:.1rem .4rem;font-weight:700;line-height:1.4;display:inline-flex}.card-subtitle{font-size:var(--text-sm);color:var(--muted-foreground);margin:0;line-height:1.45}.card-description{font-size:var(--text-sm);color:var(--muted-foreground);word-wrap:break-word;overflow-wrap:break-word}.card-content{overflow-wrap:break-word;word-wrap:break-word;padding:1.5rem}.upcoming-events{margin-top:20px}.stats-grid{grid-template-columns:1fr;gap:1rem;width:100%;max-width:100%;display:grid}.stats-card{background-color:var(--card);border:1px solid var(--card-border);border-radius:calc(var(--radius) + 4px);box-shadow:var(--shadow-sm);transition:box-shadow var(--transition-base);max-width:100%;padding:1.5rem;overflow:hidden}.stats-card:hover{box-shadow:var(--shadow-md)}.stats-card-content{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:.75rem;display:flex}.stats-card-info{flex-direction:column;flex:1;gap:.25rem;min-width:0;display:flex}.stats-card-title{font-size:var(--text-sm);color:var(--muted-foreground);word-wrap:break-word;overflow-wrap:break-word;font-weight:500}.stats-card-value{font-size:var(--text-display);color:var(--card-foreground);font-weight:700}.stats-card-change{font-size:var(--text-caption);font-weight:500}.stats-card-change.positive{color:var(--success)}.stats-card-change.negative{color:var(--destructive)}.stats-card-change.neutral{color:var(--muted-foreground)}.stats-card-icon{border-radius:var(--radius);flex-shrink:0;justify-content:center;align-items:center;width:3rem;height:3rem;display:flex}.tabs{width:100%;max-width:100%}.tabs-list{border-bottom:1px solid var(--border);-webkit-overflow-scrolling:touch;background-color:var(--card);align-items:center;gap:.5rem;max-width:100%;margin-bottom:1.5rem;padding-bottom:1px;display:flex;overflow-x:auto}.tabs-list::-webkit-scrollbar{display:none}.tabs-trigger{font-size:var(--text-sm);color:var(--muted-foreground);cursor:pointer;transition:all var(--transition-base);white-space:nowrap;min-height:var(--touch-min);background:0 0;border:none;border-bottom:2px solid #0000;flex-shrink:0;align-items:center;gap:.5rem;padding:.75rem 1rem;font-weight:500;display:flex}.tabs-trigger:hover{color:var(--foreground)}.tabs-trigger.active{color:var(--primary);border-bottom-color:var(--primary)}.tabs-content{display:none}.tabs-content.active{display:block}.table-responsive{-webkit-overflow-scrolling:touch;width:100%;max-width:100%;margin:0;overflow-x:auto}.table-responsive table{width:100%;min-width:480px}@media (width<=480px){.table-responsive table{min-width:380px}}table{border-collapse:collapse;width:100%;max-width:100%}th{text-align:left;font-size:var(--text-caption);text-transform:uppercase;letter-spacing:.04em;color:var(--muted-foreground);border-bottom:1px solid var(--border);white-space:nowrap;padding:.75rem .5rem;font-weight:700}td{border-bottom:1px solid var(--border);word-wrap:break-word;padding:.75rem .5rem}tr:last-child td{border-bottom:none}tr:hover td{background-color:var(--muted)}.badge{font-size:var(--text-caption);border-radius:calc(var(--radius) - 2px);white-space:nowrap;border:1px solid #0000;align-items:center;padding:.25rem .625rem;font-weight:600;display:inline-flex}.badge-primary{background-color:var(--primary);color:var(--primary-foreground)}.badge-secondary{background-color:var(--secondary);color:var(--secondary-foreground)}.badge-success{background-color:var(--success);color:var(--success-foreground)}.badge-warning{background-color:var(--warning);color:var(--warning-foreground)}.badge-destructive{background-color:var(--destructive);color:var(--destructive-foreground)}.grade-badge{border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:2rem;height:2rem;font-weight:600;display:inline-flex}.grade-badge.a{background:var(--success-light);color:var(--success)}.grade-badge.b{background:var(--info-light);color:var(--info)}.grade-badge.c{background:var(--warning-light);color:var(--warning)}.grade-badge.d{background:var(--accent-light);color:var(--accent)}.grade-badge.f{background:var(--destructive-light);color:var(--destructive)}.input,.form-control{width:100%;max-width:100%;font-size:var(--text-sm);border:1px solid var(--border);border-radius:var(--radius);background-color:var(--card);color:var(--foreground);transition:all var(--transition-base);min-height:var(--touch-min);box-sizing:border-box;padding:.5rem .75rem}.input:focus,.form-control:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-light,#003d7a1f);outline:none}.form-input{border:1px solid var(--border);border-radius:var(--radius-sm);font-size:var(--text-sm);background:var(--background);color:var(--foreground);box-sizing:border-box;outline:none;width:100%;padding:.55rem .75rem;font-family:inherit}.form-input:focus{border-color:var(--primary)}.form-textarea{resize:vertical;min-height:90px}.form-select{width:100%;max-width:100%;font-size:var(--text-sm);border:1px solid var(--border);border-radius:var(--radius);background-color:var(--card);color:var(--foreground);transition:all var(--transition-base);min-height:var(--touch-min);box-sizing:border-box;cursor:pointer;appearance:none;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%2364748b' stroke-width='1.5'%3E%3Cpath d='M4 6l4 4 4-4'/%3E%3C/svg%3E");background-position:right .6rem center;background-repeat:no-repeat;background-size:1rem;padding:.5rem 2rem .5rem .75rem}.form-select:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-light,#003d7a1f);outline:none}.form-select:disabled{background-color:var(--muted);color:var(--muted-foreground);cursor:not-allowed}.form-row-2{grid-template-columns:1fr 1fr;gap:1rem;display:grid}@media (width<=480px){.form-row-2{grid-template-columns:1fr}}.form-group{flex-direction:column;gap:.35rem;margin-bottom:0;display:flex}.form-label{font-size:var(--text-sm);color:var(--foreground);text-transform:uppercase;letter-spacing:.04em;font-weight:700}.form-error-text{color:var(--destructive);font-size:var(--text-sm)}.alert{--alert-fg:var(--foreground);--alert-bg:var(--muted);--alert-border:var(--border);border:1px solid var(--alert-border);border-radius:var(--radius);background:var(--alert-bg);color:var(--alert-fg);font-size:var(--text-sm);align-items:flex-start;gap:.5rem;padding:.7rem .95rem;line-height:1.5;display:flex}.alert .material-symbols-rounded{font-size:var(--icon-sm);flex-shrink:0}.alert-danger{--alert-fg:var(--destructive);--alert-bg:var(--destructive-light);--alert-border:#ef444440}.alert-success{--alert-fg:var(--success);--alert-bg:var(--success-light);--alert-border:#16a34a40}.alert-warning{--alert-fg:var(--warning);--alert-bg:var(--warning-light);--alert-border:#eab3084d}.alert-info{--alert-fg:var(--primary);--alert-bg:var(--primary-light);--alert-border:#003d7a33}.filter-section{flex-wrap:wrap;gap:1rem;width:100%;max-width:100%;margin-bottom:1.5rem;display:flex}.filter-section select,.filter-section input{flex:1;min-width:200px;max-width:100%}.progress{background-color:var(--muted);border-radius:9999px;width:100%;max-width:100%;height:.5rem;overflow:hidden}.progress-bar{background-color:var(--primary);height:100%;transition:width var(--transition-base)}.schedule-item{border-radius:var(--radius);transition:all var(--transition-base);border:1px solid;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;max-width:100%;padding:1rem;display:flex;overflow:hidden}.schedule-item.completed{background-color:var(--success-light);color:var(--success);border-color:var(--success)}.schedule-item.current{background-color:var(--accent-light);color:var(--accent);border-color:var(--accent)}.schedule-item.upcoming{background-color:var(--muted);color:var(--muted-foreground);border-color:var(--border)}.schedule-item-content{flex:1;min-width:0}.schedule-item-title{word-wrap:break-word;overflow-wrap:break-word;margin-bottom:.25rem;font-weight:500}.schedule-item-time{font-size:var(--text-sm);color:var(--muted-foreground)}.schedule-item-icon{background-color:#ffffff80;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:2rem;height:2rem;display:flex}.avatar{background:var(--primary);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;font-weight:600;display:flex}.avatar-sm{width:32px;height:32px;font-size:var(--text-caption)}.avatar-lg{width:48px;height:48px;font-size:var(--text-title)}.student-info-cell{align-items:center;gap:.75rem;min-width:0;max-width:100%;display:flex}.student-name{word-wrap:break-word;overflow-wrap:break-word;font-weight:500}.student-id-text{font-size:var(--text-caption);color:var(--muted-foreground)}.quick-actions{flex-wrap:wrap;gap:.75rem;max-width:100%;display:flex}.avatar-primary{background:var(--primary);color:var(--primary-foreground)}.avatar-success{background:var(--success);color:var(--success-foreground)}.avatar-accent{background:var(--accent);color:var(--accent-foreground)}.avatar-info{background:var(--info);color:var(--info-foreground)}.avatar-warning{background:var(--warning);color:var(--warning-foreground)}.avatar-muted{color:#fff;background:#9ca3af}.avatar-purple{color:#fff;background:#8b5cf6}.icon-bg-primary{background-color:var(--primary-light);color:var(--primary)}.icon-bg-success{background-color:var(--success-light);color:var(--success)}.icon-bg-accent{background-color:var(--accent-light);color:var(--accent)}.icon-bg-info{background-color:var(--info-light);color:var(--info)}.icon-bg-warning{background-color:var(--warning-light);color:var(--warning)}.icon-bg-destructive{background-color:var(--destructive-light);color:var(--destructive)}.icon-bg-purple{color:#8b5cf6;background-color:#8b5cf61a}.badge-soft-primary{background-color:var(--primary-light);color:var(--primary)}.badge-soft-success{background-color:var(--success-light);color:var(--success)}.badge-soft-accent{background-color:var(--accent-light);color:var(--accent)}.badge-soft-info{background-color:var(--info-light);color:var(--info)}.badge-soft-warning{background-color:var(--warning-light);color:var(--warning)}.badge-soft-destructive{background-color:var(--destructive-light);color:var(--destructive)}.badge-soft-purple{color:#8b5cf6;background-color:#8b5cf61a}.schedule-dot{border-radius:50%;flex-shrink:0;width:10px;height:10px;display:inline-block}.schedule-dot-green{background:var(--success)}.schedule-dot-teal{background:#0d9488}.schedule-dot-muted{background:var(--muted-foreground)}.schedule-dot-orange{background:var(--accent)}.schedule-dot-indigo{background:#6366f1}.schedule-dot-primary{background:var(--primary)}.btn-icon-clean{cursor:pointer;border-radius:var(--radius-sm);color:var(--muted-foreground);transition:color var(--transition-base), background var(--transition-base);background:0 0;border:none;justify-content:center;align-items:center;padding:.25rem;display:inline-flex}.btn-icon-clean:hover{background:var(--muted);color:var(--foreground)}.placeholder-content{border:1px dashed var(--border);border-radius:var(--radius);color:var(--muted-foreground);justify-content:center;align-items:center;padding:3rem;display:flex}.ann-sidebar-header-urgent,.ann-sidebar-header-urgent .material-symbols-rounded{color:var(--destructive)}.tt-modal{border-radius:var(--radius,10px);border:none;width:min(520px,95vw);max-height:90vh;margin:0;padding:0;position:fixed;top:50%;left:50%;overflow:visible;transform:translate(-50%,-50%);box-shadow:0 20px 60px #00000040}.tt-modal.tt-modal-wide{width:min(680px,95vw)}.tt-modal.tt-modal-lg{width:min(860px,95vw)}.tt-modal::backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#00000073}.tt-modal-inner{background:var(--card);border-radius:var(--radius,10px);flex-direction:column;max-height:90vh;display:flex;overflow:hidden}.tt-modal-header{border-bottom:1px solid var(--border);flex-shrink:0;align-items:center;gap:.5rem;padding:1rem 1.25rem;display:flex}.tt-modal-header .material-symbols-rounded{font-size:var(--icon-md);color:var(--portal-accent,var(--primary))}.tt-modal-title{font-size:var(--text-title);color:var(--foreground);flex:1;margin:0;font-weight:700}.tt-modal-close,.modal-close{cursor:pointer;width:2rem;height:2rem;color:var(--muted-foreground);background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;transition:background .15s,color .15s;display:flex}.tt-modal-close:hover,.modal-close:hover{background:var(--muted);color:var(--foreground)}.tt-modal-close .material-symbols-rounded,.modal-close .material-symbols-rounded{font-size:var(--icon-sm)}.tt-modal-body{flex:1;padding:1.25rem;overflow-y:auto}.tt-modal-footer{border-top:1px solid var(--border);flex-shrink:0;justify-content:flex-end;gap:.75rem;padding:1rem 1.25rem;display:flex}@media (width<=480px){.tt-modal-footer{padding:.875rem 1rem}.tt-modal-body{padding:1rem}.modal-footer-row{flex-wrap:wrap;gap:.5rem}.modal-footer-hint{flex:none;order:-1;width:100%;margin-bottom:.25rem}.modal-footer-row .btn{font-size:var(--text-sm);flex:1;justify-content:center;padding:.5rem .625rem}}.text-center{text-align:center}.text-primary{color:var(--primary)}.text-muted{color:var(--muted-foreground)}.text-success{color:var(--success)}.text-warning{color:var(--warning)}.text-destructive{color:var(--destructive)}.mb-2{margin-bottom:.5rem}.mb-6{margin-bottom:1.5rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.flex-wrap{flex-wrap:wrap}.resp-grid-2{grid-template-columns:repeat(2,1fr);gap:1rem;display:grid}@media (width<=640px){.resp-grid-2{grid-template-columns:1fr}}.resp-grid-2--tight{gap:.75rem;margin-bottom:1rem}.grid{gap:1.5rem;width:100%;max-width:100%;display:grid}@media (width>=480px){.stats-grid{grid-template-columns:repeat(2,1fr)}}@media (width>=1024px){.stats-grid{grid-template-columns:repeat(4,1fr)}}@media (width<=480px){.stats-card{padding:1rem}.stats-card-value{font-size:var(--text-title)}.stats-card-icon{width:2.5rem;height:2.5rem}.stats-card-content{gap:.5rem}.tabs-trigger{font-size:var(--text-sm);padding:.625rem .75rem}}@media (width<=767px){.table-responsive{background:var(--card);border-radius:0}th,td{padding:.75rem .375rem}td{font-size:var(--text-sm)}}@media (hover:none){tr{-webkit-tap-highlight-color:#0000001a}}@media (width<=767px){.filter-section{flex-direction:column;gap:.75rem}.filter-section select,.filter-section input{width:100%;min-width:100%}}@media (width<=480px){.card-header,.card-content{padding:1rem}}@media (width<=374px){.card-header{flex-wrap:wrap;gap:.5rem;padding:.75rem}.card-content{padding:.75rem}th,td{font-size:var(--text-sm);padding:.5rem .35rem}.btn{font-size:var(--text-sm);padding:.5rem .875rem}}.table-responsive{position:relative}@media (width<=767px){.table-responsive{border-radius:var(--radius-sm,6px);box-shadow:inset -6px 0 8px -6px #00000014}}.tab-group{background:var(--muted);border:1px solid var(--border);border-radius:var(--radius);scrollbar-width:none;gap:.25rem;padding:.3rem;display:flex;overflow-x:auto}.tab-group::-webkit-scrollbar{display:none}.tab-btn{border-radius:calc(var(--radius) - 2px);color:var(--muted-foreground);font-size:var(--text-sm);white-space:nowrap;cursor:pointer;transition:background var(--transition-base), color var(--transition-base);background:0 0;border:none;align-items:center;gap:.5rem;padding:.55rem 1rem;font-weight:600;display:inline-flex}.tab-btn .material-symbols-rounded{font-size:var(--icon-sm);flex-shrink:0}.tab-btn:hover:not(.active){color:var(--foreground)}.tab-btn.active{background:var(--card);color:var(--primary);box-shadow:0 1px 3px #0000001a}.tab-count{border-radius:var(--radius-full);background:var(--destructive-surface);min-width:1.25rem;color:var(--destructive-text);font-size:var(--text-caption);justify-content:center;align-items:center;padding:.05rem .35rem;font-weight:700;line-height:1.4;display:inline-flex}.icon-xs{font-size:var(--icon-xs)}.icon-sm{font-size:var(--icon-sm)}.icon-md{font-size:var(--icon-md)}.icon-lg{font-size:var(--icon-lg)}.icon-xs,.icon-sm,.icon-md,.icon-lg{vertical-align:middle;flex-shrink:0;line-height:1}.badge .material-symbols-rounded{font-size:var(--icon-sm);flex-shrink:0;line-height:1}.row-clickable{cursor:pointer}.row-clickable:hover,.row-clickable:focus-within{background:var(--muted)}.link-button{font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:none;padding:0;display:inline}.link-button:hover{color:var(--portal-accent,var(--primary));text-decoration:underline}.stu-modal-head{border-bottom:1px solid var(--border);align-items:center;gap:.85rem;margin-bottom:1rem;padding-bottom:1rem;display:flex}.stu-modal-av{width:48px;height:48px;font-size:var(--text-body)}.stu-modal-name{font-size:var(--text-body);font-weight:700}.stu-modal-sub{font-size:var(--text-sm);color:var(--muted-foreground)}.stu-modal-head .conduct-badge{margin-left:auto}.stu-modal-grid{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.85rem 1.25rem;margin-bottom:1.25rem;display:grid}.stu-modal-field{flex-direction:column;gap:2px;min-width:0;display:flex}.stu-modal-field-label{font-size:var(--text-caption);color:var(--muted-foreground);text-transform:uppercase;letter-spacing:.04em;font-weight:700}.stu-modal-field-value{font-size:var(--text-body);color:var(--foreground);overflow-wrap:anywhere}.stu-modal-section{font-size:var(--text-body);margin:0 0 .6rem;font-weight:700}.stu-modal-record{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.stu-modal-record-row{border-bottom:1px solid var(--border);align-items:flex-start;gap:.65rem;padding:.6rem 0;display:flex}.stu-modal-record-row:last-child{border-bottom:none}.stu-modal-record-body{min-width:0}.stu-modal-record-title{font-size:var(--text-sm);font-weight:600}.stu-modal-record-meta{font-size:var(--text-caption);color:var(--muted-foreground)}.class-picker{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);flex-wrap:wrap;align-items:flex-end;gap:1rem;margin-bottom:1.25rem;padding:1rem 1.25rem;display:flex}.class-picker-group{flex-direction:column;gap:.3rem;min-width:130px;display:flex}.class-picker-label{font-size:var(--text-caption);color:var(--muted-foreground);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;font-weight:700}.picker-select{min-height:var(--touch-min);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--background);color:var(--foreground);font-family:inherit;font-size:var(--text-sm);cursor:pointer;transition:border-color var(--transition-fast);outline:none;padding:.45rem .75rem;font-weight:500}.picker-select:hover{border-color:var(--border-hover,var(--border))}.picker-select:focus-visible{border-color:var(--portal-accent,var(--primary))}.class-picker-current{font-size:var(--text-body);color:var(--portal-accent,var(--primary));align-self:center;margin-left:auto;font-weight:700}.class-picker-chips{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.class-picker-chip-list{flex-wrap:wrap;gap:.35rem;display:flex}.class-picker-chip{border:1px solid var(--border);border-radius:var(--radius-full);color:var(--foreground);font-family:inherit;font-size:var(--text-sm);cursor:pointer;transition:border-color var(--transition-fast), background var(--transition-fast), color var(--transition-fast);background:0 0;padding:.25rem .7rem;font-weight:600}.class-picker-chip:hover{border-color:var(--portal-accent,var(--primary));color:var(--portal-accent,var(--primary))}.class-picker-chip.active{background:var(--portal-accent,var(--primary));border-color:var(--portal-accent,var(--primary));color:#fff}@media (width<=640px){.class-picker{padding:.85rem 1rem}.class-picker-group{flex:100%;min-width:0}.class-picker-current{align-self:flex-start;margin-left:0}}.welcome-banner{background:var(--portal-accent,var(--primary));color:#fff;border-radius:var(--radius-lg);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.5rem;padding:1.5rem 2rem;display:flex;position:relative;overflow:hidden}.welcome-banner:before{content:"";pointer-events:none;background:linear-gradient(135deg,#ffffff14 0%,#0000001f 100%);position:absolute;inset:0}.welcome-banner-text{flex-direction:column;gap:4px;display:flex;position:relative}.welcome-banner-greeting{font-size:var(--text-display);font-weight:800;line-height:1.2}.welcome-banner-role{font-size:var(--text-sm);opacity:.85}.welcome-banner-extra{font-size:var(--text-sm);opacity:.8;margin-top:4px}.welcome-banner-right{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex;position:relative}.welcome-banner-badge{font-size:var(--text-sm);white-space:nowrap;background:#fff3;border-radius:20px;padding:.5rem 1.1rem;font-weight:600}.welcome-banner-icon{opacity:.7;font-size:2rem!important}.portal-stat-grid{grid-template-columns:repeat(auto-fit,minmax(min(200px,100%),1fr));gap:1rem;margin-bottom:1.5rem;display:grid}.portal-stat-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);transition:box-shadow var(--transition-base);align-items:center;gap:1rem;padding:1.25rem 1.5rem;display:flex}.portal-stat-card:hover{box-shadow:var(--shadow-md)}.portal-stat-icon{background:var(--portal-accent-light,var(--primary-light));width:44px;height:44px;color:var(--portal-accent,var(--primary));border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.portal-stat-icon .material-symbols-rounded{font-size:var(--icon-lg)}.portal-stat-icon.success{background:var(--success-surface);color:var(--success)}.portal-stat-icon.warning{background:var(--warning-surface);color:var(--warning)}.portal-stat-icon.red{background:var(--destructive-surface);color:var(--destructive)}.portal-stat-icon.info{background:var(--info-surface);color:var(--info)}.portal-stat-value{font-size:var(--text-stat);margin-bottom:2px;font-weight:800;line-height:1}.portal-stat-label{font-size:var(--text-sm);color:var(--muted-foreground);font-weight:500}.portal-stat-trend{font-size:var(--text-caption);margin-top:3px}.portal-stat-trend.positive{color:var(--success)}.portal-stat-trend.negative{color:var(--destructive)}@media (width<=640px){.portal-stat-grid{grid-template-columns:repeat(2,1fr);gap:.625rem}.portal-stat-card{gap:.625rem;padding:.75rem}.portal-stat-icon{border-radius:var(--radius-sm);width:34px;height:34px}.portal-stat-icon .material-symbols-rounded{font-size:var(--icon-sm)}.portal-stat-value{font-size:var(--text-title)}.portal-stat-label,.portal-stat-trend{font-size:var(--text-caption)}}@media (width<=380px){.portal-stat-grid{grid-template-columns:repeat(2,1fr)}.portal-stat-value{font-size:var(--text-title)}}.modal-overlay{z-index:var(--z-modal-backdrop);background:#00000080;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.modal-box{background:var(--card);border-radius:14px;width:100%;max-width:560px;max-height:90vh;overflow-y:auto;box-shadow:0 20px 60px #00000040}.modal-box-sm{max-width:520px}.modal-box-lg{max-width:580px}.modal-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:1.25rem 1.5rem;display:flex}.modal-header-left{align-items:center;gap:.625rem;display:flex}.modal-header-left .material-symbols-rounded{font-size:var(--icon-md);color:var(--portal-accent,var(--primary));flex-shrink:0;line-height:1}.modal-title{font-size:var(--text-title);margin:0;font-weight:700}.modal-body{padding:1.5rem}.modal-tabs{border-bottom:1px solid var(--border);padding:.75rem 1.5rem}.modal-footer{border-top:1px solid var(--border);justify-content:flex-end;gap:.625rem;padding:1rem 1.5rem;display:flex}.tag-list{flex-wrap:wrap;gap:.5rem;margin-top:.5rem;display:flex}.tag-chip{font-size:var(--text-sm);background:var(--muted);color:var(--foreground);border-radius:6px;align-items:center;gap:.3rem;padding:3px 8px 3px 10px;font-weight:600;display:inline-flex}.tag-chip-portal{background:var(--primary-light,#003d7a14);color:var(--primary)}.tag-chip-remove{cursor:pointer;color:var(--muted-foreground);background:0 0;border:none;padding:0;display:flex}.tag-chip-remove .material-symbols-rounded{font-size:var(--icon-sm)}.tag-chip-empty{font-size:var(--text-sm);color:var(--muted-foreground);font-style:italic}.settings-block{margin-bottom:1.5rem}.settings-block-label{margin-bottom:.5rem}.settings-block-title{font-weight:600;font-size:var(--text-body);margin:0}.settings-block-desc{font-size:var(--text-sm);color:var(--muted-foreground);margin:.1rem 0 0}.settings-block-input-row{gap:.5rem;display:flex}.settings-info-text{font-size:var(--text-sm);color:var(--muted-foreground)}.settings-border-section{border-top:1px solid var(--border);margin-top:1.25rem;padding-top:1.25rem}.settings-border-title{font-weight:600;font-size:var(--text-body);margin-bottom:1rem}.settings-save-row{padding-top:.75rem}.cloud-save-row{border-top:1px solid var(--border);align-items:center;gap:.375rem;padding-top:.75rem;display:flex}.cloud-save-icon{color:var(--success,#16a34a);font-size:var(--icon-sm)!important}.remove-confirm-text{font-size:var(--text-sm);color:var(--muted-foreground)}.td-italic-muted{color:var(--muted-foreground);font-style:italic;font-size:var(--text-sm)}.coming-soon{text-align:center;color:var(--muted-foreground);padding:2rem}.coming-soon-icon{margin:0 auto .5rem;font-size:2.5rem;display:block}.coming-soon-title{margin:0;font-weight:600}.coming-soon-desc{font-size:var(--text-sm);margin:.25rem 0 0}.mb-0{margin-bottom:0!important}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mt-0{margin-top:0!important}.mt-1-5{margin-top:1.5rem}.ml-auto{margin-left:auto}.modal-confirm{padding:1.5rem}.modal-confirm-title{font-size:var(--text-title);margin:0 0 .5rem}.modal-confirm-desc{color:var(--muted-foreground);font-size:var(--text-sm);margin:0 0 1.25rem}.modal-confirm-actions{justify-content:flex-end;gap:.625rem;display:flex}.btn-destructive{background:var(--destructive)!important;border-color:var(--destructive)!important}.btn-saved{color:var(--success)!important;border-color:var(--success)!important}.btn-left{justify-content:flex-start}.select-xs{font-size:var(--text-caption)!important}.fw-600{font-weight:600}.input-140{width:140px}.flex-1{flex:1;min-width:0}.section-heading{font-size:var(--text-body);margin-bottom:.875rem;font-weight:700}.sec-config-block{background:var(--muted);border-radius:var(--radius-sm);margin-bottom:1.5rem;padding:1rem}.sec-config-block-title{font-weight:700;font-size:var(--text-body);margin:0 0 1rem}.flex-row-gap{align-items:center;gap:.75rem;display:flex}.flex-row-gap-sm{align-items:center;gap:.5rem;display:flex}.flex-wrap-gap-3{flex-wrap:wrap;gap:.75rem;display:flex}.btn-stack{flex-direction:column;gap:.5rem;display:flex}.btn-row{flex-wrap:wrap;gap:.75rem;display:flex}.btn-row-sm{flex-wrap:wrap;gap:.5rem;display:flex}.btn-destructive-outline{color:var(--destructive)!important;border-color:var(--destructive)!important}.tab-count{opacity:.75;font-size:var(--text-sm);margin-left:.35rem}.tab-count-sm{opacity:.7;font-size:var(--text-caption);margin-left:.3rem}.vdivider{background:var(--border);flex-shrink:0;width:1px;height:20px;margin:0 .25rem}.text-warning-bold{color:#f59e0b;font-weight:700}.mt-1{margin-top:1rem}.align-self-center{align-self:center}.notif-list{flex-direction:column;gap:1rem;display:flex}.notif-row{justify-content:space-between;align-items:center;gap:1rem;display:flex}.notif-label{font-weight:500;font-size:var(--text-body)}.notif-desc{font-size:var(--text-sm);color:var(--muted-foreground)}.toggle-wrap{flex-shrink:0;width:44px;height:24px;display:inline-block;position:relative}.toggle-wrap input{opacity:0;width:0;height:0;position:absolute}.toggle-thumb{background:var(--border);cursor:pointer;transition:background var(--transition-base);border-radius:999px;position:absolute;inset:0}.toggle-thumb:before{content:"";width:18px;height:18px;transition:transform var(--transition-base);background:#fff;border-radius:50%;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #00000040}.toggle-wrap input:checked+.toggle-thumb{background:var(--primary)}.toggle-wrap input:checked+.toggle-thumb:before{transform:translate(20px)}.toggle-wrap input:focus-visible+.toggle-thumb{outline:2px solid var(--primary);outline-offset:2px}.toggle-wrap input:disabled+.toggle-thumb{opacity:.5;cursor:not-allowed}.cs-wrap{width:auto;display:inline-block;position:relative}.cs-trigger{cursor:pointer;text-align:left;justify-content:space-between;align-items:center;gap:.5rem;width:100%;min-width:8rem;display:flex}.cs-list{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);z-index:200;min-width:100%;height:180px;max-height:180px;margin:0;padding:.25rem 0;list-style:none;position:absolute;top:calc(100% + 4px);left:0;overflow-y:scroll;box-shadow:0 4px 16px #0000001f}.cs-list--portal{position:fixed;top:auto;left:auto}.cs-item{cursor:pointer;font-size:var(--text-sm);white-space:nowrap;padding:.5rem .75rem;line-height:1.4}.cs-item:hover{background:var(--accent)}.cs-item--selected{background:var(--primary);color:var(--primary-foreground)}.tfa-section{border-top:1px solid var(--border);margin-top:2rem;padding-top:1.5rem}.tfa-title{align-items:center;gap:.4rem;margin:0 0 .25rem;display:flex}.tfa-lead{color:var(--muted-foreground);font-size:var(--text-sm);margin-bottom:1rem}.tfa-error{color:var(--destructive);margin-bottom:1rem}.tfa-row{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.tfa-enabled{color:var(--success);align-items:center;gap:.35rem;font-weight:600;display:inline-flex}.tfa-panel{max-width:360px}.tfa-step{font-size:var(--text-sm);margin-bottom:.5rem}.tfa-step--strong{font-weight:600}.tfa-qr{border-radius:var(--radius-sm);border:1px solid var(--border);background:#fff;padding:8px}.tfa-hint{font-size:var(--text-sm);color:var(--muted-foreground);margin:.5rem 0}.tfa-codes{background:var(--muted);border-radius:var(--radius-sm);grid-template-columns:1fr 1fr;gap:.35rem;margin-bottom:.75rem;padding:.75rem;font-family:monospace;display:grid}.tfa-actions{gap:.5rem}.empty-state{border-radius:var(--radius-lg);border:1px solid var(--border);overflow:hidden;box-shadow:0 2px 12px #0000000f}.empty-state-strip{background:linear-gradient(90deg, var(--primary) 0%, var(--portal-accent,var(--primary)) 100%);height:6px}.empty-state-inner{background:var(--card);text-align:center;flex-direction:column;align-items:center;padding:3.5rem 1.5rem;display:flex}.empty-state-icon{background:var(--primary-light,#e8f2ff);border:3px solid rgba(var(--primary-rgb,0, 61, 122), .12);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:80px;height:80px;margin-bottom:1.25rem;display:flex}.empty-state-icon .material-symbols-rounded{color:var(--primary);font-size:2.2rem}.empty-state-title{font-weight:700;font-size:var(--text-title);margin-bottom:8px}.empty-state-desc{font-size:var(--text-sm);color:var(--muted-foreground);max-width:340px;margin-bottom:1.75rem;line-height:1.6}.empty-state-actions{flex-wrap:wrap;justify-content:center;gap:.75rem;display:flex}.modal-title-icon{color:var(--portal-accent,var(--primary))}.modal-title-icon--admin{color:var(--admin,#4f46e5)}.modal-title-icon--discipline{color:var(--discipline,#7c3aed)}.modal-body--stack{flex-direction:column;gap:.875rem;display:flex}.field-error{color:var(--destructive);font-size:var(--text-caption)}.form-group--flush{margin-bottom:0}.form-group--end{align-items:flex-end;padding-bottom:.5rem;display:flex}.form-check-label{cursor:pointer;font-size:var(--text-sm);align-items:center;gap:.5rem;display:flex}.textarea-resize-v{resize:vertical}.textarea-tall{resize:vertical;min-height:120px}.offline-pill{font-size:var(--text-sm);border-radius:999px;align-items:center;gap:.35rem;padding:.25rem .7rem;font-weight:600;display:inline-flex}.offline-pill .material-symbols-rounded{font-size:var(--icon-sm)}.offline-pill--offline{color:#b45309;background:#f59e0b1f}.offline-pill--syncing{color:#2563eb;background:#2563eb1a}.filter-tabs-bar{flex-wrap:wrap;gap:.375rem;margin-bottom:1rem;display:flex}.filter-tabs-bar--spaced{margin-bottom:1.25rem}.filter-tab{border:1px solid var(--border);border-radius:var(--radius-full,999px);background:var(--card);color:var(--muted-foreground);font-size:var(--text-sm,.8rem);cursor:pointer;transition:background-color var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast);align-items:center;gap:5px;padding:.4rem .875rem;font-family:inherit;font-weight:600;display:inline-flex}.filter-tab:hover:not(.active){background:var(--muted);border-color:var(--border-hover)}.filter-tab.active{background:var(--portal-accent,var(--primary));border-color:var(--portal-accent,var(--primary));color:#fff}.filter-tab .material-symbols-rounded{font-size:var(--icon-sm);flex-shrink:0}.filter-tab .badge{background:var(--muted);color:var(--muted-foreground);border-radius:var(--radius-full,999px);font-size:var(--text-caption,.7rem);margin-left:0;padding:1px 6px}.filter-tab.active .badge{color:#fff;background:#ffffff40}.dt-ellipsis{color:var(--muted-foreground);font-size:var(--text-sm);padding:0 4px}.badge-amber{color:#b45309;font-size:var(--text-caption);background:#f59e0b26;margin-left:4px;padding:1px 7px}.is-clickable{cursor:pointer}.tabs-trigger .tab-icon,.tab-icon{font-size:var(--icon-sm)}.pagination-bar{border-top:1px solid var(--border);background:var(--card);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;padding:.75rem 1rem;display:flex}.pagination-info{font-size:var(--text-sm,.8rem);color:var(--muted-foreground)}.pagination-controls{align-items:center;gap:.25rem;display:flex}.pagination-btn{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--card);width:32px;height:32px;color:var(--foreground);cursor:pointer;transition:background-color var(--transition-fast), border-color var(--transition-fast);justify-content:center;align-items:center;display:flex}.pagination-btn:hover:not(:disabled){background:var(--muted);border-color:var(--border-hover)}.pagination-btn:disabled{opacity:.35;cursor:not-allowed}.pagination-btn .material-symbols-rounded{font-size:var(--icon-sm,1.125rem)}.ann-filter-row{flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:1rem;display:flex}.u-framed-list{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--card);flex-direction:column;display:flex;overflow:hidden}.u-framed-list>*{border-bottom:1px solid var(--border)}.u-framed-list>:last-child{border-bottom:none}.task-del-btn{opacity:0;color:var(--muted-foreground);flex-shrink:0;transition:opacity .15s,color .15s}.dos-task-item:hover .task-del-btn,.dis-task-item:hover .task-del-btn,.task-del-btn:focus-visible{opacity:1}.task-del-btn:hover{color:var(--destructive)}@media (hover:none){.task-del-btn{opacity:1}}.att-mode-btn,.ann-filter-pill,.es-class-chip-btn,.filter-chip,.child-tab,.ann-chip{border:1px solid var(--border);border-radius:var(--radius-full,999px);background:var(--card);color:var(--muted-foreground);font-size:var(--text-sm,.8rem);white-space:nowrap;cursor:pointer;transition:background-color var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast);align-items:center;gap:5px;padding:.4rem .875rem;font-family:inherit;font-weight:500;display:inline-flex}.att-mode-btn:hover:not(.active),.ann-filter-pill:hover:not(.active),.es-class-chip-btn:hover:not(.active),.filter-chip:hover:not(.active),.child-tab:hover:not(.active),.ann-chip:hover:not(.active){background:var(--muted);border-color:var(--border-hover)}.att-mode-btn.active,.ann-filter-pill.active,.es-class-chip-btn.active,.filter-chip.active,.child-tab.active,.ann-chip.active{background:var(--portal-accent,var(--primary));border-color:var(--portal-accent,var(--primary));color:#fff}.ann-chip.urgent.active{background:var(--destructive);border-color:var(--destructive)}.icon-btn,.ann-icon-btn,.es-icon-btn,.es-cal-nav-btn{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--card);width:2rem;height:2rem;color:var(--muted-foreground);cursor:pointer;transition:background-color var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.icon-btn:hover:not(:disabled),.ann-icon-btn:hover:not(:disabled),.es-icon-btn:hover:not(:disabled),.es-cal-nav-btn:hover:not(:disabled){background:var(--portal-accent,var(--primary));border-color:var(--portal-accent,var(--primary));color:#fff}.icon-btn.danger:hover:not(:disabled),.ann-icon-btn.danger:hover:not(:disabled),.es-icon-btn.danger:hover:not(:disabled){background:var(--destructive);border-color:var(--destructive);color:#fff}.icon-btn:disabled,.ann-icon-btn:disabled,.es-icon-btn:disabled,.es-cal-nav-btn:disabled{opacity:.4;cursor:not-allowed}.icon-btn .material-symbols-rounded,.ann-icon-btn .material-symbols-rounded,.es-icon-btn .material-symbols-rounded,.es-cal-nav-btn .material-symbols-rounded{font-size:var(--icon-sm,1rem)}.stat-card,.disc-stat-card,.student-stat-card{background:var(--card);border:1px solid var(--border);border-radius:var(--card-radius,var(--radius-lg));padding:var(--space-5,1.25rem) var(--space-6,1.5rem);align-items:center;gap:var(--space-4,1rem);transition:box-shadow var(--transition-base), border-color var(--transition-base);display:flex}.stat-card:hover,.disc-stat-card:hover,.student-stat-card:hover{box-shadow:var(--shadow-sm);border-color:var(--border-hover)}.empty-note{font-size:var(--text-sm);color:var(--muted-foreground)}.empty-note.padded{padding:1rem}.empty-note.spaced{margin-bottom:.5rem}.notice-banner{border-radius:var(--radius-lg);background:linear-gradient(135deg, var(--primary) 0%, var(--primary-hover) 100%);color:#fff;align-items:center;gap:.85rem;padding:1.25rem 1.5rem;display:flex}.notice-banner .banner-title{font-weight:700;font-size:var(--text-body)}.notice-banner .banner-sub{font-size:var(--text-sm);opacity:.85;margin-top:2px}.notice-banner--split{justify-content:space-between}.notice-banner-icon{opacity:.9;font-size:2rem}.mini-stat{text-align:center;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);min-width:80px;box-shadow:var(--card-shadow);flex:1;padding:.75rem 1rem}.mini-stat-value{font-size:var(--text-display);color:var(--primary);font-weight:800}.mini-stat-label{font-size:var(--text-caption);text-transform:uppercase;letter-spacing:.04em;color:var(--muted-foreground);margin-top:2px;font-weight:600}.list-empty{text-align:center;color:var(--muted-foreground);flex-direction:column;justify-content:center;align-items:center;padding:3rem 1rem;display:flex}.list-empty-icon{opacity:.3;margin-bottom:.75rem;font-size:3rem}.form-actions-bar{z-index:5;border:1px solid var(--border);border-radius:var(--radius);background:var(--card);box-shadow:var(--shadow-md);align-items:center;gap:.75rem;margin-top:1.5rem;padding:.875rem 1rem;display:flex;position:sticky;bottom:0}.form-actions-bar .modal-footer-hint{flex:1}@media (width<=640px){.form-actions-bar{flex-wrap:wrap;gap:.5rem;padding:.75rem}.form-actions-bar .modal-footer-hint{flex-basis:100%}.form-actions-bar .btn{font-size:var(--text-sm);flex:1;justify-content:center;padding:.5rem .625rem}}.quiz-review-q{border:1px solid var(--border);border-radius:var(--radius);background:var(--card);border-left-width:3px;margin-bottom:.75rem;padding:.75rem .875rem}.quiz-review-q.correct{border-left-color:var(--success)}.quiz-review-q.wrong{border-left-color:var(--destructive)}.quiz-review-q-head{align-items:center;gap:.5rem;margin-bottom:.5rem;display:flex}.quiz-review-row{font-size:var(--text-sm);gap:.75rem;padding:.2rem 0;display:flex}.quiz-review-row>span:first-child{flex:0 0 7.5rem}.quiz-review-actions{align-items:center;gap:.5rem;margin-top:.5rem;display:flex}.quiz-review-meta{align-items:center;gap:.75rem;margin-bottom:1rem;display:flex}.stat-bars{flex-direction:column;gap:.4rem;display:flex}.stat-bar-row{font-size:var(--text-sm);align-items:center;gap:.625rem;display:flex}.stat-bar-label{color:var(--muted-foreground);flex:0 0 4.5rem}.stat-bar-track{background:var(--surface-3);border-radius:999px;flex:1;height:.75rem;overflow:hidden}.stat-bar-fill{background:var(--primary);border-radius:999px;min-width:2px;height:100%}.stat-bar-value{text-align:right;flex:0 0 2rem;font-weight:600}.asgn-work-cell{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.u-truncate{text-overflow:ellipsis;white-space:nowrap;max-width:22rem;overflow:hidden}.student-picker,.student-picker-wrap{position:relative}.student-picker-spin{font-size:var(--text-body);color:var(--muted-foreground);animation:1s linear infinite student-picker-spin;position:absolute;top:50%;right:.75rem;transform:translateY(-50%)}@keyframes student-picker-spin{to{transform:translateY(-50%)rotate(360deg)}}@media (prefers-reduced-motion:reduce){.student-picker-spin{animation:none}}.student-picker-menu{z-index:300;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);max-height:260px;margin-top:2px;position:absolute;top:100%;left:0;right:0;overflow-y:auto;box-shadow:0 8px 24px #0000001f}.student-picker-item{border:none;border-bottom:1px solid var(--border);text-align:left;cursor:pointer;background:0 0;align-items:center;gap:.625rem;width:100%;padding:.625rem .875rem;font-family:inherit;display:flex}.student-picker-item:last-child{border-bottom:none}.student-picker-item.active{background:var(--muted)}.student-picker-item:focus-visible{outline:2px solid var(--primary);outline-offset:-2px}.student-picker-av{background:var(--primary);color:#fff;width:2rem;height:2rem;font-size:var(--text-caption);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-weight:700;display:flex}.student-picker-text{flex-direction:column;min-width:0;display:flex}.student-picker-name{font-weight:600;font-size:var(--text-sm);color:var(--foreground)}.student-picker-sub{font-size:var(--text-caption);color:var(--muted-foreground)}.student-picker-empty{font-size:var(--text-sm);color:var(--muted-foreground);margin:0;padding:.75rem .875rem}.form-select-wrap{position:relative}.form-select-btn{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--card);width:100%;font-size:var(--text-sm);cursor:pointer;color:var(--muted-foreground);text-align:left;justify-content:space-between;align-items:center;padding:.5rem .75rem;font-family:inherit;transition:border-color .15s;display:flex}.form-select-btn:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-light,#003d7a1f);outline:none}.form-select-btn:disabled{opacity:.5;cursor:not-allowed}.form-select-btn.has-value{color:var(--foreground)}.form-select-btn .material-symbols-rounded{font-size:var(--icon-sm);color:var(--muted-foreground);flex-shrink:0}.form-select-menu{background:var(--card);border:1px solid var(--border);z-index:300;border-radius:10px;max-height:220px;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow-y:auto;box-shadow:0 8px 24px #0000001f}.form-select-opt{text-align:left;cursor:pointer;width:100%;font-size:var(--text-sm);color:var(--foreground);background:0 0;border:none;padding:.55rem .875rem;font-family:inherit;font-weight:400;display:block}.form-select-opt.active{background:var(--primary);color:#fff;font-weight:600}.form-select-opt:hover:not(.active){background:var(--muted)}.badge-readonly{font-size:var(--text-caption);color:var(--muted-foreground);background:var(--muted);border:1px solid var(--border);border-radius:20px;flex-shrink:0;align-items:center;gap:.3rem;padding:3px 10px;font-weight:600;display:inline-flex}.badge-readonly .material-symbols-rounded{font-size:var(--icon-sm)}@media (width<=640px){.badge-readonly{display:none}}.class-filter{align-items:center;gap:var(--space-2);flex-wrap:wrap;margin-bottom:0;display:flex}.class-filter-select{width:auto;min-width:8rem;padding-top:.45rem;padding-bottom:.45rem}.doc-actions{align-items:center;gap:var(--space-2);flex-shrink:0;margin-bottom:0;display:flex}.doc-actions .material-symbols-rounded{font-size:var(--icon-sm);flex-shrink:0}@media (width<=640px){.doc-actions{flex-wrap:wrap}.class-filter-select{flex:8rem}}.row-list{gap:var(--space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.row-item{align-items:center;gap:var(--space-3);padding:var(--space-3);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2);display:flex}.row-item-button{align-items:center;gap:var(--space-3);min-width:0;font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:none;flex:1;padding:0;display:flex}.row-main{flex-direction:column;flex:1;min-width:0;display:flex}.row-main>*{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.row-figures{align-items:center;gap:var(--space-2);flex-shrink:0;display:flex}.row-actions{gap:var(--space-2);flex-shrink:0;display:flex}.row-avatar,.class-chip,.row-icon{background:var(--primary-surface);color:var(--primary-text);font-size:var(--text-caption);flex-shrink:0;justify-content:center;align-items:center;font-weight:700;display:inline-flex}.row-avatar{border-radius:var(--radius-full,999px);width:2.25rem;height:2.25rem}.class-chip{border-radius:var(--radius);min-width:3rem;padding:.3rem .5rem}.row-icon{border-radius:var(--radius);width:2.25rem;height:2.25rem}.row-icon .material-symbols-rounded{font-size:var(--icon-sm)}td .class-chip{margin-left:4px}.figure-strip{gap:var(--space-3);margin-bottom:var(--space-4);grid-template-columns:repeat(auto-fit,minmax(140px,1fr));display:grid}.figure-strip>div{padding:var(--space-3);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2);flex-direction:column;gap:2px;display:flex}.figure-label{font-size:var(--text-caption);text-transform:uppercase;letter-spacing:.04em;color:var(--muted-foreground);font-weight:700}.amount-owed{color:var(--destructive)}.form-grid{gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(200px,1fr));display:grid}.form-col-full{grid-column:1/-1}.detail-grid{gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(150px,1fr));margin:0;display:grid}.detail-grid dt{font-size:var(--text-caption);text-transform:uppercase;letter-spacing:.04em;color:var(--muted-foreground);font-weight:700}.detail-grid dd{font-size:var(--text-body);margin:0}.pill-ok{background:var(--success-surface,#dcfce7);color:var(--success,#16a34a)}.pill-warn{background:var(--warning-surface,#fef3c7);color:var(--warning,#b45309)}.pill-info{background:var(--primary-surface);color:var(--primary-text)}.pill-danger{background:var(--destructive-surface,#fee2e2);color:var(--destructive)}.pill-muted{background:var(--muted);color:var(--muted-foreground)}.dashboard-layout{width:100vw;height:100vh;display:flex;position:relative;overflow:hidden}.skip-link{background:var(--primary);color:#fff;z-index:var(--z-skip-link);border-radius:0 0 5px 5px;padding:10px 20px;text-decoration:none;transition:top .3s;position:absolute;top:-100px;left:0}.skip-link:focus{top:0}.dashboard-main{margin-left:var(--sidebar-w);width:calc(100% - var(--sidebar-w));flex-direction:column;flex:1;height:100vh;max-height:100vh;transition:margin-left .22s ease-out,width .22s ease-out;display:flex;position:relative;overflow:hidden}.dashboard-content{-webkit-overflow-scrolling:touch;flex-direction:column;flex:auto;gap:2rem;min-height:0;max-height:100%;padding:2rem;display:flex;overflow-x:clip;overflow-y:scroll!important}.dashboard-content::-webkit-scrollbar{background:var(--scrollbar-track);width:12px}.dashboard-content::-webkit-scrollbar-track{background:var(--scrollbar-thumb-border);border:2px solid var(--scrollbar-track-border);border-radius:6px}.dashboard-content::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border:2px solid var(--scrollbar-thumb-border);border-radius:6px}.dashboard-content::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover)}.dashboard-content>*{flex-shrink:0}.dc-inner{background:var(--content-bg);border:1px solid var(--border);border-radius:var(--radius-lg);flex-direction:column;gap:1rem;min-height:100%;padding:1.25rem;display:flex;box-shadow:0 1px 4px #0000000f}@media (width<=767px){.dc-inner{border-radius:var(--radius);gap:.875rem;padding:.875rem}}@media (width<=480px){.dc-inner{border-radius:10px;gap:.75rem;padding:.625rem}}.sidebar.collapsed~.dashboard-main{margin-left:var(--sidebar-w-collapsed);width:calc(100% - var(--sidebar-w-collapsed))}.sidebar-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:calc(var(--z-modal-backdrop) - 10);opacity:0;visibility:hidden;pointer-events:none;transition:opacity var(--transition-base), visibility var(--transition-base);-webkit-tap-highlight-color:transparent;background:#0009;display:none;position:fixed;inset:0}.sidebar-overlay.active{opacity:1;visibility:visible;pointer-events:auto}.sidebar{width:var(--sidebar-w);background:linear-gradient(180deg, var(--sidebar) 0%, #00254d 100%);height:100vh;z-index:var(--z-fixed);box-shadow:var(--shadow-xl);flex-direction:column;transition:width .22s ease-out,transform .22s ease-out;display:flex;position:fixed;top:0;left:0;overflow:hidden}[data-theme=dark] .sidebar{box-shadow:var(--shadow-2xl);background:linear-gradient(#1e293b 0%,#0f172a 100%)}.sidebar.collapsed{width:var(--sidebar-w-collapsed)}.sidebar-logo{border-bottom:1px solid var(--sidebar-border);flex-shrink:0;justify-content:space-between;align-items:center;gap:12px;padding:25px 20px;display:flex;position:relative}.logo-wrapper{align-items:center;gap:12px;display:flex;overflow:hidden}.sidebar-logo-text{white-space:nowrap;transition:opacity var(--transition-slow), width var(--transition-slow);flex-direction:column;gap:1px;display:flex;overflow:hidden}.sidebar-brand-name{color:#fff;font-size:var(--text-title);letter-spacing:-.01em;text-overflow:ellipsis;font-weight:800;line-height:1.2;overflow:hidden}.sidebar-brand-tagline{color:#fff9;font-size:var(--text-caption);text-transform:uppercase;letter-spacing:.1em;font-weight:500}.sidebar-logo-icon{border-radius:var(--radius-full);width:46px;height:46px;box-shadow:var(--shadow-md);transition:transform var(--transition-base);background:#fff;flex-shrink:0;justify-content:center;align-items:center;display:flex}.sidebar-logo-icon:hover{transform:scale(1.05)rotate(5deg)}.sidebar-logo-icon img{object-fit:contain;width:42px;height:42px;padding:2px}.sidebar-logo .toggle{border-radius:var(--radius);width:36px;height:36px;color:var(--foreground);cursor:pointer;background:var(--sidebar-foreground);transition:all var(--transition-base);box-shadow:var(--shadow-sm);border:none;flex-shrink:0;justify-content:center;align-items:center;display:flex;position:absolute;right:20px}.sidebar-logo .toggle:hover{background:var(--sidebar-foreground);color:var(--sidebar);transform:scale(var(--hover-scale))}.sidebar-logo .toggle:active{transform:scale(.95)}.sidebar.collapsed .sidebar-logo{flex-direction:column;justify-content:center;align-items:center;gap:6px;padding:12px 10px}.sidebar-logo .menu-toggle{display:none}.sidebar.collapsed .sidebar-logo-text{opacity:0;width:0}.sidebar-user-profile{border-bottom:1px solid var(--sidebar-border);transition:all var(--transition-slow);background:var(--sidebar-background);cursor:pointer;flex-shrink:0;align-items:center;gap:12px;padding:20px;display:flex}.sidebar-user-profile:hover{background:var(--sidebar-background)}.sidebar-user-avatar{border-radius:var(--radius-sm);background:var(--sidebar-avatar-background);width:48px;height:48px;font-weight:700;font-size:var(--text-title);border:2px solid var(--sidebar-border);box-shadow:var(--shadow-md);font-family:var(--font-heading);flex-shrink:0;justify-content:center;align-items:center;display:flex}.sidebar-user-avatar img{object-fit:cover;border-radius:var(--radius-sm);width:100%;height:100%}.sidebar-user-info{min-width:0;transition:opacity var(--transition-slow), width var(--transition-slow);flex:1;overflow:hidden}.sidebar-user-name{font-size:var(--text-body);color:var(--primary-foreground);white-space:nowrap;text-overflow:ellipsis;font-weight:700;font-family:var(--font-heading);margin:0 0 2px;overflow:hidden}.sidebar-user-role{font-size:var(--text-caption);color:var(--muted-foreground);white-space:nowrap;text-overflow:ellipsis;text-transform:uppercase;letter-spacing:.05em;margin:0;font-weight:500;overflow:hidden}.sidebar.collapsed .sidebar-user-profile{justify-content:center;padding:10px 8px}.sidebar.collapsed .sidebar-user-info{opacity:0;width:0}.sidebar.collapsed .sidebar-user-avatar{width:44px;height:44px;font-size:var(--text-title);border:2px solid #f97316b3;border-radius:50%;box-shadow:0 0 0 3px #f9731626}.sidebar-nav{-webkit-overflow-scrolling:touch;scrollbar-width:none;-ms-overflow-style:none;flex-direction:column;flex:1;padding:.5rem 0;display:flex;overflow:hidden auto}.sidebar-nav::-webkit-scrollbar{width:0;height:0}.sidebar-nav .nav-list{flex-direction:column;gap:4px;padding:0 15px;list-style:none;display:flex}.sidebar-nav-item{font-size:var(--text-sm);border-radius:var(--radius);color:var(--sidebar-foreground);transition:all var(--transition-base);cursor:pointer;white-space:nowrap;min-height:var(--touch-min);text-align:left;background:0 0;border:none;align-items:center;gap:.75rem;width:100%;padding:12px 15px;font-weight:600;text-decoration:none;display:flex;position:relative}.sidebar-nav-item:before{content:"";background:var(--sidebar-primary);width:3px;transition:transform var(--transition-base);position:absolute;top:0;bottom:0;left:0;transform:scaleY(0)}.sidebar-nav-item:hover{color:var(--sidebar-primary-foreground);background-color:#ffffff26;transform:translate(4px)}.sidebar-nav-item.active{background-color:var(--portal-accent-light);color:var(--portal-accent)}.sidebar-nav-item.active:before{transform:scaleY(1)}.sidebar-nav-item svg,.sidebar-nav-item .material-symbols-rounded{width:1.25rem;height:1.25rem;font-size:var(--icon-md);flex-shrink:0}.sidebar-nav-label{transition:opacity var(--transition-slow), width var(--transition-slow)}.sidebar.collapsed .sidebar-nav-item{width:48px;height:44px;min-height:unset;border-radius:var(--radius);background:0 0;justify-content:center;margin:0 auto;padding:0}.sidebar.collapsed .sidebar-nav-item .material-symbols-rounded{font-size:var(--icon-lg);width:1.375rem;height:1.375rem}.sidebar.collapsed .sidebar-nav-item:hover{background:#ffffff2e;transform:none}.sidebar.collapsed .sidebar-nav-item.active{background:var(--portal-accent-light);border-radius:var(--radius)}.sidebar.collapsed .sidebar-nav .nav-list{align-items:center;gap:4px;padding:0 12px}.sidebar.collapsed .sidebar-nav .secondary-nav{padding:0 0 20px}.sidebar.collapsed .sidebar-nav .sidebar-account-group{padding-top:10px}.sidebar-nav .primary-nav{flex:none}.sidebar-nav .sidebar-account-group{border-top:1px solid var(--sidebar-border);margin-top:auto;padding-top:12px}.sidebar-nav .secondary-nav{padding:0 0 30px}.dashboard-header{background:linear-gradient(135deg, var(--sidebar) 0%, #00305e 100%);width:100%;min-height:72px;z-index:var(--z-sticky);border-bottom:1px solid #ffffff14;flex-shrink:0;justify-content:space-between;align-items:center;gap:1.5rem;padding:0 2rem;display:flex;position:sticky;top:0;box-shadow:0 2px 12px #0003}.dashboard-header-title{flex-direction:column;flex-shrink:0;gap:2px;min-width:0;display:flex}.dashboard-header-title h1{font-size:var(--text-title);color:#fff;white-space:nowrap;text-overflow:ellipsis;margin:0;font-weight:700;line-height:1.2;overflow:hidden}.dashboard-header-title p{font-size:var(--text-caption);color:#ffffff8c;white-space:nowrap;text-overflow:ellipsis;letter-spacing:.01em;margin:0;font-weight:400;overflow:hidden}.dashboard-header-actions{flex-wrap:nowrap;align-items:center;gap:.625rem;margin-left:auto;display:flex}.header-user{cursor:default;border-left:1px solid #ffffff2e;align-items:center;gap:.625rem;margin-left:.25rem;padding-left:.875rem;display:flex}.header-user-info{flex-direction:column;align-items:flex-end;gap:1px;display:flex}.header-user-name{font-size:var(--text-sm);color:#fff;white-space:nowrap;font-weight:600;line-height:1.2}.header-user-role{font-size:var(--text-caption);color:#ffffff8c;white-space:nowrap;line-height:1.2}.dashboard-header-actions .lang-menu-trigger{color:#fff;background:#ffffff1f;border-color:#ffffff38}.dashboard-header-actions .lang-menu-trigger:hover:not(:disabled){background:#fff3;border-color:#ffffff59}.dashboard-header-actions .lang-menu-globe,.dashboard-header-actions .lang-menu-caret{color:#ffffffbf}.header-user-av{width:36px;height:36px;font-size:var(--text-caption);color:#fff;letter-spacing:.03em;cursor:pointer;background:#ffffff2e;border:2px solid #ffffff4d;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-weight:700;text-decoration:none;transition:opacity .15s,transform .15s;display:flex}.header-user-av:hover{opacity:.85;transform:scale(var(--hover-scale))}.header-user-av.dos-av{background:#1d6fbf;border-color:#ffffff59}.header-user-av.discipline-av{background:#6d63e8;border-color:#ffffff59}.header-user-av.teacher-av{background:#0891b2;border-color:#ffffff59}.header-user-av.parent-av{background:#059669;border-color:#ffffff59}.header-user-av.student-av{background:#7c3aed;border-color:#ffffff59}.header-user-av.matron-av{background:#b45309;border-color:#ffffff59}.mobile-menu-btn{color:#ffffffd9;cursor:pointer;width:40px;min-width:40px;height:40px;transition:all var(--transition-base);-webkit-tap-highlight-color:transparent;background:#ffffff1a;border:1px solid #ffffff26;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:none}.mobile-menu-btn .material-symbols-rounded{font-size:var(--icon-lg);line-height:1}.mobile-menu-btn:hover{color:#fff;transform:scale(var(--hover-scale));background:#fff3;border-color:#ffffff4d}.mobile-menu-btn:active{transform:scale(.95)}.mobile-menu-btn svg{width:22px;height:22px}.search-box{height:40px;transition:border-color var(--transition-base), background-color var(--transition-base), box-shadow var(--transition-base);background-color:#ffffff14;border:1px solid #ffffff2e;border-radius:999px;align-items:center;gap:8px;width:230px;padding:0 14px;display:none;position:relative;overflow:hidden}.search-box:focus-within{background-color:#ffffff24;border-color:#ffffff59;box-shadow:0 0 0 2px #f973164d}.search-box svg{color:#ffffff8c;width:15px;height:15px;transition:color var(--transition-base);flex-shrink:0}.search-box:focus-within svg{color:#ffffffd9}.search-box input{font-size:var(--text-sm);color:#fff;background:0 0;border:none;outline:none;flex:1;min-width:0;height:100%}.search-box input::placeholder{color:#ffffff73}.search-box:focus-within input::placeholder{color:#fff9}.notification-btn{cursor:pointer;width:40px;height:40px;transition:all var(--transition-base);color:#ffffffd9;background:#ffffff1a;border:1px solid #ffffff26;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex;position:relative}.notification-btn:hover{color:#fff;transform:scale(var(--hover-scale));background:#fff3;border-color:#ffffff4d}.notification-badge{background:var(--accent);color:#fff;min-width:17px;height:17px;font-size:var(--text-caption);border:2px solid var(--sidebar);border-radius:999px;justify-content:center;align-items:center;padding:0 4px;font-weight:700;animation:2s ease-in-out infinite pulse;display:flex;position:absolute;top:-3px;right:-3px}.date-display{font-size:var(--text-caption);color:#fffc;white-space:nowrap;letter-spacing:.01em;background:#ffffff1a;border:1px solid #ffffff26;border-radius:999px;padding:.45rem .875rem;font-weight:500;display:none}@media (width<=1023px){.dashboard-main{width:100%!important;margin-left:0!important}.sidebar{width:280px;max-width:85%;z-index:var(--z-modal);transition:left var(--transition-base);position:fixed;left:-100%}.sidebar.active{left:0}.sidebar-logo .menu-toggle,.mobile-menu-btn{display:flex!important}.dashboard-header{gap:.75rem;min-height:64px;padding:0 1rem}.search-box,.date-display,.dashboard-header-actions .btn{display:none!important}.dashboard-header-actions .notification-btn{display:flex!important}.dashboard-content{gap:1rem;padding:1rem}.sidebar-user-profile{padding:12px 15px}.sidebar-user-avatar{width:44px;height:44px;font-size:var(--text-body)}.sidebar-user-name{font-size:var(--text-sm)}.sidebar-user-role{font-size:var(--text-caption)}}@media (width<=767px){.dashboard-header-title h1{font-size:var(--text-title)}.dashboard-header-title p,.nav-profile-name,.header-user-info{display:none}.header-user{border-left:none;margin-left:0;padding-left:.5rem}.dashboard-header-actions{gap:.375rem}}@media (width<=480px){.dashboard-header{gap:.5rem;padding:0 .75rem}.dashboard-header-title h1{font-size:var(--text-body)}.dashboard-content{gap:.75rem;padding:.75rem}}@media (width<=374px){.dashboard-content{gap:.625rem;padding:.625rem}.dashboard-header{gap:.375rem;padding:0 .625rem}.mobile-menu-btn{width:40px;min-width:40px;height:40px}.header-user-av{width:32px;height:32px;font-size:var(--text-caption)}.notification-btn{width:32px;height:32px}}@media (width>=1024px){.sidebar-overlay,.mobile-menu-btn{display:none}.search-box{display:flex}.date-display{display:block}}@media print{.sidebar,.sidebar-overlay,.mobile-menu-btn,.dashboard-header-actions{display:none}.dashboard-main{width:100%!important;margin-left:0!important}.dashboard-header{box-shadow:none;background:#fff;border-bottom:2px solid #000;position:static}.dashboard-header-title h1,.dashboard-header-title p{color:#000}}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(var(--hover-scale))}}@keyframes slideIn{0%{opacity:0;transform:translate(-100%)}to{opacity:1;transform:translate(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.sidebar-nav-group{font-size:var(--text-caption);letter-spacing:.08em;text-transform:uppercase;color:#ffffff73;white-space:nowrap;transition:padding var(--transition-slow);margin:.75rem 0 .35rem;padding:0 18px;font-weight:700}.sidebar.collapsed .sidebar-nav-group{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.sidebar.collapsed,.sidebar.collapsed .sidebar-nav{overflow:visible}.sidebar.collapsed .sidebar-nav-label{z-index:var(--z-tooltip,1200);border-radius:var(--radius-sm);color:#fff;font-size:var(--text-sm);white-space:nowrap;opacity:0;pointer-events:none;background:#0f2947;padding:.35rem .6rem;font-weight:600;line-height:1.2;transition:opacity .14s,transform .14s;position:absolute;top:50%;left:calc(100% + 12px);transform:translateY(-50%)translate(-4px);box-shadow:0 6px 18px #00000047}.sidebar.collapsed .sidebar-nav-label:before{content:"";border:5px solid #0000;border-right-color:#0f2947;position:absolute;top:50%;right:100%;transform:translateY(-50%)}.sidebar.collapsed .sidebar-nav-item:hover .sidebar-nav-label,.sidebar.collapsed .sidebar-nav-item:focus-visible .sidebar-nav-label{opacity:1;transform:translateY(-50%)translate(0)}@media (prefers-reduced-motion:reduce){.sidebar.collapsed .sidebar-nav-label{transition:none;transform:translateY(-50%)}}.sidebar-toggle{z-index:2;border:1px solid var(--border);background:var(--card);width:26px;height:26px;color:var(--primary);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;padding:0;transition:background .15s,color .15s;display:flex;position:absolute;top:74px;right:-13px;box-shadow:0 2px 6px #0003}.sidebar-toggle:hover{background:var(--surface-3)}.sidebar-toggle .material-symbols-rounded{font-size:var(--icon-sm);transition:transform .22s ease-out}.sidebar.collapsed .sidebar-toggle .material-symbols-rounded{transform:rotate(180deg)}@media (width<=1024px){.sidebar-toggle{display:none}}
