*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.left-0{left:0}.top-0{top:0}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.mt-2{margin-top:.5rem}.mt-6{margin-top:1.5rem}.block{display:block}.flex{display:flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-16{height:4rem}.h-4{height:1rem}.h-full{height:100%}.h-screen{height:100vh}.w-4{width:1rem}.w-\[290px\]{width:290px}.w-full{width:100%}.min-w-0{min-width:0px}.min-w-64{min-width:16rem}.flex-1{flex:1 1 0%}.border-collapse{border-collapse:collapse}.-translate-x-full{--tw-translate-x: -100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.resize{resize:both}.flex-col{flex-direction:column}.items-start{align-items:flex-start}.items-center{align-items:center}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rounded-lg{border-radius:.5rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-slate-200{--tw-border-opacity: 1;border-color:rgb(226 232 240 / var(--tw-border-opacity, 1))}.bg-slate-50{--tw-bg-opacity: 1;background-color:rgb(248 250 252 / var(--tw-bg-opacity, 1))}.bg-slate-950\/40{background-color:#02061766}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-white\/95{background-color:#fffffff2}.p-3{padding:.75rem}.p-4{padding:1rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.pb-5{padding-bottom:1.25rem}.pb-6{padding-bottom:1.5rem}.pt-5{padding-top:1.25rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.text-slate-400{--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity, 1))}.text-slate-500{--tw-text-opacity: 1;color:rgb(100 116 139 / var(--tw-text-opacity, 1))}.text-slate-700{--tw-text-opacity: 1;color:rgb(51 65 85 / var(--tw-text-opacity, 1))}.text-slate-800{--tw-text-opacity: 1;color:rgb(30 41 59 / var(--tw-text-opacity, 1))}.text-slate-900{--tw-text-opacity: 1;color:rgb(15 23 42 / var(--tw-text-opacity, 1))}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-slate-200{--tw-ring-opacity: 1;--tw-ring-color: rgb(226 232 240 / var(--tw-ring-opacity, 1))}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur{--tw-backdrop-blur: blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-300{transition-duration:.3s}*{box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.app-sidebar{min-width:290px;transition:width .3s ease,min-width .3s ease,transform .3s ease,border-color .3s ease}.sidebar-inner{flex:0 0 290px}.sidebar-logo{display:grid;flex:0 0 2.5rem;height:2.5rem;width:2.5rem;place-items:center;border-radius:.5rem;background:#1f62db;color:#fff;font-size:.88rem;font-weight:800;letter-spacing:0}.no-scrollbar{scrollbar-width:none}.no-scrollbar::-webkit-scrollbar{display:none}.nav-section-toggle{display:flex;min-height:2.5rem;width:100%;align-items:center;justify-content:space-between;border-radius:.5rem;padding:.5rem .75rem;color:#1e293b;font-size:.875rem;line-height:1.25rem;font-weight:500;transition:background-color .16s ease,color .16s ease}.nav-section-toggle:hover,.nav-section-toggle.is-open{background:#e2e8f0b8}.nav-section-toggle svg{height:1rem;width:1rem;transition:transform .18s ease}.nav-section-toggle.is-open svg{transform:rotate(180deg)}.nav-section-panel ul{display:flex;flex-direction:column;gap:.75rem;padding:.5rem 1.25rem}@media(min-width:1024px){.app-sidebar.is-collapsed{width:0;min-width:0;overflow:hidden;border-right-color:transparent}}.nav-item{display:flex;min-height:2rem;width:100%;align-items:center;border-radius:.375rem;color:#64748b;font-size:.875rem;line-height:1.25rem;padding:.375rem 0;text-align:left;transition:color .16s ease}.nav-item svg{height:1.15rem;width:1.15rem}.nav-item:hover,.nav-item.active{color:#1f62db}.icon-btn{display:grid;height:2.5rem;width:2.5rem;place-items:center;border-radius:.5rem;color:#475569;transition:background-color .16s ease}.icon-btn:hover{background:#f1f5f9}.icon-btn.danger-action{color:#dc2626}.icon-btn.danger-action:hover{background:#fee2e2}.user-avatar{display:grid;height:2rem;width:2rem;place-items:center;border-radius:999px;background:#1f62db;color:#fff;font-size:.78rem;font-weight:800;letter-spacing:0;box-shadow:inset 0 0 0 1px #ffffff3d,0 6px 14px #1f62db38}.app-header{flex:0 0 4rem;min-height:4rem;height:4rem}.app-header-title{display:grid;align-content:center;min-height:2.5rem}.app-header-title p,.app-header-title h1{line-height:1.2}.icon-btn svg,button svg,.search-box svg{height:1rem;width:1rem}.page{display:none}.active-page{display:block}.metric-card,.panel,.class-card{border:1px solid rgb(226 232 240);border-radius:.5rem;background:#fff;box-shadow:0 10px 30px #1018280d}.metric-card{min-height:8rem;padding:1rem}.metric-card span{display:block;color:#64748b;font-size:.8rem;font-weight:600}.metric-card strong{display:block;margin-top:.7rem;color:#0f172a;font-size:2rem;line-height:1}.metric-card small{display:block;margin-top:.65rem;color:#22c55e;font-size:.78rem}.panel{padding:1rem}.inline-alert{margin-bottom:1rem;border:1px solid rgb(191 219 254);border-radius:.5rem;background:#eff6ff;color:#1e40af;padding:.8rem 1rem;font-size:.9rem;font-weight:700}.inline-alert.error-alert{border-color:#fecaca;background:#fef2f2;color:#b91c1c}.chart-canvas{display:block;width:100%;min-height:19rem}.monthly-chart-canvas{height:9.5rem;min-height:9.5rem}.panel-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1rem}.panel-head h2{font-size:1rem;font-weight:700}.panel-head p{margin-top:.15rem;color:#64748b;font-size:.84rem}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem;margin-bottom:1rem}.table-filters{border-top:1px solid rgb(226 232 240);padding-top:1rem}.search-box,.control,.form-grid input,.form-grid select,.form-grid textarea,.auth-form input{border:1px solid rgb(226 232 240);border-radius:.5rem;background:#fff;color:#0f172a;outline:none}.search-box{display:flex;min-width:min(100%,22rem);align-items:center;gap:.5rem;padding:.65rem .75rem}.search-box input{width:100%;background:transparent;outline:none}.control{min-height:2.5rem;padding:0 .75rem}.primary-btn,.secondary-btn,.text-btn{display:inline-flex;min-height:2.5rem;align-items:center;justify-content:center;gap:.5rem;border-radius:.5rem;padding:0 .875rem;font-size:.875rem;font-weight:600;transition:transform .16s ease,background-color .16s ease}.primary-btn{background:#1f62db;color:#fff}.primary-btn:hover{background:#194fb2}.secondary-btn{border:1px solid rgb(226 232 240);background:#fff;color:#334155}.export-btn-csv{border-color:#cbd5e1;background:#f8fafc;color:#475569}.export-btn-csv:hover{background:#f1f5f9}.export-btn-excel{border-color:#86efac;background:#f0fdf4;color:#166534}.export-btn-excel:hover{background:#dcfce7}.export-btn-pdf{border-color:#fca5a5;background:#fef2f2;color:#b91c1c}.export-btn-pdf:hover{background:#fee2e2}.text-btn{color:#1f62db}.table-actions{display:inline-flex;align-items:center;gap:.5rem}.row-action-btn{min-height:2rem;border-radius:.5rem;padding:0 .75rem;font-size:.78rem;font-weight:700}.send-action{background:#dcfce7;color:#166534}.cancel-action{background:#fee2e2;color:#991b1b}.table-wrap{overflow-x:auto}.table-controls{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem;padding-top:.875rem;color:#64748b;font-size:.84rem}.table-page-size,.table-pagination{display:inline-flex;align-items:center;gap:.625rem}.table-page-size-select{min-height:2.25rem;padding-right:2rem}.table-pagination .icon-btn{height:2.25rem;width:2.25rem;border:1px solid rgb(226 232 240);background:#fff}.table-pagination .icon-btn:disabled{cursor:not-allowed;opacity:.45}.data-table{width:100%;min-width:760px;border-collapse:separate;border-spacing:0;font-size:.875rem}.data-table th{background:#f8fafc;color:#475569;font-size:.72rem;font-weight:700;letter-spacing:0;text-align:left;text-transform:uppercase}.data-table th,.data-table td{border-bottom:1px solid rgb(226 232 240);padding:.875rem;white-space:nowrap}.table-sort{display:inline-flex;align-items:center;gap:.35rem;color:inherit;font:inherit;text-transform:inherit}.table-sort svg{height:.85rem;width:.85rem;opacity:.45}.table-sort.is-active{color:#1f62db}.table-sort.is-active svg{opacity:1}.empty-table{color:#64748b;text-align:center}.badge{display:inline-flex;align-items:center;border-radius:999px;padding:.25rem .6rem;font-size:.75rem;font-weight:700}.badge.ok{background:#dcfce7;color:#166534}.badge.warn{background:#fef9c3;color:#854d0e}.badge.danger{background:#fee2e2;color:#991b1b}.class-card{padding:1rem}.class-card header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.class-card h3{font-weight:700}.class-card p,.class-card li{color:#64748b;font-size:.85rem}.absent-summary{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem;border:1px solid rgb(226 232 240);border-radius:.5rem;background:#f8fafc;margin-bottom:1rem;padding:.9rem 1rem}.absent-summary h3{font-size:.95rem;font-weight:800}.absent-summary p{color:#64748b;font-size:.82rem}.absent-list{flex:1 1 24rem;color:#334155;font-size:.9rem;font-weight:600;line-height:1.5}.calendar-grid{display:grid;grid-template-columns:minmax(9rem,.9fr) repeat(8,minmax(7.25rem,1fr));overflow-x:auto;border:1px solid rgb(226 232 240);border-radius:.5rem}.calendar-corner,.calendar-hour-head,.calendar-class-row,.calendar-cell{min-width:0;border-right:1px solid rgb(226 232 240);border-bottom:1px solid rgb(226 232 240);padding:.75rem}.calendar-corner,.calendar-hour-head{background:#f8fafc;color:#475569;font-size:.75rem;font-weight:800;text-transform:uppercase}.calendar-hour-head,.calendar-class-row{display:flex;align-items:center;color:#475569;font-size:.84rem;font-weight:800}.calendar-cell{min-height:6.25rem;background:#fff;display:grid;align-content:start;gap:.4rem}.calendar-cell.break-row,.calendar-hour-head.break-row{background:#f8fafc;color:#64748b}.calendar-event{display:grid;width:100%;border-left:3px solid rgb(31 98 219);border-radius:.375rem;background:#eef7ff;padding:.5rem;color:inherit;font-size:.68rem;text-align:left;transition:background-color .16s ease,transform .16s ease}.calendar-event:hover{background:#dbeafe;transform:translateY(-1px)}.event-time{margin-bottom:.2rem;color:#2563eb;font-size:.66rem;font-weight:800}.event-line{display:flex;align-items:center;gap:.25rem;line-height:1.25;font-weight:700;white-space:nowrap}.event-line svg{height:.72rem;width:.72rem;flex:0 0 auto}.event-line.absent{color:#b91c1c}.event-line.substitute{color:#166534}.event-line.rol{color:#0f172a}.event-status{justify-self:start;margin-top:.3rem;border-radius:999px;padding:.15rem .45rem;font-size:.62rem;font-weight:800}.event-status.is-confirmed{background:#dcfce7;color:#166534}.event-status.is-pending{background:#fef9c3;color:#854d0e}.date-filter{display:inline-flex;align-items:center;gap:.5rem;color:#475569;font-size:.82rem;font-weight:700}.date-filter input{min-height:2.5rem;border:1px solid rgb(226 232 240);border-radius:.5rem;padding:0 .75rem;color:#0f172a;outline:none}.calendar-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:.5rem}.form-grid{display:grid;gap:.875rem}@media(min-width:768px){.form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.form-grid label,.form-field,.auth-form label{display:grid;gap:.35rem;color:#475569;font-size:.82rem;font-weight:700}.check-row{display:flex;min-height:2.5rem;align-items:center;gap:.5rem;border:1px solid rgb(226 232 240);border-radius:.5rem;padding:.625rem .75rem;color:#334155;font-size:.875rem;font-weight:600}.form-grid .check-row{display:flex;grid-template-columns:none;flex-direction:row;align-items:center;justify-content:flex-start}.check-row span{line-height:1.3}.calendar-template-field{display:grid;gap:.8rem;border:1px solid rgb(226 232 240);border-radius:.75rem;padding:.85rem;background:#f8fafc}.calendar-template-toggle{display:flex;align-items:center;justify-content:space-between;gap:1rem}.calendar-template-toggle>div,.calendar-template-field label{display:grid;gap:.25rem;color:#475569;font-size:.82rem;font-weight:700}.calendar-template-toggle small{color:#64748b;font-size:.78rem;font-weight:600}.switch-control{position:relative;display:inline-flex;width:3rem;height:1.7rem;flex:0 0 auto;align-items:center}.switch-control input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}.switch-control span{width:100%;height:100%;border-radius:999px;background:#cbd5e1;transition:background .2s ease,box-shadow .2s ease}.switch-control span:after{content:"";position:absolute;top:.22rem;left:.22rem;width:1.25rem;height:1.25rem;border-radius:999px;background:#fff;box-shadow:0 1px 4px #0f172a38;transition:transform .2s ease}.switch-control input:checked+span{background:#2563eb}.switch-control input:checked+span:after{transform:translate(1.3rem)}.switch-control input:focus-visible+span{box-shadow:0 0 0 3px #2563eb33}.template-tags{display:flex;flex-wrap:wrap;gap:.45rem}.tag-chip{border-radius:999px;background:#eff6ff;color:#1e40af;padding:.35rem .65rem;font-size:.75rem;font-weight:800}.tag-chip:hover{background:#dbeafe}.field-error{color:#b91c1c;font-size:.78rem;font-weight:700;line-height:1.35}.form-grid input,.form-grid select,.form-grid textarea,.auth-form input{min-height:2.5rem;padding:.625rem .75rem;font-weight:500}.form-grid .check-row input{width:1rem;height:1rem;min-height:1rem;flex:0 0 auto;padding:0;margin:0}.modal-shell{position:fixed;inset:0;z-index:60;display:grid;place-items:center;background:#0f172a6b;padding:1rem}.modal-shell.hidden{display:none}.modal-panel{width:min(100%,760px);max-height:calc(100vh - 2rem);overflow-y:auto;border-radius:.75rem;border:1px solid rgb(226 232 240);background:#fff;box-shadow:0 24px 70px #0f172a38}.modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;border-bottom:1px solid rgb(226 232 240);padding:1.25rem}.modal-head h2{font-size:1.05rem;font-weight:700}.modal-head p{margin-top:.2rem;color:#64748b;font-size:.875rem}.modal-panel .form-grid{padding:1.25rem}.modal-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.75rem}.heatmap{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:.5rem}.teacher-heatmap{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem}.heatmap span,.teacher-heatmap span{display:grid;min-height:4.5rem;place-items:center;border-radius:.5rem;color:#fff;font-size:.82rem;font-weight:700}.teacher-heatmap span{gap:.15rem;text-align:center}.teacher-heatmap strong{display:block;font-size:1.2rem}.empty-state{grid-column:1 / -1;border:1px dashed rgb(203 213 225);border-radius:.5rem;background:#f8fafc;color:#64748b;padding:1rem;text-align:center;font-size:.9rem;font-weight:700}.absence-heatmap strong:after{content:" assenze";font-size:.72rem;font-weight:700}.settings-list{display:grid;gap:.75rem}.settings-form{display:grid;gap:1rem}.settings-form label,.login-image-setting{display:grid;gap:.45rem;color:#475569;font-size:.82rem;font-weight:700}.settings-form input,.settings-form select{min-height:2.75rem;border:1px solid rgb(226 232 240);border-radius:.5rem;background:#fff;padding:.625rem .75rem;color:#0f172a;font-size:.9rem;font-weight:600;outline:none;transition:border-color .16s ease,box-shadow .16s ease}.settings-form input:focus,.settings-form select:focus{border-color:#2563eb;box-shadow:0 0 0 3px #2563eb1f}.login-image-setting small{display:block;margin-top:.15rem;color:#64748b;font-size:.78rem;font-weight:600;line-height:1.4}.login-image-control{display:flex;flex-wrap:wrap;gap:.65rem}.file-upload-btn{position:relative;cursor:pointer}.file-upload-btn input{position:absolute;inset:0;opacity:0;cursor:pointer}.login-image-preview{display:flex;min-height:4.5rem;align-items:center;gap:.75rem;border:1px dashed rgb(203 213 225);border-radius:.5rem;background:#f8fafc;padding:.75rem}.login-image-preview img{height:3rem;width:4rem;flex:0 0 auto;border-radius:.375rem;-o-object-fit:cover;object-fit:cover}.login-image-preview svg{height:1.35rem;width:1.35rem;color:#64748b}.login-image-preview span{min-width:0;overflow-wrap:anywhere;color:#334155;font-size:.82rem;font-weight:700}.settings-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;border-bottom:1px solid rgb(226 232 240);padding:0 0 .75rem}.settings-action{display:inline-flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:.75rem;text-align:right}.settings-action .secondary-btn{min-height:2rem;padding-inline:.7rem}.auth-shell{display:grid;min-height:100vh;background:#fff}.auth-form-pane{position:relative;display:grid;min-height:100vh;padding:1.5rem}.auth-back{position:absolute;left:1.5rem;top:1.5rem;display:inline-flex;align-items:center;gap:.35rem;color:#475569;font-size:.875rem;font-weight:600;transition:color .16s ease}.auth-back:hover{color:#1f62db}.auth-back svg{height:1rem;width:1rem}.auth-form-wrap{display:grid;width:min(100%,28rem);align-self:center;justify-self:center;padding-top:3rem}.auth-form{display:grid;gap:1.35rem}.auth-form h1{color:#0f172a;font-size:2rem;line-height:1.1;font-weight:800}.auth-form p{margin-top:.55rem;color:#475569;font-size:.9rem}.auth-label-text{display:inline-flex;align-items:center;gap:.2rem}.auth-label-text strong{color:#e11d48}.auth-password{position:relative}.auth-password input{width:100%;padding-right:3rem}.auth-password svg{position:absolute;right:1rem;top:50%;height:1rem;width:1rem;transform:translateY(-50%);color:#64748b;pointer-events:none}.auth-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.875rem;color:#475569;font-size:.875rem}.auth-row a{color:#1f62db;font-weight:600}.auth-check{display:inline-flex;align-items:center;gap:.625rem}.auth-check input{height:1.25rem;min-height:0;width:1.25rem;padding:0}.auth-submit{display:inline-flex;min-height:3rem;align-items:center;justify-content:center;gap:.5rem;border-radius:.5rem;background:#4f46e5;color:#fff;font-size:.95rem;font-weight:700;transition:background-color .16s ease}.auth-submit:hover{background:#4338ca}.auth-submit svg{height:1rem;width:1rem}.auth-brand-pane{position:relative;display:none;min-height:100vh;place-items:center;overflow:hidden;background:#141853;background-position:center;background-size:cover;color:#fff;padding:2rem}.auth-brand-pane.has-login-image:before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#0f172a52,#0f172ab8)}.auth-brand-pane.has-login-image .auth-grid{display:none}.auth-brand{position:relative;z-index:1;display:grid;max-width:28rem;justify-items:center;text-align:center}.auth-brand-logo{display:grid;height:3.25rem;width:3.25rem;place-items:center;border-radius:.75rem;background:#4f46e5;box-shadow:0 20px 42px #4f46e55c}.auth-brand-logo svg{height:1.5rem;width:1.5rem}.auth-brand h2{margin-top:1rem;font-size:2rem;line-height:1.1;font-weight:800}.auth-brand p{margin-top:.875rem;color:#cbd5e1;font-size:1rem;line-height:1.6}.auth-grid{position:absolute;left:10%;right:10%;height:11rem;opacity:.18;background-image:linear-gradient(rgba(255,255,255,.28) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.28) 1px,transparent 1px);background-size:2rem 2rem;-webkit-mask-image:radial-gradient(circle,black 0%,transparent 70%);mask-image:radial-gradient(circle,black 0%,transparent 70%)}.auth-grid-top{top:12%}.auth-grid-bottom{bottom:20%}@media(min-width:1024px){.auth-shell{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.auth-brand-pane{display:grid}.auth-form-pane{padding:2rem 4.75rem}.auth-back{left:4.75rem;top:2.75rem}}#toast{position:fixed;right:1rem;bottom:1rem;z-index:60;max-width:min(24rem,calc(100vw - 2rem))}.toast-message{border-radius:.5rem;background:#0f172a;color:#fff;padding:.8rem 1rem;box-shadow:0 10px 30px #1018282e}.hover\:bg-slate-100:hover{--tw-bg-opacity: 1;background-color:rgb(241 245 249 / var(--tw-bg-opacity, 1))}@media(min-width:640px){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:768px){.md\:col-span-2{grid-column:span 2 / span 2}.md\:inline{display:inline}.md\:flex{display:flex}}@media(min-width:1024px){.lg\:static{position:static}.lg\:grid{display:grid}.lg\:hidden{display:none}.lg\:translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lg\:p-6{padding:1.5rem}.lg\:px-6{padding-left:1.5rem;padding-right:1.5rem}}@media(min-width:1280px){.xl\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xl\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.xl\:grid-cols-\[420px_1fr\]{grid-template-columns:420px 1fr}}
