@import "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap";:root{--primary:#0050aa;--primary-container:#006ebe;--secondary:#f04600;--accent-green:#046e00;--accent-green-light:#0a7828;--background:#f8fafc;--surface:#f8fafc;--surface-low:#f1f5f9;--surface-high:#e2e8f0;--surface-lowest:#fff;--on-surface:#0f172a;--on-surface-variant:#475569;--outline-variant:#e2e8f0;--font-family:"Inter", sans-serif;--shadow-color:#0000000a}[data-theme=dark]{--primary:#3b82f6;--primary-container:#2563eb;--secondary:#f97316;--accent-green:#10b981;--accent-green-light:#059669;--background:#0d0e12;--surface:#0d0e12;--surface-low:#15171e;--surface-high:#222530;--surface-lowest:#15171e;--on-surface:#f1f5f9;--on-surface-variant:#94a3b8;--outline-variant:#ffffff0f;--shadow-color:#00000059}[data-theme=midnight]{--primary:#60a5fa;--primary-container:#3b82f6;--secondary:#fb923c;--accent-green:#34d399;--accent-green-light:#10b981;--background:#0b0f19;--surface:#0b0f19;--surface-low:#111827;--surface-high:#1f2937;--surface-lowest:#111827;--on-surface:#f8fafc;--on-surface-variant:#94a3b8;--outline-variant:#ffffff0d;--shadow-color:#00000073}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-family);background-color:var(--background);color:var(--on-surface);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color .25s,color .25s}h1,h2,h3,h4,h5,h6{color:var(--on-surface);font-weight:700}button{cursor:pointer;font-family:var(--font-family);border:none;border-radius:.75rem;font-weight:600;transition:all .2s}.btn-primary{background:var(--primary);color:#fff;box-shadow:0 4px 14px var(--shadow-color);border:1px solid #ffffff1a;padding:.75rem 1.5rem}.btn-primary:hover{background:var(--primary-container);box-shadow:0 6px 20px var(--shadow-color);transform:translateY(-1px)}.mobile-header{display:none}.main-content{width:calc(100% - 260px);margin-left:260px;padding:2rem;transition:all .3s cubic-bezier(.4,0,.2,1)}.main-content.collapsed{width:calc(100% - 80px);margin-left:80px}.main-content.portal-view{padding:0!important}.card{background-color:var(--surface-lowest);box-shadow:0 4px 20px var(--shadow-color);border:1px solid var(--outline-variant);border-radius:1rem;padding:1.5rem;transition:all .2s}.glass{-webkit-backdrop-filter:blur(20px);border:1px solid var(--outline-variant);background:#ffffff0d}.display-lg{font-size:3.5rem;font-weight:800;line-height:1.1}.display-md{font-size:2.75rem;font-weight:800;line-height:1.2}.headline-sm{font-size:1.5rem;font-weight:700}.title-md{font-size:1.125rem;font-weight:600}.body-md{color:var(--on-surface-variant);font-size:.875rem}.label-sm{text-transform:uppercase;letter-spacing:.05em;color:var(--on-surface-variant);font-size:.6875rem;font-weight:700}.modal-overlay{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:1000;background-color:#0006;justify-content:center;align-items:center;padding:2rem;display:flex;position:fixed;inset:0}.modal-content{background:var(--surface-lowest);border-radius:1.5rem;width:100%;max-height:90vh;padding:2.5rem;animation:.3s cubic-bezier(.34,1.56,.64,1) modalScaleIn;position:relative;overflow-y:auto;box-shadow:0 25px 50px -12px #00000040}@keyframes modalScaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.modal-header{justify-content:space-between;align-items:center;margin-bottom:1rem;display:flex}.form-group{flex-direction:column;gap:.5rem;display:flex}.input-field{border:1.5px solid var(--surface-high);background:var(--surface-low);width:100%;color:var(--on-surface);border-radius:.75rem;padding:.875rem 1rem;font-family:inherit;font-size:.9375rem;transition:all .2s}.input-field:focus{border-color:var(--primary);background:var(--surface-lowest);outline:none;box-shadow:0 0 0 4px #0050aa1a}.btn-secondary{background:var(--surface-high);color:var(--on-surface);padding:.75rem 1.5rem}.btn-secondary:hover{background:var(--outline-variant)}.btn-icon{color:var(--on-surface-variant);background:0 0;border-radius:50%;padding:.5rem}.btn-icon:hover{background:var(--surface-low)}@media (width<=1024px){.app{flex-direction:column}.sidebar{width:260px;transform:translate(-100%);box-shadow:10px 0 30px #0000001a}.sidebar.mobile-open{transform:translate(0)}main,.main-content{width:100%!important;margin-left:0!important;padding-top:80px!important}.mobile-header{background:var(--surface-lowest);border-bottom:1px solid var(--surface-high);z-index:900;justify-content:space-between;align-items:center;height:60px;padding:0 1.5rem;position:fixed;top:0;left:0;right:0;display:flex!important}}.desktop-only{display:block}.mobile-only{display:none!important}@media (width<=1024px){.desktop-only{display:none!important}.mobile-only{display:flex!important}.main-content{width:100%!important;margin-left:0!important;padding:80px 1rem 1.5rem!important}.grid-3,.grid-2,.grid-2-equal,.responsive-grid-teacher{grid-template-columns:1fr!important;gap:1rem!important}.display-lg{font-size:2rem}.display-md{font-size:1.5rem}.headline-sm{font-size:1.25rem}}.table-container{-webkit-overflow-scrolling:touch;width:100%;overflow-x:auto}table{border-collapse:collapse;width:100%}.table-container table{border-collapse:separate;border-spacing:0;min-width:600px}.sticky-column{z-index:10;background-color:var(--surface-lowest);border-right:1px solid var(--surface-high);position:sticky;left:0}.sticky-header-column{z-index:20;background-color:var(--surface-low);border-right:1px solid var(--surface-high);position:sticky;left:0}@media (width<=768px){.compact-table td,.compact-table th{font-size:.8rem;padding:.5rem!important}.sticky-column,.sticky-header-column{text-overflow:ellipsis;white-space:nowrap;min-width:120px;max-width:140px;overflow:hidden}.sticky-column p,.sticky-column span{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.sticky-column{box-shadow:2px 0 8px #0000001a}table{min-width:500px}}.grid-3{grid-template-columns:1.5fr 1fr 1fr;gap:1.5rem;display:grid}.grid-2{grid-template-columns:2fr 1fr;gap:1.5rem;display:grid}.grid-2-equal{grid-template-columns:1fr 1fr;gap:1.5rem;display:grid}@media (width<=1024px){.grid-2-equal{grid-template-columns:1fr!important}.portal-container{padding:1rem!important}.stat-grid-mobile{grid-template-columns:1fr!important;gap:1rem!important}.responsive-header{flex-direction:column!important;align-items:flex-start!important;gap:1rem!important}.full-width-mobile{width:100%!important}.responsive-grid-teacher{grid-template-columns:1fr!important}}@media (hover:none) and (pointer:coarse){.btn-primary,.btn-secondary,select,input{min-height:48px}}.table-hint{display:none}@media (width<=768px){.table-hint{color:var(--on-surface-variant);opacity:.7;margin-bottom:.5rem;font-size:.7rem;font-style:italic;display:block}}.animate-spin{animation:1s linear infinite spin}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes pulse{0%{transform:scale(.95);box-shadow:0 0 #22c55eb3}70%{transform:scale(1);box-shadow:0 0 0 10px #22c55e00}to{transform:scale(.95);box-shadow:0 0 #22c55e00}}.grid-4{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1.5rem;display:grid}.card-glass{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffffb3;border:1px solid #ffffff4d}@media (width<=1024px){.grid-4{grid-template-columns:1fr 1fr}}@media (width<=640px){.grid-4,.grid-3,.grid-2{grid-template-columns:1fr!important}}.modal-form-grid{grid-template-columns:1fr 1fr;gap:1rem;display:grid}@media (width<=480px){.modal-form-grid{grid-template-columns:1fr}.main-content{padding:74px .75rem 1rem!important}.card{border-radius:.75rem!important;padding:1rem!important}.modal-content{border-radius:1rem!important;padding:1.25rem!important}.modal-overlay{padding:.5rem!important}.btn-primary,.btn-secondary{padding:.6rem .9rem!important;font-size:.82rem!important}.title-md{font-size:1rem!important}.compact-table td,.compact-table th{padding:.4rem!important;font-size:.75rem!important}}@media (width<=1024px){.app{flex-direction:column!important}.main-content{width:100%!important;margin-left:0!important;padding:80px 1rem 1.5rem!important}.main-content.collapsed{width:100%!important;margin-left:0!important}.main-content.portal-view{padding:80px 0 0!important}.mobile-header{background:var(--surface-lowest);border-bottom:1px solid var(--surface-high);z-index:1000;justify-content:space-between;align-items:center;height:60px;padding:0 1.25rem;position:fixed;top:0;left:0;right:0;box-shadow:0 2px 8px #0000000f;display:flex!important}.grid-3,.grid-2,.grid-2-equal{grid-template-columns:1fr!important;gap:1rem!important}.grid-4{grid-template-columns:1fr 1fr!important;gap:1rem!important}.responsive-grid-teacher,.stat-grid-mobile{grid-template-columns:1fr!important;gap:1rem!important}}@media (width<=640px){.grid-4{grid-template-columns:1fr!important}}@media (width<=1024px){.display-lg{font-size:2rem!important;line-height:1.2!important}.display-md{font-size:1.5rem!important;line-height:1.3!important}.headline-sm{font-size:1.25rem!important}.title-md{font-size:1rem!important}}@media (width<=480px){.display-lg{font-size:1.5rem!important}.display-md{font-size:1.25rem!important}.headline-sm{font-size:1.1rem!important}}@media (width<=768px){.card{border-radius:.75rem!important;padding:1rem!important}}@media (width<=480px){.card{border-radius:.625rem!important;padding:.875rem!important}}.table-container{-webkit-overflow-scrolling:touch;width:100%;margin-bottom:.5rem;overflow-x:auto}.table-container table.table-scroll{min-width:500px}@media (width>=769px){.table-container table.table-scroll{min-width:650px}}.table-hint{color:var(--on-surface-variant);opacity:.7;margin-bottom:.5rem;font-size:.7rem;font-style:italic;display:none}@media (width<=768px){.table-hint{margin-bottom:.35rem;display:block}.compact-table td,.compact-table th{font-size:.78rem;padding:.45rem .4rem!important}.table-container table{table-layout:fixed;border-spacing:0;border-collapse:separate!important}.card .table-container{overflow:auto hidden}.table-container table th:first-child,.table-container table td:first-child{z-index:3;background-color:var(--surface);border-right:1px solid var(--surface-high);width:32%;min-width:90px;max-width:140px;left:0;box-shadow:2px 0 8px #00000014;position:sticky!important}.table-container table thead th:first-child{z-index:5;background-color:var(--surface-high)}.table-container table tbody tr:nth-child(2n) td:first-child{background-color:var(--surface-lowest)}.table-container table th:first-child p,.table-container table td:first-child p,.table-container table th:first-child span,.table-container table td:first-child span{overflow-wrap:break-word;word-break:break-word;max-width:100%}.table-container table th:not(:first-child),.table-container table td:not(:first-child){width:auto;overflow:hidden}.table-container table td[style*="text-align: right"],.table-container table th[style*="text-align: right"],.table-container table td[style*="textAlign: right"],.table-container table th[style*="textAlign: right"]{width:16%;font-size:.78rem}.table-container table td[style*="text-align: center"],.table-container table th[style*="text-align: center"],.table-container table td[style*="textAlign: center"],.table-container table th[style*="textAlign: center"]{width:12%;padding-left:.25rem!important;padding-right:.25rem!important}.sticky-column{z-index:10;background-color:var(--surface-lowest);border-right:1px solid var(--surface-high);text-overflow:ellipsis;white-space:nowrap;min-width:90px;max-width:140px;position:sticky;left:0;overflow:hidden;box-shadow:2px 0 8px #0000001a}.sticky-column p,.sticky-column span{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.sticky-header-column{z-index:20;background-color:var(--surface-low);border-right:1px solid var(--surface-high);position:sticky;left:0}.modal-content{max-height:85vh;border-radius:1.25rem!important;padding:1.5rem!important}.modal-overlay{padding:1rem!important}.modal-form-grid{grid-template-columns:1fr!important}}@media (width<=480px){.modal-content{margin:.5rem;border-radius:1rem!important;padding:1.25rem!important}.modal-overlay{align-items:flex-end!important;padding:.5rem!important}.modal-form-grid{grid-template-columns:1fr}.btn-primary,.btn-secondary{padding:.6rem .9rem!important;font-size:.82rem!important}.input-field{padding:.75rem .875rem!important;font-size:.875rem!important}}@media (hover:none) and (pointer:coarse){.btn-primary,.btn-secondary,select,input,button{min-height:44px}.btn-icon{min-width:44px;min-height:44px}}@media (width<=768px){.btn-group-mobile{flex-wrap:wrap;gap:.5rem;display:flex}.btn-group-mobile>*{flex:auto;min-width:0}.main-content [style*="display: flex"][style*=gap]>button,.main-content [style*="display: flex"][style*=gap]>a{flex-shrink:1;min-width:0}button[class*=btn-icon],button[title=Edit],button[title=Delete],button[title*=edit],button[title*=delete]{padding:.35rem!important}.card>div[style*="display: flex"][style*=border-bottom]{-webkit-overflow-scrolling:touch;overflow-x:auto;flex-wrap:nowrap!important}.card>div[style*="display: flex"][style*=border-bottom] button{white-space:nowrap;flex-shrink:0}.responsive-header{flex-direction:column!important;align-items:flex-start!important;gap:.75rem!important}.full-width-mobile{width:100%!important}.page-header-actions{flex-wrap:wrap;gap:.5rem;width:100%;display:flex}.page-header-actions>*{flex:1;min-width:0}.search-filter-bar{flex-direction:column!important;gap:.75rem!important}.search-filter-bar input,.search-filter-bar select{width:100%!important}}@media (width<=640px){.stat-card{padding:1rem!important}.stat-card .stat-value{font-size:1.5rem!important}.stat-card .stat-label{font-size:.75rem!important}}@media (width<=768px){.attendance-page table:not(.attendance-table){table-layout:fixed;border-spacing:0;border-collapse:separate!important;width:auto!important;max-width:none!important}.attendance-page table:not(.attendance-table) th:first-child,.attendance-page table:not(.attendance-table) td:first-child{z-index:3;background-color:var(--surface);border-right:1px solid var(--surface-high);width:130px;left:0;box-shadow:2px 0 8px #00000014;min-width:120px!important;max-width:180px!important;position:sticky!important}.attendance-page table:not(.attendance-table) thead th:first-child{z-index:5;background-color:var(--surface-high)}.attendance-page table:not(.attendance-table) tbody tr:nth-child(2n) td:first-child{background-color:var(--surface-lowest)}.attendance-page table:not(.attendance-table) td:first-child p{overflow-wrap:break-word;word-break:break-word}.attendance-page table:not(.attendance-table) th:not(:first-child){width:auto;min-width:38px;font-size:.7rem;padding:.4rem .25rem!important}.attendance-page table:not(.attendance-table) td:not(:first-child){padding:.35rem .25rem!important}.attendance-page table:not(.attendance-table) td:not(:first-child) div{width:14px!important;height:14px!important}.attendance-page table:not(.attendance-table) th.weekend-col{min-width:26px;color:var(--on-surface-variant);font-size:.6rem;padding:.4rem .2rem!important}.attendance-page table:not(.attendance-table) td.weekend-col{background-color:#8080800d;padding:.35rem .15rem!important}.attendance-page table:not(.attendance-table) td.weekend-col div{width:11px!important;height:11px!important}.attendance-page table:not(.attendance-table) th:last-child,.attendance-page table:not(.attendance-table) th:nth-last-child(2),.attendance-page table:not(.attendance-table) td:last-child,.attendance-page table:not(.attendance-table) td:nth-last-child(2){min-width:55px!important;padding-left:.5rem!important;padding-right:.5rem!important}.attendance-page,.attendance-filters{padding:1rem!important}.attendance-summary{grid-template-columns:repeat(2,1fr)!important;gap:.5rem!important}.attendance-table{table-layout:fixed;border-spacing:0;border-collapse:separate!important}.attendance-table td{overflow:hidden;padding:.55rem .5rem!important}.attendance-table th{padding:.55rem .5rem!important}.attendance-table th:first-child,.attendance-table td:first-child{z-index:3;background-color:var(--surface);border-right:1px solid var(--surface-high);width:32%;min-width:90px;max-width:130px;left:0;box-shadow:2px 0 8px #00000014;padding-right:.4rem!important;position:sticky!important}.attendance-table thead th:first-child{z-index:5;background-color:var(--surface-high)}.attendance-table tbody tr:nth-child(2n) td:first-child{background-color:var(--surface-lowest)}.attendance-table .student-name{overflow-wrap:break-word;word-break:break-word;text-overflow:clip!important;white-space:normal!important;max-width:120px!important;font-size:.8rem!important;overflow:visible!important}.attendance-table .student-id{display:none!important}.attendance-table input[type=radio]{width:16px!important;height:16px!important}.attendance-table td:last-child span{text-overflow:ellipsis;white-space:nowrap;max-width:70px;display:inline-block;overflow:hidden;padding:.2rem .4rem!important;font-size:.65rem!important}}@media (width<=480px){.attendance-page{padding:.75rem!important}.attendance-summary{grid-template-columns:repeat(2,1fr)!important;gap:.4rem!important}.attendance-table td{padding:.5rem!important}.attendance-table .student-name{max-width:80px!important;font-size:.75rem!important}.attendance-table input[type=radio]{width:14px!important;height:14px!important}}@media (width<=1024px){.teacher-dashboard .responsive-grid-teacher{grid-template-columns:1fr!important;gap:1rem!important}.teacher-dashboard .assigned-classes-grid{grid-template-columns:repeat(auto-fit,minmax(160px,1fr))!important;gap:.75rem!important}.teacher-dashboard header{margin-bottom:1rem!important;padding:.75rem!important}}@media (width<=768px){.teacher-dashboard .assigned-classes-grid{grid-template-columns:repeat(2,1fr)!important;gap:.6rem!important}.teacher-dashboard .mark-entry-area{padding:.75rem!important}.teacher-dashboard .tab-navigation{flex-wrap:wrap!important;gap:.35rem!important;padding-bottom:.25rem!important;overflow-x:hidden!important}.teacher-dashboard .tab-navigation button{white-space:nowrap!important;flex-shrink:0!important;padding:.4rem .65rem!important;font-size:.75rem!important}.teacher-dashboard .responsive-header .full-width-mobile+.responsive-header{width:100%!important}.teacher-dashboard .responsive-header .full-width-mobile+.responsive-header button,.teacher-dashboard .responsive-header .full-width-mobile+.responsive-header a{width:100%!important;margin-bottom:.35rem!important}.teacher-dashboard .mark-entry-area table{table-layout:fixed!important;width:100%!important}.teacher-dashboard .mark-entry-area table th:first-child,.teacher-dashboard .mark-entry-area table td:first-child{width:30%!important;min-width:80px!important;max-width:110px!important;box-shadow:none!important;border-right:none!important;position:static!important}.teacher-dashboard .mark-entry-area table th:not(:first-child),.teacher-dashboard .mark-entry-area table td:not(:first-child){width:23%!important}.teacher-dashboard .restrict-scroll table{table-layout:fixed!important;width:100%!important}.teacher-dashboard .restrict-scroll table th:first-child,.teacher-dashboard .restrict-scroll table td:first-child{width:42%!important;min-width:90px!important;max-width:130px!important;box-shadow:none!important;border-right:none!important;position:static!important}.teacher-dashboard .table-hint{display:none!important}.teacher-dashboard .attendance-checkbox label{font-size:.78rem!important}.teacher-dashboard .attendance-checkbox input[type=checkbox]{width:15px!important;height:15px!important}.teacher-dashboard .mark-entry-area table td input[type=number]{width:48px!important;font-size:.78rem!important}}@media (width<=480px){.teacher-dashboard .assigned-classes-grid{grid-template-columns:1fr!important}.teacher-dashboard .tab-navigation button{padding:.35rem .55rem!important;font-size:.7rem!important}}@media (width<=1024px){.portal-container{padding:1rem!important}.portal-header{flex-direction:column!important;gap:.75rem!important}}@media (width<=768px){.settings-section{padding:1rem!important}.settings-row{flex-direction:column!important;gap:.5rem!important}}@media (width<=480px){.mobile-stack{flex-direction:column!important;align-items:stretch!important}.mobile-full{width:100%!important}.mobile-hide{display:none!important}.mobile-show{display:block!important}}@media (width<=768px){.canteen-grid,.kanban-columns{grid-template-columns:1fr!important}.card table:not(.attendance-table),div[class*=card]>div[style*=overflow] table{table-layout:fixed;border-spacing:0;border-collapse:separate!important}.card table:not(.attendance-table) th:first-child,.card table:not(.attendance-table) td:first-child,div[class*=card]>div[style*=overflow] table th:first-child,div[class*=card]>div[style*=overflow] table td:first-child{z-index:3;background-color:var(--surface);border-right:1px solid var(--surface-high);width:32%;min-width:90px;max-width:140px;left:0;box-shadow:2px 0 8px #00000014;position:sticky!important}.card table:not(.attendance-table) thead th:first-child,div[class*=card]>div[style*=overflow] table thead th:first-child{z-index:5;background-color:var(--surface-high)}.card table:not(.attendance-table) tbody tr:nth-child(2n) td:first-child,div[class*=card]>div[style*=overflow] table tbody tr:nth-child(2n) td:first-child{background-color:var(--surface-lowest)}.card table:not(.attendance-table) th:first-child p,.card table:not(.attendance-table) td:first-child p,div[class*=card]>div[style*=overflow] table th:first-child p,div[class*=card]>div[style*=overflow] table td:first-child p{overflow-wrap:break-word;word-break:break-word;max-width:100%}table th[style*=sticky],table td[style*=sticky]{width:110px!important;min-width:90px!important;max-width:120px!important}table th[style*=sticky] p,table td[style*=sticky] p{overflow-wrap:break-word;word-break:break-word;max-width:100%}}@media (width<=480px){.table-container table th:first-child,.table-container table td:first-child,.card table th:first-child,.card table td:first-child,.attendance-table th:first-child,.attendance-table td:first-child,.card table:not(.attendance-table) th:first-child,.card table:not(.attendance-table) td:first-child{width:28%;min-width:75px;max-width:110px}.attendance-page table:not(.attendance-table) th:first-child,.attendance-page table:not(.attendance-table) td:first-child{width:100px;min-width:90px!important;max-width:140px!important}.attendance-page table:not(.attendance-table) th:not(:first-child){min-width:30px;font-size:.6rem;padding:.3rem .15rem!important}.attendance-page table:not(.attendance-table) td:not(:first-child){padding:.25rem .15rem!important}.attendance-page table:not(.attendance-table) td:not(:first-child) div{width:11px!important;height:11px!important}.attendance-page table:not(.attendance-table) th.weekend-col{min-width:20px;color:var(--on-surface-variant);font-size:.55rem;padding:.3rem .12rem!important}.attendance-page table:not(.attendance-table) td.weekend-col{padding:.25rem .1rem!important}.attendance-page table:not(.attendance-table) td.weekend-col div{width:8px!important;height:8px!important}.attendance-page table:not(.attendance-table) th:last-child,.attendance-page table:not(.attendance-table) th:nth-last-child(2),.attendance-page table:not(.attendance-table) td:last-child,.attendance-page table:not(.attendance-table) td:nth-last-child(2){font-size:.65rem;min-width:42px!important}.table-container table td,.card table td,.attendance-table td{padding:.35rem .3rem!important;font-size:.7rem!important}.table-container table th,.card table th,.attendance-table th{padding:.35rem .3rem!important;font-size:.65rem!important}.student-id,td[style*="font-size: 0.75rem"],td[style*="fontSize: 0.75rem"]{display:none!important}.table-container table td span[style*=border-radius],.card table td span[style*=border-radius]{padding:.15rem .35rem!important;font-size:.6rem!important}}@media (width<=1024px){.sidebar{z-index:1100!important;width:280px!important;height:100vh!important;box-shadow:none!important;transition:transform .3s cubic-bezier(.4,0,.2,1)!important;position:fixed!important;top:0!important;left:0!important;overflow:hidden auto!important;transform:translate(-100%)!important}.sidebar.mobile-open{transform:translate(0)!important;box-shadow:4px 0 30px #00000026!important}.sidebar-backdrop{-webkit-backdrop-filter:blur(4px);z-index:1050;opacity:0;background:#0006;transition:opacity .3s;display:none;position:fixed;inset:0}.sidebar-backdrop.visible{opacity:1;display:block}.sidebar .desktop-only{display:none!important}.sidebar nav{opacity:1!important}}@media (hover:none) and (pointer:coarse){.sidebar [style*="cursor: pointer"]{min-height:44px}}.pm-page{max-width:1400px;margin:0 auto;padding:2rem}.pm-header{margin-bottom:2rem}.pm-header h2{background:linear-gradient(135deg, var(--primary), var(--tertiary));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text}.pm-header p{max-width:600px;color:var(--on-surface-variant);margin-top:.5rem}.pm-tabs{background:var(--surface-low);border-radius:1rem;flex-wrap:wrap;gap:.5rem;margin-bottom:2rem;padding:.35rem;display:flex}.pm-tab{cursor:pointer;color:var(--on-surface-variant);background:0 0;border:none;border-radius:.75rem;align-items:center;gap:.5rem;padding:.7rem 1.2rem;font-size:.85rem;font-weight:600;transition:all .25s;display:flex}.pm-tab:hover{background:var(--surface-high)}.pm-tab.active{background:var(--primary);color:#fff;box-shadow:0 2px 8px rgba(var(--primary-rgb,0,0,0), .3)}.pm-grid{grid-template-columns:380px 1fr;align-items:start;gap:2rem;display:grid}@media (width<=900px){.pm-grid{grid-template-columns:1fr}}.pm-form{background:var(--surface);border:1px solid var(--outline-variant);border-radius:1rem;flex-direction:column;gap:1.1rem;padding:1.5rem;display:flex}.pm-form h3{align-items:center;gap:.5rem;margin:0;font-size:1rem;font-weight:700;display:flex}.pm-form h3 svg{color:var(--primary)}.pm-field{flex-direction:column;gap:.3rem;display:flex}.pm-field label{text-transform:uppercase;letter-spacing:.5px;color:var(--on-surface-variant);font-size:.72rem;font-weight:700}.pm-input,.pm-select,.pm-textarea{border:1.5px solid var(--outline-variant);background:var(--surface-lowest);width:100%;color:var(--on-surface);border-radius:.65rem;padding:.65rem .85rem;font-family:inherit;font-size:.85rem;transition:border-color .2s}.pm-input:focus,.pm-select:focus,.pm-textarea:focus{border-color:var(--primary);outline:none}.pm-textarea{resize:vertical;min-height:80px}.pm-row{grid-template-columns:1fr 1fr;gap:.75rem;display:grid}.pm-submit{background:var(--primary);color:#fff;cursor:pointer;border:none;border-radius:.75rem;justify-content:center;align-items:center;gap:.5rem;padding:.7rem 1rem;font-size:.85rem;font-weight:700;transition:all .2s;display:flex}.pm-submit:hover{filter:brightness(1.1);transform:translateY(-1px)}.pm-list{flex-direction:column;gap:1rem;display:flex}.pm-list-title{align-items:center;gap:.5rem;margin:0;font-size:1rem;font-weight:700;display:flex}.pm-list-count{background:var(--primary-container);color:var(--on-primary-container);border-radius:1rem;padding:.15rem .5rem;font-size:.7rem;font-weight:800}.pm-item{background:var(--surface);border:1px solid var(--outline-variant);border-radius:.85rem;flex-direction:column;gap:.5rem;padding:1.1rem;transition:all .2s;display:flex;position:relative}.pm-item:hover{border-color:var(--primary);box-shadow:0 2px 12px #0000000f}.pm-item-accent{border-radius:4px 0 0 4px;width:4px;position:absolute;top:0;bottom:0;left:0}.pm-item-accent.notice{background:var(--primary)}.pm-item-accent.timetable{background:var(--secondary,#6366f1)}.pm-item-accent.assignment{background:var(--tertiary)}.pm-item-accent.merit{background:#16a34a}.pm-item-accent.demerit{background:#dc2626}.pm-item-header{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.pm-badge{text-transform:uppercase;letter-spacing:.3px;border-radius:.5rem;padding:.18rem .5rem;font-size:.62rem;font-weight:800}.pm-badge-primary{background:var(--primary-container);color:var(--on-primary-container)}.pm-badge-tertiary{background:var(--tertiary-container);color:var(--on-tertiary-container)}.pm-badge-surface{background:var(--surface-high);color:var(--on-surface)}.pm-badge-success{color:#16a34a;background:#16a34a1f}.pm-badge-error{color:#dc2626;background:#dc26261f}.pm-date{color:var(--on-surface-variant);font-size:.7rem}.pm-item-title{margin:0;padding-right:2rem;font-size:.9rem;font-weight:700}.pm-item-body{color:var(--on-surface-variant);white-space:pre-wrap;margin:0;font-size:.82rem;line-height:1.5}.pm-item-meta{color:var(--on-surface-variant);font-size:.72rem;font-weight:600}.pm-delete{color:var(--on-surface-variant);cursor:pointer;background:0 0;border:none;border-radius:.5rem;padding:.35rem;transition:all .15s;position:absolute;top:.85rem;right:.85rem}.pm-delete:hover{color:#dc2626;background:#dc26261a}.pm-empty{text-align:center;background:var(--surface);border:1px dashed var(--outline-variant);border-radius:1rem;padding:3rem 2rem}.pm-empty svg{color:var(--on-surface-variant);opacity:.35;margin-bottom:.75rem}.pm-empty p{color:var(--on-surface-variant);margin:0;font-size:.85rem}.pm-upload-zone{border:2px dashed var(--outline-variant);text-align:center;cursor:pointer;background:var(--surface-lowest);border-radius:.75rem;padding:1rem;transition:all .25s;position:relative}.pm-upload-zone:hover{border-color:var(--primary);background:var(--surface-low)}.pm-upload-zone.has-file{border-color:var(--primary);background:var(--primary-container);border-style:solid}.pm-upload-zone input[type=file]{opacity:0;cursor:pointer;position:absolute;inset:0}.pm-upload-zone p{color:var(--on-surface-variant);margin:0;font-size:.78rem}.pm-upload-zone .pm-upload-icon{color:var(--primary);margin-bottom:.25rem}.pm-file-name{color:var(--primary);word-break:break-all;margin-top:.25rem;font-size:.75rem;font-weight:700}.pm-file-remove{color:var(--error);cursor:pointer;background:0 0;border:none;margin-top:.25rem;font-size:.7rem;text-decoration:underline}.pm-attachment{color:var(--primary);cursor:pointer;background:var(--primary-container);border:none;border-radius:.5rem;align-items:center;gap:.35rem;padding:.25rem .5rem;font-size:.72rem;font-weight:600;transition:all .15s;display:inline-flex}.pm-attachment:hover{filter:brightness(.95)}.pm-preview-overlay{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:10000;background:#000000b3;justify-content:center;align-items:center;animation:.2s pmFadeIn;display:flex;position:fixed;inset:0}@keyframes pmFadeIn{0%{opacity:0}to{opacity:1}}.pm-preview-modal{background:var(--surface);border-radius:1rem;flex-direction:column;width:95%;max-width:900px;max-height:90vh;display:flex;overflow:hidden;box-shadow:0 20px 60px #0000004d}.pm-preview-header{border-bottom:1px solid var(--outline-variant);justify-content:space-between;align-items:center;padding:1rem 1.25rem;display:flex}.pm-preview-header h3{margin:0;font-size:.95rem;font-weight:700}.pm-preview-actions{gap:.5rem;display:flex}.pm-preview-btn{border:1px solid var(--outline-variant);background:var(--surface-low);color:var(--on-surface);cursor:pointer;border-radius:.5rem;align-items:center;gap:.35rem;padding:.45rem .85rem;font-size:.75rem;font-weight:600;transition:all .15s;display:flex}.pm-preview-btn:hover{background:var(--primary);color:#fff;border-color:var(--primary)}.pm-preview-close{color:var(--on-surface-variant);cursor:pointer;background:0 0;border:none;border-radius:.5rem;padding:.4rem}.pm-preview-close:hover{background:var(--surface-high)}.pm-preview-body{background:var(--surface-lowest);flex:1;justify-content:center;align-items:center;min-height:400px;padding:1rem;display:flex;overflow:auto}.pm-preview-body img{object-fit:contain;border-radius:.5rem;max-width:100%;max-height:70vh}.pm-preview-body iframe{border:none;border-radius:.5rem;width:100%;height:70vh}.pm-search-results{border:1px solid var(--outline-variant);background:var(--surface);border-radius:.65rem;margin-top:.35rem;overflow:hidden}.pm-search-item{cursor:pointer;border-bottom:1px solid var(--outline-variant);padding:.55rem .85rem;font-size:.8rem;transition:background .15s}.pm-search-item:last-child{border-bottom:none}.pm-search-item:hover{background:var(--surface-high)}.pm-toast{color:#fff;z-index:10001;border-radius:.75rem;align-items:center;gap:.5rem;padding:.75rem 1.25rem;font-size:.82rem;font-weight:600;animation:.3s pmSlideIn;display:flex;position:fixed;top:20px;right:20px;box-shadow:0 4px 20px #0003}.pm-toast.success{background:linear-gradient(135deg,#16a34a,#22c55e)}.pm-toast.error{background:linear-gradient(135deg,#dc2626,#ef4444)}@keyframes pmSlideIn{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}.pm-tt-row{background:var(--surface-low);border-radius:.65rem;justify-content:space-between;align-items:center;padding:.65rem .85rem;transition:background .15s;display:flex}.pm-tt-row:hover{background:var(--surface-high)}.pm-tt-info{align-items:center;gap:.75rem;display:flex}.pm-tt-time{color:var(--on-surface-variant);align-items:center;gap:.25rem;font-size:.75rem;display:flex}
