@import"https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Sora:wght@500;600;700;800&display=swap";*,: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]{display:none}*,: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: }.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.visible{visibility:visible}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.bottom-4{bottom:1rem}.left-2{left:.5rem}.right-0{right:0}.right-2{right:.5rem}.right-4{right:1rem}.top-0{top:0}.top-2{top:.5rem}.top-6{top:1.5rem}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.col-span-2{grid-column:span 2 / span 2}.col-span-3{grid-column:span 3 / span 3}.col-span-4{grid-column:span 4 / span 4}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-auto{margin-left:auto;margin-right:auto}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-3{margin-left:.75rem}.ml-auto{margin-left:auto}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.line-clamp-1{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.aspect-square{aspect-ratio:1 / 1}.aspect-video{aspect-ratio:16 / 9}.h-10{height:2.5rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-2{height:.5rem}.h-3{height:.75rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-full{height:100%}.h-screen{height:100vh}.max-h-32{max-height:8rem}.max-h-40{max-height:10rem}.min-h-screen{min-height:100vh}.w-10{width:2.5rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-2{width:.5rem}.w-3{width:.75rem}.w-32{width:8rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-56{width:14rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-80{width:20rem}.w-9{width:2.25rem}.w-\[860px\]{width:860px}.w-full{width:100%}.w-px{width:1px}.max-w-3xl{max-width:48rem}.max-w-5xl{max-width:64rem}.max-w-6xl{max-width:72rem}.max-w-7xl{max-width:80rem}.max-w-\[95\%\]{max-width:95%}.flex-1{flex:1 1 0%}.grow{flex-grow:1}.rotate-90{--tw-rotate: 90deg;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))}.transform{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))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.resize{resize:both}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-\[280px_1fr_320px\]{grid-template-columns:280px 1fr 320px}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.justify-end{justify-content:flex-end}.gap-0{gap:0px}.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))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-slate-200\/60>:not([hidden])~:not([hidden]){border-color:#e2e8f099}.self-start{align-self:flex-start}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-3xl{border-radius:1.5rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-amber-100{--tw-border-opacity: 1;border-color:rgb(254 243 199 / var(--tw-border-opacity))}.border-amber-200{--tw-border-opacity: 1;border-color:rgb(253 230 138 / var(--tw-border-opacity))}.border-blue-200{--tw-border-opacity: 1;border-color:rgb(191 219 254 / var(--tw-border-opacity))}.border-blue-500{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity))}.border-blue-600{--tw-border-opacity: 1;border-color:rgb(37 99 235 / var(--tw-border-opacity))}.border-emerald-100{--tw-border-opacity: 1;border-color:rgb(209 250 229 / var(--tw-border-opacity))}.border-emerald-200{--tw-border-opacity: 1;border-color:rgb(167 243 208 / var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.border-green-500{--tw-border-opacity: 1;border-color:rgb(34 197 94 / var(--tw-border-opacity))}.border-indigo-100{--tw-border-opacity: 1;border-color:rgb(224 231 255 / var(--tw-border-opacity))}.border-indigo-200{--tw-border-opacity: 1;border-color:rgb(199 210 254 / var(--tw-border-opacity))}.border-red-100{--tw-border-opacity: 1;border-color:rgb(254 226 226 / var(--tw-border-opacity))}.border-red-200{--tw-border-opacity: 1;border-color:rgb(254 202 202 / var(--tw-border-opacity))}.border-red-500{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity))}.border-sky-100{--tw-border-opacity: 1;border-color:rgb(224 242 254 / var(--tw-border-opacity))}.border-sky-200{--tw-border-opacity: 1;border-color:rgb(186 230 253 / var(--tw-border-opacity))}.border-slate-200{--tw-border-opacity: 1;border-color:rgb(226 232 240 / var(--tw-border-opacity))}.border-slate-200\/60{border-color:#e2e8f099}.border-white\/10{border-color:#ffffff1a}.border-white\/60{border-color:#fff9}.border-yellow-100{--tw-border-opacity: 1;border-color:rgb(254 249 195 / var(--tw-border-opacity))}.border-yellow-200{--tw-border-opacity: 1;border-color:rgb(254 240 138 / var(--tw-border-opacity))}.bg-amber-50{--tw-bg-opacity: 1;background-color:rgb(255 251 235 / var(--tw-bg-opacity))}.bg-black\/70{background-color:#000000b3}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity))}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity))}.bg-emerald-50{--tw-bg-opacity: 1;background-color:rgb(236 253 245 / var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.bg-gray-300{--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity))}.bg-gray-700{--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity))}.bg-gray-800{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity))}.bg-gray-900{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity))}.bg-green-100{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity))}.bg-green-50{--tw-bg-opacity: 1;background-color:rgb(240 253 244 / var(--tw-bg-opacity))}.bg-indigo-50{--tw-bg-opacity: 1;background-color:rgb(238 242 255 / var(--tw-bg-opacity))}.bg-indigo-50\/80{background-color:#eef2ffcc}.bg-indigo-500{--tw-bg-opacity: 1;background-color:rgb(99 102 241 / var(--tw-bg-opacity))}.bg-indigo-600{--tw-bg-opacity: 1;background-color:rgb(79 70 229 / var(--tw-bg-opacity))}.bg-orange-500{--tw-bg-opacity: 1;background-color:rgb(249 115 22 / var(--tw-bg-opacity))}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity))}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity))}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity))}.bg-sky-50{--tw-bg-opacity: 1;background-color:rgb(240 249 255 / var(--tw-bg-opacity))}.bg-slate-100{--tw-bg-opacity: 1;background-color:rgb(241 245 249 / var(--tw-bg-opacity))}.bg-slate-200{--tw-bg-opacity: 1;background-color:rgb(226 232 240 / var(--tw-bg-opacity))}.bg-slate-400{--tw-bg-opacity: 1;background-color:rgb(148 163 184 / var(--tw-bg-opacity))}.bg-slate-50{--tw-bg-opacity: 1;background-color:rgb(248 250 252 / var(--tw-bg-opacity))}.bg-slate-900{--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity))}.bg-slate-900\/10{background-color:#0f172a1a}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.bg-white\/10{background-color:#ffffff1a}.bg-white\/70{background-color:#ffffffb3}.bg-white\/80{background-color:#fffc}.bg-yellow-50{--tw-bg-opacity: 1;background-color:rgb(254 252 232 / var(--tw-bg-opacity))}.bg-opacity-75{--tw-bg-opacity: .75}.bg-gradient-to-b{background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-amber-300{--tw-gradient-from: #fcd34d var(--tw-gradient-from-position);--tw-gradient-to: rgb(252 211 77 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-amber-50{--tw-gradient-from: #fffbeb var(--tw-gradient-from-position);--tw-gradient-to: rgb(255 251 235 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-emerald-50{--tw-gradient-from: #ecfdf5 var(--tw-gradient-from-position);--tw-gradient-to: rgb(236 253 245 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-indigo-100{--tw-gradient-from: #e0e7ff var(--tw-gradient-from-position);--tw-gradient-to: rgb(224 231 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-indigo-50{--tw-gradient-from: #eef2ff var(--tw-gradient-from-position);--tw-gradient-to: rgb(238 242 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-indigo-500{--tw-gradient-from: #6366f1 var(--tw-gradient-from-position);--tw-gradient-to: rgb(99 102 241 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-pink-50{--tw-gradient-from: #fdf2f8 var(--tw-gradient-from-position);--tw-gradient-to: rgb(253 242 248 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-red-50{--tw-gradient-from: #fef2f2 var(--tw-gradient-from-position);--tw-gradient-to: rgb(254 242 242 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-sky-50{--tw-gradient-from: #f0f9ff var(--tw-gradient-from-position);--tw-gradient-to: rgb(240 249 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-yellow-50{--tw-gradient-from: #fefce8 var(--tw-gradient-from-position);--tw-gradient-to: rgb(254 252 232 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.via-indigo-50{--tw-gradient-to: rgb(238 242 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #eef2ff var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-amber-500{--tw-gradient-to: #f59e0b var(--tw-gradient-to-position)}.to-purple-600{--tw-gradient-to: #9333ea var(--tw-gradient-to-position)}.to-white{--tw-gradient-to: #fff var(--tw-gradient-to-position)}.to-yellow-50{--tw-gradient-to: #fefce8 var(--tw-gradient-to-position)}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-12{padding:3rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-10{padding-left:2.5rem;padding-right:2.5rem}.px-12{padding-left:3rem;padding-right:3rem}.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-6{padding-left:1.5rem;padding-right:1.5rem}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-20{padding-top:5rem;padding-bottom:5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pr-1{padding-right:.25rem}.pt-1{padding-top:.25rem}.pt-4{padding-top:1rem}.text-left{text-align:left}.text-right{text-align:right}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-5xl{font-size:3rem;line-height:1}.text-6xl{font-size:3.75rem;line-height:1}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-extrabold{font-weight:800}.font-medium{font-weight:500}.uppercase{text-transform:uppercase}.italic{font-style:italic}.leading-tight{line-height:1.25}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.text-amber-600{--tw-text-opacity: 1;color:rgb(217 119 6 / var(--tw-text-opacity))}.text-amber-700{--tw-text-opacity: 1;color:rgb(180 83 9 / var(--tw-text-opacity))}.text-amber-900{--tw-text-opacity: 1;color:rgb(120 53 15 / var(--tw-text-opacity))}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity))}.text-emerald-700{--tw-text-opacity: 1;color:rgb(4 120 87 / var(--tw-text-opacity))}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity))}.text-green-800{--tw-text-opacity: 1;color:rgb(22 101 52 / var(--tw-text-opacity))}.text-indigo-700{--tw-text-opacity: 1;color:rgb(67 56 202 / var(--tw-text-opacity))}.text-indigo-800{--tw-text-opacity: 1;color:rgb(55 48 163 / var(--tw-text-opacity))}.text-orange-500{--tw-text-opacity: 1;color:rgb(249 115 22 / var(--tw-text-opacity))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity))}.text-red-800{--tw-text-opacity: 1;color:rgb(153 27 27 / var(--tw-text-opacity))}.text-sky-700{--tw-text-opacity: 1;color:rgb(3 105 161 / var(--tw-text-opacity))}.text-slate-400{--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity))}.text-slate-500{--tw-text-opacity: 1;color:rgb(100 116 139 / var(--tw-text-opacity))}.text-slate-600{--tw-text-opacity: 1;color:rgb(71 85 105 / var(--tw-text-opacity))}.text-slate-700{--tw-text-opacity: 1;color:rgb(51 65 85 / var(--tw-text-opacity))}.text-slate-800{--tw-text-opacity: 1;color:rgb(30 41 59 / var(--tw-text-opacity))}.text-slate-900{--tw-text-opacity: 1;color:rgb(15 23 42 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.text-white\/80{color:#fffc}.text-white\/90{color:#ffffffe6}.text-yellow-700{--tw-text-opacity: 1;color:rgb(161 98 7 / var(--tw-text-opacity))}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.opacity-75{opacity:.75}.opacity-90{opacity:.9}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.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)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px 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}.outline{outline-style:solid}.ring-2{--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(2px + 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-blue-100{--tw-ring-opacity: 1;--tw-ring-color: rgb(219 234 254 / var(--tw-ring-opacity))}.ring-blue-200{--tw-ring-opacity: 1;--tw-ring-color: rgb(191 219 254 / var(--tw-ring-opacity))}.blur{--tw-blur: blur(8px);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)}.drop-shadow-sm{--tw-drop-shadow: drop-shadow(0 1px 1px rgb(0 0 0 / .05));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)}.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{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-300{transition-duration:.3s}*{box-sizing:border-box}html,body,#root{height:100%}html{scroll-behavior:smooth}body{margin:0;font:16px/1.5 var(--font);color:var(--text);background:var(--page-bg, var(--bg))}:focus-visible{outline:2px solid var(--brand, #2563eb);outline-offset:2px}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{border-color:var(--brand, #2563eb);box-shadow:0 0 0 2px #2563eb40}.container{width:min(1200px,92vw);margin-inline:auto}main.container{padding:24px 12px}.auth-shell{max-width:420px;margin:10vh auto}.auth-card{padding:1.25rem}.auth-title{margin:0 0 1rem;font-size:1.35rem;font-weight:800;color:var(--text-primary)}.navbar{position:sticky;top:0;z-index:40;background:color-mix(in srgb,var(--card-bg) 88%,transparent);-webkit-backdrop-filter:saturate(1.2) blur(6px);backdrop-filter:saturate(1.2) blur(6px);border-bottom:1px solid var(--border-color)}.nav-inner{display:flex;align-items:center;gap:12px;padding:14px 8px}.brand{display:flex;align-items:center;gap:10px;font-weight:800;letter-spacing:.2px}.brand-icon{width:34px;height:34px;border-radius:9px;background:linear-gradient(135deg,var(--brand),var(--brand-700));box-shadow:var(--shadow)}.nav-links{display:flex;gap:10px;overflow:auto hidden;padding:2px;scrollbar-width:none}.nav-link{display:inline-flex;align-items:center;gap:8px;white-space:nowrap;padding:8px 14px;border-radius:999px;text-decoration:none;color:var(--text-primary);background:var(--bg-soft);border:1px solid var(--border-color);transition:transform .12s ease,background .12s ease,border-color .12s ease,box-shadow .12s ease}.nav-link:hover{transform:translateY(-1px)}.nav-link.active{background:color-mix(in srgb,var(--primary) 12%,var(--bg-soft));border-color:color-mix(in srgb,var(--primary) 35%,var(--border-color));color:var(--primary-dark);box-shadow:var(--shadow-sm)}.row{display:flex;align-items:center;gap:10px}.row-right{margin-left:auto}.badge{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:999px;background:color-mix(in srgb,var(--primary) 12%,var(--bg-soft));border:1px solid var(--border-color);color:var(--primary-dark);font-weight:600;letter-spacing:.1px}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.grid-5{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}@media (max-width: 900px){.grid-2,.grid-3,.grid-4,.grid-5{grid-template-columns:1fr}.nav-inner{padding:12px 6px}.brand{font-size:18px}.btn{width:100%}}a{color:var(--brand-600);text-decoration:none}a:hover{color:var(--brand-700);text-decoration:underline}.card h3{margin:4px 0 10px;font-size:18px}body.density-compact .nav-inner{padding:10px 6px}body.density-compact .nav-link{padding:6px 10px}body.density-compact .btn,body.density-compact .btn-ghost{padding:8px 10px}body.density-compact .card{padding:12px}body.density-compact main.container{padding:16px 10px}.show-sm{display:none}@media (max-width:900px){.hide-sm{display:none!important}.show-sm{display:initial}}.hamburger{width:40px;height:40px;border-radius:10px;border:1px solid var(--border-color);display:inline-flex;align-items:center;justify-content:center;background:var(--bg-soft);cursor:pointer}.hamburger:focus-visible{outline:none;box-shadow:var(--ring)}.drawer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:none}.drawer.open{display:block}.drawer-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:#02061759;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.drawer-panel{position:absolute;top:0;bottom:0;left:0;width:min(84vw,320px);background:var(--card-bg);border-right:1px solid var(--border-color);padding:16px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:10px}.attendance-cards{display:none}@media (max-width:900px){.attendance-table{display:none}.attendance-cards{display:grid;gap:10px}.attendance-card{background:var(--card-bg);border:1px solid var(--border-color);border-radius:12px;padding:12px;box-shadow:var(--shadow)}.attendance-card .rowline{display:flex;justify-content:space-between;gap:10px}.attendance-card .label{color:var(--text-muted);font-size:13px}}.badge.sa{background:#111827;color:#fff;border:none}.badge.admin{background:#1f2937;color:#fff;border:none}.badge.teacher{background:#0ea5e9;color:#fff;border:none}.badge.student{background:#6366f1;color:#fff;border:none}@media (max-width:900px){.actions-stack{display:grid;grid-template-columns:1fr 1fr;gap:8px}}.show-sm{display:none!important}.hide-sm{display:initial!important}@media (max-width:900px){.show-sm{display:inline-flex!important}.hide-sm{display:none!important}}.brand-logo{height:clamp(90px,8.4vw,150px);width:auto;-o-object-fit:contain;object-fit:contain;display:block}.drawer .brand-logo{height:30px}.page-nav{display:flex;gap:10px;align-items:center;margin:4px 0 16px;flex-wrap:wrap}.page-nav__btn{display:inline-flex;align-items:center;gap:6px;padding:8px 12px;border-radius:999px;border:1px solid var(--border-color);background:var(--bg-soft);color:var(--text-primary);font-weight:600;cursor:pointer;transition:background .15s ease,border-color .15s ease,transform .1s ease}.page-nav__btn:hover:not(:disabled){background:color-mix(in srgb,var(--bg-soft),black 4%);border-color:color-mix(in srgb,var(--border-color),black 8%);transform:translateY(-1px)}.page-nav__btn:disabled{opacity:.5;cursor:not-allowed}.menu-desktop{position:relative}.menu-trigger{display:inline-flex;align-items:center;gap:6px;padding:10px 12px;border-radius:10px;background:var(--bg-soft);border:1px solid var(--border-color);cursor:pointer}.menu-trigger:hover{background:color-mix(in srgb,var(--bg-soft),black 4%)}.dropdown{position:absolute;top:calc(100% + 8px);left:0;min-width:220px;background:var(--card-bg);border:1px solid var(--border-color);border-radius:12px;box-shadow:var(--shadow);padding:8px;z-index:999}.dropdown-link{display:block;padding:10px 12px;border-radius:10px;text-decoration:none;color:var(--text-primary)}.dropdown-link:hover{background:color-mix(in srgb,var(--bg-soft),black 4%)}.dropdown-link.active{background:color-mix(in oklab,var(--brand) 16%,var(--panel));border:1px solid color-mix(in oklab,var(--brand) 50%,transparent)}.nav-wrapper{display:none}[data-theme=dark]{color-scheme:dark;--bg: var(--bg-main);--surface-1: var(--card-bg);--surface-2: color-mix(in srgb, var(--card-bg) 85%, black);--surface-3: color-mix(in srgb, var(--card-bg) 70%, black);--surface: var(--card-bg);--panel: var(--bg-soft);--text: var(--text-primary);--muted: var(--text-muted);--brand: var(--primary);--brand-600: var(--primary-hover);--brand-700: var(--primary-dark);--ring: 0 0 0 3px color-mix(in srgb, var(--primary) 45%, transparent);--shadow: var(--shadow-lg)}[data-theme=dark] body{background:var(--page-bg, var(--bg))}[data-theme=dark] .navbar{background:#0f1529cc;-webkit-backdrop-filter:saturate(1.2) blur(8px);backdrop-filter:saturate(1.2) blur(8px);border-bottom:1px solid rgba(231,236,255,.08)}[data-theme=dark] .card{background:var(--surface-1);border-color:#e7ecff1a;box-shadow:var(--shadow)}[data-theme=dark] .btn{background:var(--brand);border-color:var(--brand-600);color:#fff}[data-theme=dark] .btn:hover{background:var(--brand-600)}[data-theme=dark] .btn-ghost{background:#ffffff0f;border-color:#ffffff1f;color:var(--text)}[data-theme=dark] .btn-ghost:hover{background:#ffffff1a;border-color:#ffffff2e}[data-theme=dark] .input,[data-theme=dark] .select,[data-theme=dark] .textarea{background:var(--surface-1);border-color:#e7ecff24;color:var(--text)}[data-theme=dark] .input::-moz-placeholder,[data-theme=dark] .textarea::-moz-placeholder{color:#e7ecff8c}[data-theme=dark] .input::placeholder,[data-theme=dark] .textarea::placeholder{color:#e7ecff8c}[data-theme=dark] .input:focus,[data-theme=dark] .select:focus,[data-theme=dark] .textarea:focus{border-color:#6aa7ff;box-shadow:var(--ring)}[data-theme=dark] .nav-link{background:#ffffff0f;border-color:#ffffff1a;color:var(--text)}[data-theme=dark] .nav-link.active{background:#3b82f633;border-color:#3b82f673;box-shadow:0 8px 18px #3b82f633}[data-theme=dark] a{color:#8ab4ff}[data-theme=dark] a:hover{color:#b5cdff}[data-theme=dark] .badge{background:#ffffff14;border-color:#ffffff1f;color:#dfe6ff}[data-theme=dark] .table{background:var(--surface-1);border-color:#e7ecff1a}[data-theme=dark] .table thead{background:var(--surface-2)}[data-theme=dark] .table th,[data-theme=dark] .table td{border-top-color:#e7ecff14}[data-theme=dark] .table tbody tr:hover td{background:#ffffff08}[data-theme=dark] .drawer-panel{background:var(--surface-2);border-color:#e7ecff1a}[data-theme=dark] .dropdown{background:var(--surface-3);border-color:#e7ecff1f}[data-theme=dark] .hamburger,[data-theme=dark] .menu-trigger{background:#ffffff0f;border-color:#ffffff1f;color:var(--text)}[data-theme=dark] .menu-trigger:hover{background:#ffffff1a}[data-theme=dark] .muted{color:var(--muted)}[data-theme=dark] ::-webkit-scrollbar{height:10px;width:10px}[data-theme=dark] ::-webkit-scrollbar-track{background:#ffffff0a}[data-theme=dark] ::-webkit-scrollbar-thumb{background:#ffffff2e;border-radius:999px;border:2px solid transparent;background-clip:content-box}[data-theme=dark] ::-webkit-scrollbar-thumb:hover{background:#ffffff47}@media (max-width:900px){[data-theme=dark] .attendance-card,[data-theme=dark] .list-card{background:var(--surface-1);border-color:#e7ecff1a}}.list-table{display:block}.list-cards{display:none}@media (max-width:900px){.list-table{display:none}.list-cards{display:grid;gap:10px}.list-card{background:var(--surface);border:1px solid rgba(2,6,23,.06);border-radius:12px;padding:12px;box-shadow:var(--shadow)}.list-card .rowline{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.list-card .label{color:var(--muted);font-size:13px}}[data-theme=dark] .list-card{background:var(--surface-1, #0f1529);border-color:#e7ecff1a}html,body{overflow-x:hidden}.container{width:min(1100px,94vw)}@media (max-width: 720px){.container{width:100vw;padding-inline:12px}main.container{padding:16px 12px}}.nav-links{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;gap:6px;padding:2px 2px 4px}.nav-links::-webkit-scrollbar{display:none}.nav-link{flex:0 0 auto;padding:6px 10px}.badge{padding:4px 10px;font-size:12px}.row-right{gap:6px}@media (max-width: 720px){.card{padding:12px;border-radius:12px}.btn,.btn-ghost{padding:9px 12px}.input,.select,.textarea{padding:9px 11px}}@media (max-width: 720px){.table.table-mobile{border:0;box-shadow:none;background:transparent}.table.table-mobile thead{display:none}.table.table-mobile tbody{display:grid;gap:12px}.table.table-mobile tr{display:grid;grid-template-columns:1fr 1fr;gap:6px 12px;border:1px solid color-mix(in oklab,var(--text) 10%,transparent);border-radius:12px;padding:12px;background:var(--surface);box-shadow:var(--shadow)}.table.table-mobile td{border:0;padding:0;display:flex;gap:8px;align-items:baseline}.table.table-mobile td:before{content:attr(data-label);color:var(--muted);min-width:72px}.table.table-mobile td.actions{grid-column:1 / -1;margin-top:6px}.table.table-mobile td.actions .btn{width:100%}}img,svg,video,canvas,iframe,table{max-width:100%}@media (max-width: 720px){h2{font-size:22px;margin:8px 0 10px}h3{font-size:18px;margin:6px 0 8px}.grid-2,.grid-3,.grid-4{gap:10px}}:root{--font-sans: Inter, ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, "Apple Color Emoji","Segoe UI Emoji";--text-base: 15px;--text-sm: 13.5px;--h1: 22px;--h2: 17px;--muted: #64748b}html{font-size:var(--text-base)}body{font-family:var(--font-sans);letter-spacing:-.011em;color:#111827}h1,.h1{font-size:var(--h1);font-weight:800;margin:0}h2,.h2{font-size:var(--h2);font-weight:700;margin:0}.card{border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);background:var(--card-bg);border:1px solid var(--border-color)}.badge{font-size:var(--text-sm);padding:6px 10px;border-radius:9999px;border:1px solid var(--border-color);background:var(--bg-soft);color:var(--text-secondary)}.input{font-size:var(--text-sm);border:1px solid var(--border-color);padding:8px 10px;border-radius:10px;background:var(--card-bg);color:var(--text-primary)}.btn{font-size:var(--text-sm);border:1px solid var(--border-color);padding:8px 10px;border-radius:10px;background:var(--card-bg);color:var(--text-primary);transition:background .15s ease,transform .1s ease}.btn:hover{background:var(--bg-soft)}.btn:active{transform:scale(.98)}.btn.primary{background:var(--primary);border-color:var(--primary);color:var(--text-on-primary)}.btn.small{padding:6px 8px}.toast-host{position:fixed;right:16px;bottom:16px;display:grid;gap:10px;z-index:10000;max-width:min(420px,92vw);pointer-events:none}@media (max-width: 520px){.toast-host{left:12px;right:12px;bottom:12px}}.toast{pointer-events:auto;border-radius:12px;padding:10px 12px;box-shadow:0 10px 24px #0206172e;border:1px solid var(--toast-bd, #e5e7eb);background:var(--toast-bg, #ffffff);color:var(--toast-fg, #111827);-webkit-backdrop-filter:saturate(1.2) blur(2px);backdrop-filter:saturate(1.2) blur(2px);transition:transform .18s ease,opacity .18s ease;transform:translateY(0);opacity:1}.toast .title{font-weight:800;line-height:1.25;margin-bottom:2px;font-size:14px}.toast .msg{font-size:13px;color:#334155}.toast .x{border:none;background:transparent;font-size:14px;line-height:1;padding:2px 6px;border-radius:8px;color:inherit;cursor:pointer}.toast .x:focus-visible{outline:2px solid #4f46e5;outline-offset:2px}.toast.ok{--toast-bg:#ecfdf5;--toast-bd:#bbf7d0;--toast-fg:#064e3b}.toast.info{--toast-bg:#eff6ff;--toast-bd:#bfdbfe;--toast-fg:#1e3a8a}.toast.warn{--toast-bg:#fff7ed;--toast-bd:#fed7aa;--toast-fg:#9a3412}.toast.bad{--toast-bg:#fef2f2;--toast-bd:#fecaca;--toast-fg:#991b1b}html[data-theme=dark] .toast.ok{--toast-bg:#052e23;--toast-bd:#0f4b3a;--toast-fg:#86efac}html[data-theme=dark] .toast.info{--toast-bg:#0b1b3e;--toast-bd:#1d3a7a;--toast-fg:#bfdbfe}html[data-theme=dark] .toast.warn{--toast-bg:#3b2207;--toast-bd:#7a3a12;--toast-fg:#fed7aa}html[data-theme=dark] .toast.bad{--toast-bg:#3a0d0d;--toast-bd:#7a1a1a;--toast-fg:#fecaca}@media (prefers-reduced-motion: reduce){.toast{transition:none}}.classes-page{padding:1rem;max-width:1400px;margin:0 auto}.classes-toolbar{position:sticky;top:8px;z-index:5;background:var(--surface);border:1px solid var(--border, rgba(2,6,23,.06));border-radius:12px;padding:1.5rem;box-shadow:var(--shadow);margin-bottom:1.5rem}.toolbar-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:1rem}.toolbar-header h1{margin:0;font-size:1.5rem;font-weight:800;color:var(--text)}.toolbar-actions{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.toolbar-filters{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.filter-group{display:flex;flex-direction:column;gap:.25rem;flex:1;min-width:200px}.filter-label{font-size:.75rem;font-weight:500;color:var(--muted)}.bulk-actions{display:flex;align-items:center;gap:.75rem;padding:.75rem;background:var(--bg);border-radius:8px;border:1px solid var(--border, rgba(2,6,23,.06));margin-bottom:1rem}.classes-grid{display:grid;gap:1rem}.class-card{background:var(--surface);border:1px solid var(--border, rgba(2,6,23,.06));border-radius:12px;padding:1.5rem;box-shadow:var(--shadow);transition:all .2s ease}.class-card:hover{box-shadow:0 8px 24px #0206171a;border-color:var(--brand-300, #93c5fd)}.class-header{display:flex;align-items:flex-start;gap:1rem;margin-bottom:1rem}.class-avatar{width:48px;height:48px;border-radius:10px;background:var(--brand-50, #eff6ff);color:var(--brand-700, #1d4ed8);display:grid;place-items:center;font-weight:800;font-size:1rem;border:1px solid var(--brand-200, #bfdbfe);flex-shrink:0}.class-info{flex:1;min-width:0}.class-title{margin:0 0 .5rem;font-size:1.125rem;font-weight:700;color:var(--text)}.class-description{margin:0;color:var(--muted);font-size:.875rem;line-height:1.4}.class-meta{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin-top:.75rem}.class-actions{display:flex;align-items:center;gap:.5rem;flex-shrink:0}.class-details{margin-top:1.5rem;padding-top:1.5rem;border-top:1px solid var(--border, rgba(2,6,23,.06))}.detail-section{background:var(--bg);border:1px solid var(--border, rgba(2,6,23,.06));border-radius:8px;padding:1rem;margin-bottom:1rem}.detail-section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem}.detail-section-title{font-weight:600;color:var(--text);margin:0}.quick-attendance{background:linear-gradient(135deg,var(--brand-50, #eff6ff) 0%,var(--surface) 100%);border:1px solid var(--brand-200, #bfdbfe)}.attendance-controls{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.attendance-date-group{display:flex;align-items:center;gap:.5rem}.students-list,.lessons-list{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.5rem}.lesson-card{background:var(--surface);border:1px solid var(--border, rgba(2,6,23,.06));border-radius:8px;padding:.75rem;transition:all .2s ease}.lesson-card:hover{border-color:var(--brand-300, #93c5fd);box-shadow:0 2px 8px #0000001a}.lesson-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem}.lesson-title{font-weight:600;color:var(--text);margin:0}.lesson-meta{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.class-detail-page{padding:1rem;max-width:1400px;margin:0 auto}.class-overview{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-bottom:1.5rem}.overview-card{background:var(--surface);border:1px solid var(--border, rgba(2,6,23,.06));border-radius:12px;padding:1.5rem;text-align:center}.overview-label{font-size:.875rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.5rem}.overview-value{font-size:1.5rem;font-weight:800;color:var(--text);margin:0}.class-content{display:grid;grid-template-columns:1fr;gap:1.5rem}@media (min-width: 1024px){.class-content{grid-template-columns:1fr 380px}}.manage-sidebar{position:sticky;top:1rem;align-self:start}.assignee-picker{position:relative}.picker-dropdown{position:absolute;top:100%;left:0;right:0;z-index:30;background:var(--surface);border:1px solid var(--border, rgba(2,6,23,.06));border-radius:8px;box-shadow:var(--shadow);margin-top:.5rem;max-height:300px;overflow-y:auto}.picker-option{display:flex;align-items:center;gap:.75rem;padding:.75rem;border:none;background:none;width:100%;text-align:left;cursor:pointer;transition:background-color .2s}.picker-option:hover{background:var(--bg)}.picker-option:focus{outline:none;background:var(--brand-50, #eff6ff)}.option-info{flex:1}.option-name{font-weight:600;color:var(--text);margin:0}.option-details{font-size:.875rem;color:var(--muted);margin:0}.user-detail-card{background:var(--surface);border:1px solid var(--border, rgba(2,6,23,.06));border-radius:12px;padding:1.5rem;margin-bottom:1rem}.user-detail-grid{display:grid;grid-template-columns:1fr;gap:1.5rem}@media (min-width: 768px){.user-detail-grid{grid-template-columns:1fr auto auto}}.user-meta{display:grid;gap:.75rem}.meta-item{display:flex;flex-direction:column;gap:.25rem}.meta-label{font-size:.75rem;font-weight:500;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.meta-value{font-weight:600;color:var(--text)}.role-editor{display:flex;align-items:center;gap:.75rem}.role-select{min-width:120px}.user-actions{display:flex;flex-direction:column;gap:.5rem}.user-profile-card{background:var(--surface);border:1px solid var(--border, rgba(2,6,23,.06));border-radius:12px;overflow:hidden}.profile-header{background:linear-gradient(135deg,var(--brand-50, #eff6ff) 0%,var(--surface) 100%);padding:2rem 1.5rem 1.5rem;text-align:center}.profile-avatar{position:relative;width:80px;height:80px;border-radius:16px;margin:0 auto 1rem;cursor:pointer;transition:transform .2s}.profile-avatar:hover{transform:scale(1.05)}.avatar-image{width:100%;height:100%;border-radius:16px;-o-object-fit:cover;object-fit:cover;border:3px solid var(--surface);box-shadow:var(--shadow)}.avatar-fallback{width:100%;height:100%;border-radius:16px;background:var(--brand);color:#fff;display:grid;place-items:center;font-size:1.5rem;font-weight:800;border:3px solid var(--surface);box-shadow:var(--shadow)}.avatar-upload{position:absolute;bottom:-4px;right:-4px;background:var(--brand);color:#fff;border:2px solid var(--surface);border-radius:50%;width:28px;height:28px;display:grid;place-items:center;font-size:.75rem;cursor:pointer}.profile-name{font-size:1.5rem;font-weight:800;color:var(--text);margin:0 0 .25rem}.profile-email{color:var(--muted);margin:0 0 .5rem}.profile-meta{font-size:.875rem;color:var(--muted)}.profile-form{padding:1.5rem}.form-grid{display:grid;grid-template-columns:1fr;gap:1rem;margin-bottom:1.5rem}@media (min-width: 640px){.form-grid{grid-template-columns:1fr 1fr}}.form-actions{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}.action-group{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.empty-state{text-align:center;padding:3rem 1.5rem;color:var(--muted)}.empty-icon{font-size:3rem;margin-bottom:1rem;opacity:.5}.empty-title{font-weight:600;margin-bottom:.5rem;color:var(--text)}.empty-description{margin:0}.skeleton{background:linear-gradient(90deg,var(--border, #e5e7eb) 25%,var(--bg) 50%,var(--border, #e5e7eb) 75%);background-size:200% 100%;animation:loading 1.5s infinite;border-radius:6px}.skeleton-card{background:var(--surface);border:1px solid var(--border, rgba(2,6,23,.06));border-radius:12px;padding:1.5rem}.skeleton-header{display:flex;align-items:center;gap:1rem;margin-bottom:1rem}.skeleton-avatar{width:48px;height:48px;border-radius:10px}.skeleton-content{flex:1}.skeleton-line{height:12px;margin-bottom:.5rem;border-radius:4px}.skeleton-line.short{width:60%}.skeleton-line.medium{width:80%}.skeleton-meta{display:flex;gap:.5rem;margin-top:.75rem}.skeleton-pill{height:24px;width:80px;border-radius:12px}.attendance-page{padding:1rem;max-width:1400px;margin:0 auto}.section-card{background:var(--surface);border:1px solid var(--border, rgba(2,6,23,.06));border-radius:var(--radius);padding:16px;box-shadow:var(--shadow);margin-bottom:1.5rem;overflow:hidden}.section-header{background:linear-gradient(135deg,var(--bg) 0%,var(--surface) 100%);padding:1.25rem 1.5rem;border-bottom:1px solid var(--border, rgba(2,6,23,.06));display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:1rem}.section-title{margin:0;font-size:1.25rem;font-weight:600;color:var(--text);display:flex;align-items:center;gap:.75rem}.title-indicator{width:8px;height:8px;border-radius:50%;background:var(--brand);flex-shrink:0}.section-actions{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.section-content{padding:1.5rem}.stats-grid{display:grid;grid-template-columns:1fr;gap:1.5rem}@media (min-width: 768px){.stats-grid{grid-template-columns:1fr 2fr}}.stats-card{background:var(--surface);border-radius:8px;padding:1.5rem;border:1px solid var(--border, rgba(2,6,23,.06))}.stats-content{display:flex;align-items:center;gap:1.5rem;flex-direction:column}@media (min-width: 640px){.stats-content{flex-direction:row}}.stats-details{flex:1;min-width:0}.stats-title{font-weight:700;margin-bottom:.75rem;color:var(--text);font-size:1.125rem}.stats-badges{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:.5rem}.stats-meta{color:var(--muted);font-size:.875rem}.filter-bar{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.input-group{display:flex;flex-direction:column;gap:.25rem}.input-label{font-size:.75rem;font-weight:500;color:var(--muted);margin-bottom:.25rem}.button-group{display:flex;gap:.5rem}.donut-chart{flex-shrink:0}.stacked-bars-container{display:grid;grid-template-columns:repeat(auto-fit,minmax(40px,1fr));gap:.75rem;align-items:end;height:140px;padding:.5rem 0}.bar-column{position:relative;text-align:center}.bar-tooltip{position:absolute;bottom:100%;left:50%;transform:translate(-50%);background:var(--text);color:var(--surface);padding:.5rem;border-radius:4px;font-size:.75rem;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .2s;z-index:10;margin-bottom:.5rem}.bar-column:hover .bar-tooltip{opacity:1}.bars-wrapper{display:grid;align-items:end;height:100px;min-height:100px}.bar{transition:all .2s ease;border-radius:2px}.bar:hover{opacity:.8}.present-bar{background:var(--ok);border-top-left-radius:4px;border-top-right-radius:4px}.late-bar{background:var(--warn)}.absent-bar{background:var(--danger);border-bottom-left-radius:4px;border-bottom-right-radius:4px}.bar-date{font-size:.75rem;color:var(--muted);margin-top:.5rem}.chart-container{height:100%}.chart-title{font-weight:700;margin-bottom:1rem;color:var(--text);font-size:1.125rem}.table-container{overflow-x:auto;border-radius:8px;border:1px solid var(--border, rgba(2,6,23,.06))}.data-table{width:100%;border-collapse:collapse;background:var(--surface)}.data-table th{background:var(--bg);padding:1rem;text-align:left;font-weight:600;color:var(--text);border-bottom:1px solid var(--border, rgba(2,6,23,.06));font-size:.875rem;white-space:nowrap}.data-table td{padding:1rem;border-bottom:1px solid var(--border, rgba(2,6,23,.06));color:var(--text)}.data-table tr:last-child td{border-bottom:none}.data-table tr:hover{background:var(--bg)}.actions-cell{white-space:nowrap}.no-data{text-align:center;color:var(--muted);font-style:italic;padding:2rem!important}.status-badge{padding:.375rem .75rem;border-radius:9999px;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;display:inline-flex;align-items:center;gap:.25rem}.status-success{background:#ecfdf5;color:#065f46;border:1px solid #bbf7d0}.status-warning{background:#fff7ed;color:#9a3412;border:1px solid #fed7aa}.status-error{background:#fef2f2;color:#991b1b;border:1px solid #fecaca}.status-neutral{background:#f1f5f9;color:#334155;border:1px solid #e5e7eb}[data-theme=dark] .status-success{background:#052e23;color:#86efac;border-color:#0f4b3a}[data-theme=dark] .status-warning{background:#3b2207;color:#fed7aa;border-color:#7a3a12}[data-theme=dark] .status-error{background:#3a0d0d;color:#fecaca;border-color:#7a1a1a}[data-theme=dark] .status-neutral{background:#1f2937;color:#d1d5db;border-color:#374151}.loading-state{display:flex;align-items:center;justify-content:center;gap:.75rem;padding:3rem;color:var(--muted)}.loading-spinner{width:1.5rem;height:1.5rem;border:2px solid var(--border, #e5e7eb);border-top:2px solid var(--brand);border-radius:50%;animation:spin 1s linear infinite}.loading-spinner-small{width:1rem;height:1rem;border:2px solid var(--border, #e5e7eb);border-top:2px solid var(--brand);border-radius:50%;animation:spin 1s linear infinite}.error-state,.forbidden-state,.empty-state{display:flex;align-items:flex-start;gap:1rem;padding:1.5rem;border-radius:8px;margin:1rem 0}.error-state{background:#fef2f2;border:1px solid #fecaca;color:#b91c1c}.forbidden-state{background:#fff7ed;border:1px solid #fed7aa;color:#9a3412}.empty-state{background:var(--bg);border:1px solid var(--border, rgba(2,6,23,.06));color:var(--muted)}[data-theme=dark] .error-state{background:#3a0d0d;border-color:#7a1a1a;color:#fecaca}[data-theme=dark] .forbidden-state{background:#3b2207;border-color:#7a3a12;color:#fed7aa}.error-icon{font-size:1.5rem;flex-shrink:0;margin-top:.125rem}.error-content{flex:1}.error-content strong{display:block;margin-bottom:.5rem}.attendance-take-page{padding:1rem;max-width:1200px;margin:0 auto;min-height:100vh}.page-header{background:var(--surface);border-radius:12px;padding:1.5rem;margin-bottom:1.5rem;border:1px solid var(--border, rgba(2,6,23,.06));box-shadow:var(--shadow)}.header-content{display:flex;align-items:flex-start;justify-content:space-between;gap:1.5rem;flex-wrap:wrap}.header-title h1{margin:0 0 .5rem;font-size:1.5rem;font-weight:700;color:var(--text)}.header-subtitle{margin:0;color:var(--muted);font-size:.875rem}.header-actions{display:flex;gap:.75rem;flex-wrap:wrap}.controls-section{background:var(--surface);border-radius:12px;padding:1.5rem;margin-bottom:1.5rem;border:1px solid var(--border, rgba(2,6,23,.06))}.controls-grid{display:grid;grid-template-columns:1fr;gap:1.5rem}@media (min-width: 768px){.controls-grid{grid-template-columns:auto 1fr auto;align-items:end}}.quick-actions{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.quick-actions-label{font-weight:500;color:var(--text);white-space:nowrap}.quick-action-buttons{display:flex;gap:.5rem;flex-wrap:wrap}.save-actions{display:flex;justify-content:flex-end}.summary-stats{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;padding:1rem 1.5rem;background:var(--bg);border-radius:8px;margin-bottom:1.5rem;border:1px solid var(--border, rgba(2,6,23,.06))}.total-students{margin-left:auto;font-weight:600;color:var(--text)}.roster-section{background:var(--surface);border-radius:12px;padding:1.5rem;border:1px solid var(--border, rgba(2,6,23,.06))}.students-grid{display:grid;grid-template-columns:1fr;gap:1rem}@media (min-width: 640px){.students-grid{grid-template-columns:repeat(auto-fit,minmax(400px,1fr))}}.student-card{display:flex;flex-direction:column;gap:.75rem;padding:1rem;border:1px solid var(--border, rgba(2,6,23,.06));border-radius:8px;background:var(--bg);transition:all .2s ease;position:relative}.student-card:hover{border-color:var(--brand);box-shadow:var(--shadow)}.student-header{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem}.student-info{min-width:0}.student-name{font-weight:600;color:var(--text);margin-bottom:.1rem;font-size:1rem}.student-id{font-size:.85rem;color:var(--muted)}.student-status{flex-shrink:0}.student-status .status-badge{font-size:.7rem}.student-actions{display:grid;grid-template-columns:1fr;gap:.75rem}@media (min-width: 640px){.student-actions{grid-template-columns:1fr 1fr auto;align-items:end}}.action-buttons{display:flex;gap:.5rem;align-items:center}.btn-icon{padding:.5rem;min-width:auto}.cycle-icon{font-size:1rem;font-weight:600}.status-select option[value=present]{color:#065f46}.status-select option[value=late]{color:#9a3412}.status-select option[value=excused]{color:#334155}.status-select option[value=absent]{color:#991b1b}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.btn-success{background:var(--success);color:var(--text-on-primary);border-color:var(--success)}.btn-success:hover:not(:disabled){background:var(--success-hover)}.btn-warning{background:var(--warning);color:var(--text-on-primary);border-color:var(--warning)}.btn-warning:hover:not(:disabled){background:var(--warning-hover)}.btn-danger{background:var(--danger);color:var(--text-on-primary);border-color:var(--danger)}.btn-danger:hover:not(:disabled){background:var(--danger-hover)}.btn:disabled{opacity:.6;cursor:not-allowed}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0206178c;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem}.modal-panel{width:100%;max-width:620px;background:var(--surface);border:1px solid var(--border, rgba(2,6,23,.06));border-radius:16px;box-shadow:0 28px 96px #02061759;overflow:hidden}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:1.25rem 1.5rem;border-bottom:1px solid var(--border, rgba(2,6,23,.06))}.modal-body{padding:1.5rem}.modal-footer{display:flex;align-items:center;justify-content:flex-end;gap:.75rem;padding:1.25rem 1.5rem;border-top:1px solid var(--border, rgba(2,6,23,.06))}@media (max-width: 768px){.attendance-page,.attendance-take-page,.classes-page,.class-detail-page{padding:.5rem}.header-content{flex-direction:column;align-items:stretch}.header-actions{justify-content:stretch}.controls-grid{gap:1rem}.quick-actions{flex-direction:column;align-items:stretch}.quick-action-buttons{justify-content:stretch}.summary-stats{flex-direction:column;align-items:stretch;gap:.5rem}.total-students{margin-left:0;text-align:center}.student-actions{grid-template-columns:1fr}.action-buttons{justify-content:stretch}.toolbar-header{flex-direction:column;align-items:stretch}.toolbar-actions{justify-content:stretch}.toolbar-filters{flex-direction:column}.filter-group{min-width:100%}.class-header{flex-direction:column;align-items:stretch}.class-actions{justify-content:stretch;margin-top:1rem}.attendance-controls{flex-direction:column;align-items:stretch}.attendance-date-group{justify-content:space-between}.user-detail-grid{grid-template-columns:1fr}.role-editor{flex-direction:column;align-items:stretch}.user-actions{flex-direction:row;flex-wrap:wrap}.form-actions{flex-direction:column;align-items:stretch}.action-group{justify-content:stretch}}@media (max-width: 640px){.students-grid{grid-template-columns:1fr}.student-card{padding:1rem}.modal-backdrop{padding:.5rem}.modal-panel{border-radius:12px}}[data-theme=dark] .quick-attendance{background:linear-gradient(135deg,rgba(59,130,246,.1) 0%,var(--surface-1) 100%);border-color:#3b82f64d}[data-theme=dark] .profile-header{background:linear-gradient(135deg,rgba(59,130,246,.1) 0%,var(--surface-1) 100%)}[data-theme=dark] .classes-toolbar,[data-theme=dark] .bulk-actions,[data-theme=dark] .class-card{border-color:#e7ecff1a}[data-theme=dark] .class-card:hover{border-color:#3b82f680}[data-theme=dark] .detail-section,[data-theme=dark] .lesson-card{border-color:#e7ecff1a}[data-theme=dark] .lesson-card:hover{border-color:#3b82f64d}[data-theme=dark] .overview-card,[data-theme=dark] .user-detail-card,[data-theme=dark] .user-profile-card{border-color:#e7ecff1a}[data-theme=dark] .picker-dropdown{border-color:#e7ecff1f}[data-theme=dark] .picker-option:hover{background:#ffffff08}[data-theme=dark] .picker-option:focus{background:#3b82f61a}.wrap-anywhere{overflow-wrap:anywhere}.mb-1{margin-bottom:.25rem}.text-sm{font-size:.875rem}.text-xs{font-size:.75rem}.font-semibold{font-weight:600}.font-bold{font-weight:700}.min-w-0{min-width:0}.flex-shrink-0{flex-shrink:0}.role-pill{display:inline-flex;align-items:center;padding:.25rem .5rem;border-radius:9999px;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em}.role-pill.role-sa{background:#111827;color:#fff}.role-pill.role-admin{background:#1f2937;color:#fff}.role-pill.role-teacher{background:#0ea5e9;color:#fff}.role-pill.role-student{background:#6366f1;color:#fff}[data-theme=dark] .role-pill.role-sa{background:#374151}[data-theme=dark] .role-pill.role-admin{background:#4b5563}[data-theme=dark] .role-pill.role-teacher{background:#0369a1}[data-theme=dark] .role-pill.role-student{background:#4f46e5}.lessons-page{padding:1rem;max-width:1400px;margin:0 auto;min-height:100vh}.lessons-layout{display:grid;grid-template-columns:minmax(400px,45%) 1fr;gap:1.5rem;align-items:start}@media (max-width: 1024px){.lessons-layout{grid-template-columns:1fr}.right-panel{position:static}}.lesson-card{background:var(--surface);border:1px solid var(--border, rgba(2,6,23,.06));border-radius:var(--radius);padding:1.25rem;cursor:pointer;transition:all .2s ease;position:relative;overflow:hidden}.lesson-card:hover{border-color:var(--brand);box-shadow:var(--shadow);transform:translateY(-2px)}.lesson-card.selected{border-color:var(--brand);background:var(--brand-50, #eff6ff)}.selection-indicator{position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--brand),var(--brand-700))}.lesson-card-content{display:flex;flex-direction:column;gap:1rem}.lesson-main{display:flex;align-items:flex-start;gap:.75rem}.lesson-checkbox{margin-top:.25rem;transform:scale(1.1);accent-color:var(--brand)}.lesson-details{flex:1;min-width:0}.lesson-header{display:flex;align-items:flex-start;justify-content:between;gap:.5rem;margin-bottom:.75rem;flex-wrap:wrap}.lesson-title{margin:0;font-size:1.125rem;font-weight:700;color:var(--text);line-height:1.3;flex:1;min-width:0}.lesson-meta{display:flex;align-items:center;gap:.75rem;margin-bottom:.75rem;flex-wrap:wrap}.meta-item{font-size:.875rem;color:var(--muted)}.content-preview{margin:.75rem 0;padding:.75rem;background:var(--bg);border-radius:8px;border:1px solid var(--border, rgba(2,6,23,.06))}.preview-text{font-size:.875rem;color:var(--muted);line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.lesson-tags{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.lesson-actions{display:flex;flex-direction:column;gap:.5rem}.action-row{display:flex;gap:.5rem;flex-wrap:wrap}.btn-action{display:inline-flex;align-items:center;gap:.375rem;padding:.5rem .75rem;border:1px solid;border-radius:6px;font-size:.75rem;font-weight:500;cursor:pointer;transition:all .2s;text-decoration:none}.btn-action.primary{background:color-mix(in srgb,var(--primary) 12%,var(--bg-soft));border-color:color-mix(in srgb,var(--primary) 35%,var(--border-color));color:var(--primary-dark)}.btn-action.secondary{background:var(--bg-soft);border-color:var(--border-color);color:var(--text-muted)}.btn-action.success{background:color-mix(in srgb,var(--success) 12%,var(--bg-soft));border-color:color-mix(in srgb,var(--success) 35%,var(--border-color));color:var(--success-hover)}.btn-action.warning{background:color-mix(in srgb,var(--warning) 12%,var(--bg-soft));border-color:color-mix(in srgb,var(--warning) 35%,var(--border-color));color:var(--warning-hover)}.btn-action.danger{background:color-mix(in srgb,var(--danger) 12%,var(--bg-soft));border-color:color-mix(in srgb,var(--danger) 35%,var(--border-color));color:var(--danger-hover)}.btn-action:hover{transform:translateY(-1px);box-shadow:0 2px 8px #0000001a}.action-text{display:inline}@media (max-width: 640px){.action-text{display:none}.btn-action{padding:.5rem}}.filters-grid{display:grid;gap:1rem}.search-box{position:relative}.search-icon{position:absolute;left:.75rem;top:50%;transform:translateY(-50%);color:var(--muted);z-index:2}.search-input{width:100%;padding-left:2.5rem}.filters-row,.date-filters{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}@media (max-width: 640px){.filters-row,.date-filters{grid-template-columns:1fr}}.pill{display:inline-flex;align-items:center;gap:.375rem;padding:.375rem .75rem;border-radius:9999px;font-size:.75rem;font-weight:500;border:1px solid}.pill-sm{padding:.25rem .5rem;font-size:.6875rem}.pill-icon{font-size:.625rem}.pill-ok{background:var(--ok-bg, #ecfdf5);border-color:var(--ok-border, #bbf7d0);color:var(--ok-text, #065f46)}.pill-warn{background:var(--warn-bg, #fff7ed);border-color:var(--warn-border, #fed7aa);color:var(--warn-text, #9a3412)}.pill-bad{background:var(--danger-bg, #fef2f2);border-color:var(--danger-border, #fecaca);color:var(--danger-text, #991b1b)}.pill-info{background:var(--info-bg, #eff6ff);border-color:var(--info-border, #bfdbfe);color:var(--info-text, #1e40af)}.pill-muted{background:var(--muted-bg, #f8fafc);border-color:var(--muted-border, #e2e8f0);color:var(--muted-text, #475569)}.student-lesson-page{padding:1rem;max-width:1200px;margin:0 auto}.lesson-content-card{background:var(--surface);border:1px solid var(--border, rgba(2,6,23,.06));border-radius:var(--radius);padding:1.5rem;box-shadow:var(--shadow)}.lesson-header{margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:1px solid var(--border, rgba(2,6,23,.06))}.lesson-title{margin:0 0 .5rem;font-size:1.5rem;font-weight:800;color:var(--text)}.lesson-content{line-height:1.7;font-size:1rem}.lesson-content h1{font-size:1.5rem;margin:1.5rem 0 1rem}.lesson-content h2{font-size:1.25rem;margin:1.25rem 0 .75rem}.lesson-content h3{font-size:1.125rem;margin:1rem 0 .5rem}.lesson-content p{margin:.75rem 0}.lesson-content pre{background:var(--bg);padding:1rem;border-radius:8px;overflow-x:auto;margin:1rem 0}.lesson-content code{background:var(--bg);padding:.125rem .25rem;border-radius:4px;font-size:.875em}.lesson-content img{max-width:100%;height:auto;border-radius:8px;margin:1rem 0}.empty-content{text-align:center;padding:2rem;color:var(--muted);font-style:italic}.attachments-section{margin-top:2rem;padding-top:1.5rem;border-top:1px solid var(--border, rgba(2,6,23,.06))}.attachments-section h3{margin:0 0 1rem;font-size:1.125rem;font-weight:600}.attachments-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem}.attachment-card{display:block;border:1px solid var(--border, rgba(2,6,23,.06));border-radius:8px;overflow:hidden;background:var(--surface);transition:all .2s ease;text-decoration:none;color:inherit}.attachment-card:hover{border-color:var(--brand);box-shadow:var(--shadow);transform:translateY(-2px)}.attachment-image{width:100%;height:120px;-o-object-fit:cover;object-fit:cover}.attachment-placeholder{height:120px;display:flex;align-items:center;justify-content:center;background:var(--bg);color:var(--muted);font-size:.75rem;padding:1rem;text-align:center;word-break:break-all}.attachment-name{padding:.75rem;font-size:.875rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.overview-content{display:flex;flex-direction:column;gap:1.25rem}.action-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.75rem}.quick-tips{padding:1rem;background:var(--info-bg, #eff6ff);border:1px solid var(--info-border, #bfdbfe);border-radius:8px}.tips-content{display:flex;align-items:flex-start;gap:.75rem}.tips-icon{color:var(--info-text, #1e40af);font-size:1.125rem;flex-shrink:0;margin-top:.125rem}.tips-title{font-weight:600;color:var(--info-text, #1e40af);margin-bottom:.25rem}.tips-text{color:var(--muted);font-size:.875rem;line-height:1.4}.tab-buttons{display:flex;background:var(--bg);border-radius:8px;padding:.25rem}.tab-btn{padding:.5rem .75rem;border:none;background:transparent;border-radius:6px;font-size:.75rem;font-weight:500;color:var(--muted);cursor:pointer;transition:all .2s}.tab-btn.active{background:var(--surface);color:var(--text);box-shadow:0 1px 3px #0000001a}.bulk-actions{display:flex;align-items:center;gap:.75rem;padding:.75rem;background:var(--bg);border-radius:8px;border:1px solid var(--border, rgba(2,6,23,.06));margin-top:1rem;flex-wrap:wrap}.view-toggle{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border:1px solid var(--border, #e5e7eb);border-radius:8px;background:var(--surface);color:var(--muted);font-weight:500;font-size:.875rem;cursor:pointer;transition:all .2s}.view-toggle.student-active{border-color:var(--info-border, #bfdbfe);background:var(--info-bg, #eff6ff);color:var(--info-text, #1e40af)}.filter-toggle{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;border:1px solid var(--border, #e5e7eb);border-radius:8px;background:var(--surface);cursor:pointer;font-size:.875rem;font-weight:500;color:var(--muted);transition:all .2s}.filter-toggle input[type=checkbox]{accent-color:var(--brand)}.filter-toggle:has(input:checked){color:var(--brand);border-color:var(--brand)}[data-theme=dark]{--ok-bg: #052e23;--ok-border: #0f4b3a;--ok-text: #86efac;--warn-bg: #3b2207;--warn-border: #7a3a12;--warn-text: #fed7aa;--danger-bg: #3a0d0d;--danger-border: #7a1a1a;--danger-text: #fecaca;--info-bg: #0b1b3e;--info-border: #1d3a7a;--info-text: #bfdbfe;--muted-bg: #1f2937;--muted-border: #374151;--muted-text: #d1d5db}[data-theme=dark] .lesson-card.selected{background:#3b82f61a}[data-theme=dark] .content-preview{background:var(--surface-2, #131b33)}[data-theme=dark] .quick-tips{background:#3b82f61a;border-color:#3b82f64d}[data-theme=dark] .attachment-placeholder{background:var(--surface-2, #131b33)}@media (max-width: 768px){.lessons-page,.student-lesson-page{padding:.5rem}.lesson-card{padding:1rem}.lesson-header{flex-direction:column;align-items:flex-start;gap:.5rem}.lesson-main{flex-direction:column;align-items:flex-start}.lesson-checkbox{align-self:flex-start}.action-grid,.attachments-grid{grid-template-columns:1fr}.bulk-actions{flex-direction:column;align-items:stretch}.bulk-actions .btn{width:100%;justify-content:center}}@media (max-width: 480px){.lesson-meta{flex-direction:column;align-items:flex-start;gap:.25rem}.header-actions{flex-direction:column;align-items:stretch}.header-actions .btn{width:100%;justify-content:center}}@media print{.page-header,.header-actions{display:none}.lesson-content-card{border:none;box-shadow:none;padding:0}.attachments-grid{grid-template-columns:1fr}}.lessons-builder-page{min-height:100vh;background:var(--bg)}.builder-header{background:var(--surface);border-bottom:1px solid var(--border, rgba(2,6,23,.06));padding:1rem 1.5rem;display:flex;align-items:center;justify-content:space-between;gap:1.5rem;position:sticky;top:0;z-index:100;box-shadow:var(--shadow)}.header-left{display:flex;align-items:center;gap:1rem;min-width:0}.back-btn{display:flex;align-items:center;gap:.5rem;white-space:nowrap}.back-text{display:inline}.lesson-info h1{margin:0;font-size:1.25rem;font-weight:700;color:var(--text)}.last-saved{font-size:.75rem;color:var(--muted);margin-top:.25rem}.header-center{flex:1;max-width:300px}.progress-container{text-align:center}.progress-label{font-size:.875rem;font-weight:500;color:var(--muted);margin-bottom:.5rem}.progress-bar{height:6px;background:var(--border, #e5e7eb);border-radius:3px;overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,var(--ok),var(--ok));border-radius:3px;transition:width .3s ease}.header-right{display:flex;align-items:center;gap:.75rem}.builder-grid{display:grid;grid-template-columns:340px 1fr 380px;gap:1.5rem;padding:1.5rem;max-width:1920px;margin:0 auto;min-height:calc(100vh - 80px)}.builder-panel{display:flex;flex-direction:column;gap:1.5rem}.panel-card{background:var(--surface);border-radius:var(--radius);border:1px solid var(--border, rgba(2,6,23,.06));overflow:hidden;box-shadow:var(--shadow)}.editor-card{min-height:600px;display:flex;flex-direction:column}.ai-card{position:sticky;top:100px;max-height:calc(100vh - 140px);overflow-y:auto}.panel-header{padding:1.25rem 1.5rem;border-bottom:1px solid var(--border, rgba(2,6,23,.06));display:flex;align-items:center;justify-content:space-between;background:var(--panel)}.panel-header h2{margin:0;font-size:1.125rem;font-weight:600;color:var(--text)}.badge-danger{background:var(--danger-bg, #fef2f2);color:var(--danger-text, #991b1b);border:1px solid var(--danger-border, #fecaca)}.badge-info{background:var(--info-bg, #eff6ff);color:var(--info-text, #1e40af);border:1px solid var(--info-border, #bfdbfe)}.form-grid{padding:1.5rem;display:flex;flex-direction:column;gap:1.25rem}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.form-group{display:flex;flex-direction:column;gap:.5rem}.form-label{font-size:.875rem;font-weight:500;color:var(--text);display:flex;justify-content:space-between;align-items:center}.required{color:var(--danger)}.optional{font-size:.75rem;color:var(--muted);font-weight:400}.panel-footer{padding:1rem 1.5rem;border-top:1px solid var(--border, rgba(2,6,23,.06));background:var(--bg)}.hint-text{font-size:.75rem;color:var(--muted);line-height:1.4}.word-count{font-size:.875rem;color:var(--muted);font-weight:500}.ai-status{display:flex;align-items:center;gap:.5rem;font-size:.75rem;color:var(--muted)}.status-indicator{width:6px;height:6px;border-radius:50%}.status-indicator.online{background:var(--ok)}.status-indicator.offline{background:var(--danger)}.ai-tabs{display:grid;grid-template-columns:1fr 1fr;border-bottom:1px solid var(--border, rgba(2,6,23,.06))}.ai-tab{display:flex;align-items:center;gap:.5rem;padding:1rem 1.5rem;background:none;border:none;cursor:pointer;font-size:.875rem;font-weight:500;color:var(--muted);transition:all .2s;justify-content:center}.ai-tab.active{color:var(--brand);background:var(--panel);border-bottom:2px solid var(--brand)}.ai-tab:hover:not(.active){background:var(--bg);color:var(--text)}.ai-content{padding:1.5rem}.ai-actions{display:flex;flex-direction:column;gap:.75rem;margin:1.5rem 0}.ai-output{border:1px solid var(--border, rgba(2,6,23,.06));border-radius:8px;overflow:hidden}.output-header{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;background:var(--bg);border-bottom:1px solid var(--border, rgba(2,6,23,.06));font-size:.875rem;font-weight:500;color:var(--text)}.output-content{padding:1rem;max-height:300px;overflow-y:auto;background:var(--bg)}.output-content pre{margin:0;font-size:.75rem;line-height:1.5;color:var(--text);white-space:pre-wrap;font-family:Monaco,Menlo,Ubuntu Mono,monospace}.ai-tips{background:var(--info-bg, #eff6ff);border:1px solid var(--info-border, #bfdbfe);border-radius:8px;padding:1rem}.ai-tips h4{margin:0 0 .75rem;font-size:.875rem;color:var(--info-text, #1e40af)}.ai-tips ul{margin:0;padding-left:1.25rem;color:var(--muted);font-size:.75rem;line-height:1.5}.ai-tips li{margin-bottom:.5rem}.rich-editor-container{flex:1;display:flex;flex-direction:column;min-height:400px}.rich-editor-toolbar{background:var(--panel);border-bottom:1px solid var(--border, rgba(2,6,23,.06));padding:.75rem;display:flex;gap:.5rem;flex-wrap:wrap}.rich-editor-content{flex:1;padding:1rem;background:var(--surface);min-height:400px;overflow-y:auto}@media (max-width: 1400px){.builder-grid{grid-template-columns:320px 1fr 360px}}@media (max-width: 1200px){.builder-grid{grid-template-columns:300px 1fr;gap:1rem}.right-panel{display:none}}@media (max-width: 1024px){.builder-grid{grid-template-columns:280px 1fr}.form-row{grid-template-columns:1fr}}@media (max-width: 768px){.builder-grid{grid-template-columns:1fr;padding:1rem;gap:1rem}.builder-header{flex-direction:column;gap:1rem;text-align:center;padding:1rem}.header-left{flex-direction:column;gap:.75rem;text-align:center}.header-center{max-width:none;width:100%}.header-right{width:100%;justify-content:center}.back-text{display:none}.btn-text{display:inline}}@media (max-width: 640px){.builder-grid{padding:.5rem}.panel-header{padding:1rem;flex-direction:column;gap:.75rem;align-items:flex-start}.form-grid,.ai-content{padding:1rem}.ai-tabs{grid-template-columns:1fr}.output-header{flex-direction:column;gap:.75rem;align-items:stretch;text-align:center}.header-right{flex-direction:column;align-items:stretch}.btn-text{display:inline}}@media (max-width: 480px){.lesson-info h1{font-size:1.125rem}.panel-header h2{font-size:1rem}.tab-text{display:none}.ai-tab{padding:.75rem 1rem}}[data-theme=dark] .builder-header{background:var(--surface-2, #131b33);border-bottom-color:#e7ecff1a}[data-theme=dark] .panel-card{background:var(--surface-1, #0f1529);border-color:#e7ecff1a}[data-theme=dark] .panel-header{background:var(--surface-2, #131b33);border-bottom-color:#e7ecff1a}[data-theme=dark] .ai-output{border-color:#e7ecff1a}[data-theme=dark] .output-header{background:var(--surface-2, #131b33);border-bottom-color:#e7ecff1a}[data-theme=dark] .output-content{background:var(--surface-2, #131b33)}[data-theme=dark] .ai-tips{background:#3b82f61a;border-color:#3b82f64d}[data-theme=dark] .ai-tab.active{background:var(--surface-2, #131b33)}[data-theme=dark] .progress-bar{background:#ffffff1a}[data-theme=dark] .rich-editor-toolbar{background:var(--surface-2, #131b33);border-bottom-color:#e7ecff1a}[data-theme=dark] .rich-editor-content{background:var(--surface-1, #0f1529)}.loading-spinner-small{width:16px;height:16px;border:2px solid transparent;border-top:2px solid currentColor;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.btn-full{width:100%;justify-content:center}.text-center{text-align:center}.flex-1{flex:1}.min-h-0{min-height:0}.messages-page{max-width:1200px;margin:0 auto;padding:clamp(1rem,3vw,1.5rem);display:flex;flex-direction:column;gap:1rem}.messages-toolbar{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;flex-wrap:wrap}.messages-toolbar .eyebrow{text-transform:uppercase;letter-spacing:.1em;font-size:.7rem;color:var(--text-muted);margin:0 0 .3rem}.messages-toolbar h1{margin:0 0 .25rem;font-size:1.6rem}.toolbar-actions{display:flex;gap:.5rem}.toolbar-actions .btn{border-radius:999px;padding-inline:1.1rem}.messages-layout{display:grid;grid-template-columns:300px minmax(0,1fr);gap:1rem}.messages-sidebar{border:1px solid var(--border-color);border-radius:16px;background:var(--card-bg);padding:1rem;display:flex;flex-direction:column;gap:.5rem;box-shadow:var(--shadow-sm)}.sidebar-header{display:flex;align-items:center;justify-content:space-between;font-weight:600}.pill-count{min-width:28px;height:24px;border-radius:999px;background:var(--bg-soft);display:inline-flex;align-items:center;justify-content:center;font-size:.75rem;border:1px solid var(--border-color)}.thread-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem;max-height:60vh;overflow:auto}.thread-item{width:100%;text-align:left;border:1px solid var(--border-color);border-radius:12px;padding:.6rem .75rem;background:var(--card-bg);transition:border-color .12s ease,box-shadow .12s ease}.thread-item.active{border-color:var(--brand, #2563eb);box-shadow:0 6px 16px #2563eb29}.thread-title{font-weight:700;display:flex;align-items:center;gap:.35rem}.thread-preview{font-size:.85rem;color:var(--text-muted)}.thread-meta{font-size:.75rem;color:var(--text-muted)}.thread-unread{width:8px;height:8px;border-radius:50%;background:#16a34a;display:inline-block}.messages-thread{border:1px solid var(--border-color);border-radius:16px;background:var(--card-bg);padding:1rem;display:flex;flex-direction:column;gap:1rem;min-height:520px;box-shadow:var(--shadow-sm)}.thread-header{display:flex;align-items:center;justify-content:space-between}.thread-messages{flex:1;max-height:420px;overflow-y:auto;padding-right:.5rem;border-radius:12px;background:var(--bg);border:1px solid var(--border-color);padding:.75rem}.message-bubble{border:1px solid var(--border-color);border-radius:14px;padding:.6rem .75rem;margin-bottom:.5rem;max-width:90%;background:var(--surface)}.message-bubble.self{margin-left:auto;background:#dbeafe;border-color:#93c5fd}.message-meta{font-size:.75rem;color:var(--text-muted);display:flex;justify-content:space-between;margin-bottom:.25rem}.message-input{display:flex;gap:.5rem;align-items:center;border-top:1px solid var(--border-color);padding-top:.5rem}.badge.danger{background:#fee2e2;color:#b91c1c}.message-input .btn{border-radius:999px;padding-inline:1.1rem}.message-compose .modal-body{display:flex;flex-direction:column;gap:.75rem}.message-compose .modal-footer{justify-content:flex-end}@media (max-width: 900px){.messages-layout{grid-template-columns:1fr}.messages-thread{min-height:50vh}}.hover\:scale-\[1\.02\]:hover{--tw-scale-x: 1.02;--tw-scale-y: 1.02;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))}.hover\:border-blue-500:hover{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity))}.hover\:border-gray-300:hover{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.hover\:bg-blue-50:hover{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity))}.hover\:bg-blue-700:hover{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity))}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.hover\:bg-gray-200:hover{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.hover\:bg-gray-400:hover{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity))}.hover\:bg-gray-50:hover{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity))}.hover\:bg-gray-600:hover{--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity))}.hover\:bg-gray-700:hover{--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity))}.hover\:bg-indigo-50\/60:hover{background-color:#eef2ff99}.hover\:bg-indigo-700:hover{--tw-bg-opacity: 1;background-color:rgb(67 56 202 / var(--tw-bg-opacity))}.hover\:bg-red-100:hover{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity))}.hover\:bg-slate-100:hover{--tw-bg-opacity: 1;background-color:rgb(241 245 249 / var(--tw-bg-opacity))}.hover\:bg-slate-50:hover{--tw-bg-opacity: 1;background-color:rgb(248 250 252 / var(--tw-bg-opacity))}.hover\:bg-slate-800:hover{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity))}.hover\:bg-white:hover{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.hover\:bg-white\/15:hover{background-color:#ffffff26}.hover\:opacity-95:hover{opacity:.95}.hover\:shadow-sm:hover{--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)}.hover\:outline:hover{outline-style:solid}.hover\:outline-2:hover{outline-width:2px}.hover\:outline-offset-2:hover{outline-offset:2px}.hover\:outline-offset-4:hover{outline-offset:4px}.hover\:outline-blue-400:hover{outline-color:#60a5fa}.focus\:border-indigo-300:focus{--tw-border-opacity: 1;border-color:rgb(165 180 252 / var(--tw-border-opacity))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-4:focus{--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(4px + 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)}.focus\:ring-indigo-100:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(224 231 255 / var(--tw-ring-opacity))}.active\:scale-\[0\.98\]:active{--tw-scale-x: .98;--tw-scale-y: .98;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))}.group:hover .group-hover\:opacity-100{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-4{grid-column:span 4 / span 4}.md\:col-span-8{grid-column:span 8 / span 8}.md\:block{display:block}.md\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:justify-between{justify-content:space-between}}@media (min-width: 1024px){.lg\:col-span-4{grid-column:span 4 / span 4}.lg\:col-span-8{grid-column:span 8 / span 8}.lg\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}*,*:before,*:after{box-sizing:border-box}html,body{height:100%}body{margin:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;font-family:var(--app-font, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Inter, "Helvetica Neue", Arial, "Noto Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol");background:var(--bg-main);color:var(--text-primary);line-height:1.5}img,svg,video,canvas,audio,iframe,embed,object{display:block;max-width:100%}h1,h2,h3,h4,h5,h6{margin:0 0 .5rem;font-weight:800;color:var(--text-primary);letter-spacing:-.02em}p{margin:0 0 1rem}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}button{font:inherit}:focus-visible{outline:3px solid color-mix(in srgb,var(--primary),white 50%);outline-offset:2px}:root{--primary: #1f6feb;--primary-dark: #1b4f9c;--primary-hover: #1d5fd6;--primary-alpha: rgba(31,111,235,.16);--secondary: #f97316;--secondary-hover: #ea580c;--accent: #14b8a6;--accent-hover: #0f766e;--success: #16a34a;--success-hover: #15803d;--success-alpha: rgba(22,163,74,.12);--warning: #f59e0b;--warning-hover: #d97706;--warning-alpha: rgba(245,158,11,.14);--danger: #ef4444;--danger-hover: #dc2626;--danger-alpha: rgba(239,68,68,.12);--info: #2563eb;--info-alpha: rgba(37,99,235,.12);--bg-main: #f6f3ee;--bg-soft: #f1ede6;--bg-hover: #e9e3d8;--bg-secondary: var(--bg-soft);--card-bg: #ffffff;--border-color: #e4ded3;--border-color-light: #eee7da;--card-border: var(--border-color);--bg-surface: var(--card-bg);--surface-2: color-mix(in srgb, var(--card-bg) 92%, var(--bg-soft));--text-primary: #0f1d2e;--text-secondary: #2f3b4f;--text-muted: #6b7280;--text-on-primary: #ffffff;--shadow-sm: 0 1px 2px rgba(15,23,42,.05);--shadow-md: 0 8px 18px rgba(15,23,42,.1);--shadow-lg: 0 16px 36px rgba(15,23,42,.16);--radius-xl: 20px;--radius-lg: 16px;--radius-md: 12px;--radius-sm: 10px;--app-font: "DM Sans", ui-sans-serif, system-ui, -apple-system, "Segoe UI", "Helvetica Neue", Arial, "Noto Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--font-headings: "Sora", var(--app-font);--brand: var(--primary);--brand-600: var(--primary-hover);--brand-700: var(--primary-dark);--ok: var(--success);--warn: var(--warning);--danger: var(--danger);--bg: var(--bg-main);--surface: var(--card-bg);--panel: var(--card-bg);--text: var(--text-primary);--muted: var(--text-muted);--border: var(--border-color);--ring: 0 0 0 3px var(--primary-alpha);--shadow: var(--shadow-md);--radius: var(--radius-lg);--radius-sm: var(--radius-md);--radius-xs: var(--radius-sm);--card-padding: 1rem;--card-shadow: var(--shadow-sm);--deck-gap: .75rem;--font: var(--app-font);--page-bg: radial-gradient(1200px 520px at 10% -10%, rgba(31,111,235,.08), transparent), radial-gradient(900px 480px at 85% 0%, rgba(20,184,166,.1), transparent), var(--bg-main)}html[data-theme=dark]{--bg-main: #0b1220;--bg-soft: #0f172a;--bg-hover: #172036;--bg-secondary: var(--bg-soft);--card-bg: #0f1626;--border-color: #1e2a44;--border-color-light: #22304f;--card-border: var(--border-color);--bg-surface: var(--card-bg);--surface-2: color-mix(in srgb, var(--card-bg) 90%, var(--bg-soft));--text-primary: #e5ecff;--text-secondary: #c7d2fe;--text-muted: #95a2c9;--shadow-sm: 0 1px 2px rgba(2,6,23,.4);--shadow-md: 0 6px 16px rgba(2,6,23,.6);--shadow-lg: 0 12px 30px rgba(2,6,23,.7);--page-bg: radial-gradient(900px 420px at 0% -5%, rgba(31,111,235,.18), transparent), radial-gradient(900px 420px at 100% 0%, rgba(20,184,166,.18), transparent), var(--bg-main)}.container{width:100%;max-width:1200px;margin-inline:auto;padding-inline:1rem}.grid{display:grid}.flex{display:flex}.items-center{align-items:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mb-0{margin-bottom:0}.m-0{margin:0}.p-0{padding:0}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.hidden{display:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media (min-width: 640px){.sm\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width: 768px){.md\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\\:flex{display:flex}}@media (min-width: 1024px){.lg\\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}.page-title{font-size:clamp(1.5rem,2vw + .5rem,2rem);font-weight:900}.page-subtitle{color:var(--text-muted)}.card{background:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:1rem}.card:hover{box-shadow:var(--shadow-md)}.card.headered>.card-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding-bottom:.75rem;border-bottom:1px solid var(--border-color-light)}.card .card-title{font-weight:800}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.7rem 1rem;border-radius:10px;border:none;cursor:pointer;font-weight:700;color:var(--text-primary);background:var(--bg-soft);border:1px solid var(--border-color);transition:transform .15s ease,box-shadow .2s ease,background .2s ease,color .2s ease,border-color .2s ease;text-decoration:none}.btn:hover{background:var(--bg-hover);border-color:color-mix(in srgb,var(--primary),white 40%);transform:translateY(-1px)}.btn.small,.btn-small{padding:.45rem .7rem;font-size:.9rem;border-radius:8px}.btn-primary,.btn.primary{background:var(--primary);color:var(--text-on-primary);border-color:transparent}.btn-primary:hover,.btn.primary:hover{background:var(--primary-hover)}.btn-secondary,.btn.secondary{background:var(--bg-soft);color:var(--text-primary);border:1px solid var(--border-color)}.btn-success,.btn.success{background:var(--success);color:#fff;border-color:transparent}.btn-success:hover,.btn.success:hover{background:var(--success-hover)}.btn-danger,.btn.danger{background:var(--danger);color:#fff;border-color:transparent}.btn-danger:hover,.btn.danger:hover{background:var(--danger-hover)}.btn-outline{background:transparent;color:var(--primary);border:1px solid color-mix(in srgb,var(--primary),black 10%)}.btn-outline:hover{background:color-mix(in srgb,var(--primary),white 90%)}.btn-ghost{background:transparent;color:var(--text-secondary);border:1px dashed var(--border-color)}.btn-ghost:hover{background:var(--bg-soft)}.btn.icon{width:36px;height:36px;padding:0;display:inline-grid;place-items:center}.input{background:var(--bg-soft);border:1px solid var(--border-color);border-radius:10px;padding:.6rem .75rem;color:var(--text-primary);box-shadow:inset 0 1px #0f172a05}.input:focus-within,.input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-alpha)}.input>input,.input>select,.input>textarea{outline:none;border:0;background:transparent;color:inherit;width:100%;font:inherit}input.input,select.input,textarea.input{width:100%}.input-group{display:flex;border:1px solid var(--border-color);border-radius:10px;overflow:hidden;background:var(--bg-soft)}.input-group>.input{border:none;border-radius:0;flex:1}.input-addon{display:inline-flex;align-items:center;padding:.6rem .75rem;color:var(--text-muted)}.label{font-weight:700;color:var(--text-primary);font-size:.9rem;margin-bottom:.35rem}.help{font-size:.85rem;color:var(--text-muted)}.input.is-error,.is-error.input{border-color:var(--danger);box-shadow:0 0 0 3px var(--danger-alpha)}.input.is-success,.is-success.input{border-color:var(--success);box-shadow:0 0 0 3px var(--success-alpha)}.badge{display:inline-flex;align-items:center;gap:.35rem;padding:.25rem .55rem;border-radius:999px;font-weight:800;font-size:.8rem;background:var(--bg-soft);color:var(--text-secondary);border:1px solid var(--border-color)}.badge.ok{background:#ecfdf5;color:#065f46;border-color:#a7f3d0}.badge.warn{background:#fff7ed;color:#9a3412;border-color:#fed7aa}.badge.info{background:#eef2ff;color:#3730a3;border-color:#c7d2fe}.badge.muted{background:#f3f4f6;color:#374151;border-color:#e5e7eb}.table{width:100%;border-collapse:separate;border-spacing:0;background:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-sm)}.table th,.table td{padding:.75rem .9rem;text-align:left}.table thead th{background:color-mix(in srgb,var(--bg-soft),white 50%);font-weight:800;color:var(--text-secondary);border-bottom:1px solid var(--border-color)}.table tbody tr+tr td{border-top:1px solid var(--border-color-light)}.table tbody tr:hover{background:var(--bg-soft)}.table-wrap{overflow-x:auto;border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.tabs{display:flex;gap:.4rem;flex-wrap:wrap;background:var(--bg-soft);border:1px solid var(--border-color);padding:.25rem;border-radius:999px}.tab{padding:.5rem .9rem;border-radius:999px;font-weight:800;color:var(--text-secondary);border:1px solid transparent;background:transparent;cursor:pointer}.tab:hover{background:#fff;border-color:var(--border-color)}.tab.active{background:#fff;border-color:var(--border-color);color:var(--text-primary)}.alert{display:flex;gap:.6rem;align-items:flex-start;padding:.8rem 1rem;border-radius:var(--radius-md);border:1px solid var(--border-color);background:var(--bg-soft);color:var(--text-secondary)}.alert.ok{background:#ecfdf5;color:#065f46;border-color:#a7f3d0}.alert.warn{background:#fff7ed;color:#9a3412;border-color:#fed7aa}.alert.info{background:#eef2ff;color:#3730a3;border-color:#c7d2fe}.alert.danger{background:#fef2f2;color:#991b1b;border-color:#fecaca}.modal{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;z-index:50;background:color-mix(in srgb,black,transparent 60%)}.modal-card{width:min(720px,92vw);background:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);overflow:hidden}.modal-card .modal-head{display:flex;align-items:center;justify-content:space-between;padding:1rem;background:linear-gradient(135deg,var(--primary),var(--primary-dark));color:#fff}.modal-card .modal-body{padding:1rem}.modal-card .modal-foot{padding:1rem;border-top:1px solid var(--border-color);display:flex;justify-content:flex-end;gap:.5rem}@media (max-width: 768px){.modal{place-items:end}.modal-card{width:100%;border-radius:16px 16px 0 0}}.toast-viewport{position:fixed;right:16px;bottom:16px;display:grid;gap:.6rem;z-index:60}.toast{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.6rem;padding:.7rem .9rem;border-radius:var(--radius-md);border:1px solid var(--border-color);background:var(--card-bg);box-shadow:var(--shadow-md);min-width:260px}.toast.ok{border-color:#a7f3d0;background:#ecfdf5;color:#065f46}.toast.warn{border-color:#fed7aa;background:#fff7ed;color:#9a3412}.toast.info{border-color:#c7d2fe;background:#eef2ff;color:#3730a3}.toast.danger{border-color:#fecaca;background:#fef2f2;color:#991b1b}.toast .toast-close{background:transparent;border:none;cursor:pointer;color:inherit;opacity:.7}.toast .toast-close:hover{opacity:1}.skeleton{position:relative;overflow:hidden;background:color-mix(in srgb,var(--border-color),white 10%);border-radius:6px;min-height:1rem}.skeleton:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--bg-hover),white 20%),transparent);animation:skel 1.6s infinite}@keyframes skel{0%{transform:translate(-100%)}to{transform:translate(100%)}}.page-header{background:linear-gradient(135deg,var(--primary),var(--primary-dark));color:#fff;padding:1rem;margin-bottom:1rem}.page-header .header-content{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap}.page-header .header-title{display:flex;align-items:center;gap:.5rem}.page-header .title-indicator{width:10px;height:10px;border-radius:999px;background:#fff;opacity:.8}.muted{color:var(--text-muted)}.soft{background:var(--bg-soft)}.hr{height:1px;background:var(--border-color-light);margin:.75rem 0;border:0}.kbd{display:inline-grid;place-items:center;min-width:1.5rem;padding:0 .35rem;height:1.5rem;border-radius:6px;border:1px solid var(--border-color);background:var(--bg-soft);font-size:.8rem;font-weight:700;color:var(--text-secondary)}.announcements-page .announcements-grid{display:grid;gap:16px;grid-template-columns:1fr;align-items:start}.announcements-page .announcements-grid>.card{min-height:0}@media (min-width: 1024px){.announcements-page .announcements-grid.with-form{grid-template-columns:2fr 3fr 2fr}.announcements-page .announcements-grid:not(.with-form){grid-template-columns:2fr 3fr}}.announcement-list{display:flex;flex-direction:column;gap:10px}.announcement-list-item{border:1px solid var(--border-color, rgba(15, 23, 42, .08));border-radius:12px;padding:10px 12px;cursor:pointer;transition:border-color .2s ease,box-shadow .2s ease}.announcement-list-item.active{border-color:#2563eb59;box-shadow:0 6px 16px #2563eb2e}.announcement-body{white-space:pre-wrap;line-height:1.6;font-size:1rem}[class^=i-lucide-],[class*=" i-lucide-"]{width:1em;height:1em;display:inline-block}@media print{.page-header,.toast-viewport,.modal,.modal-backdrop{display:none!important}body{background:#fff!important;color:#000!important}a{color:#000!important;text-decoration:underline}.card{box-shadow:none!important;border-color:#ccc!important}}:root{--ds-card-radius: var(--radius, 16px);--ds-card-padding: var(--card-padding, 1rem);--ds-card-shadow: var(--card-shadow, var(--shadow-sm));--ds-btn-radius: 10px;--ds-btn-padding: .65rem 1rem;--ds-btn-font: .95rem;--ds-badge-radius: 999px}.btn,.btn-ghost,.btn-outline{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;border-radius:var(--ds-btn-radius)!important;padding:var(--ds-btn-padding)!important;font-weight:700!important;font-size:var(--ds-btn-font);min-height:40px;line-height:1.1;border:1px solid transparent;cursor:pointer;transition:transform .15s ease,box-shadow .2s ease,background .2s ease,border-color .2s ease,color .2s ease;text-decoration:none}.btn{background:var(--bg-soft)!important;border-color:var(--border-color, var(--border, rgba(2,6,23,.08)))!important;color:var(--text-primary, var(--text, #0f172a))!important;box-shadow:0 4px 14px #0f172a14}.btn:hover{transform:translateY(-1px)}.btn:active{transform:translateY(0)}.btn:focus-visible{outline:none;box-shadow:var(--ring, 0 0 0 3px rgba(37,99,235,.25))}.btn[disabled]{opacity:.6;cursor:not-allowed;transform:none;box-shadow:none}.btn-primary,.btn.primary{background:var(--brand, var(--primary))!important;border-color:color-mix(in oklab,var(--brand, var(--primary)),rgba(0,0,0,.12))!important;color:var(--text-on-primary, #fff)!important;box-shadow:0 8px 20px #2563eb40}.btn-primary:hover,.btn.primary:hover{background:var(--brand-600, var(--primary-hover))!important}.btn-secondary,.btn.secondary{background:var(--surface, var(--card-bg))!important;border-color:var(--border-color, var(--border, rgba(2,6,23,.12)))!important;color:var(--text, var(--text-primary))!important}.btn-danger,.btn.danger{background:var(--danger, #ef4444)!important;border-color:color-mix(in srgb,var(--danger, #ef4444),black 10%)!important;color:#fff!important}.btn-success,.btn.success{background:var(--ok, #10b981)!important;border-color:color-mix(in srgb,var(--ok, #10b981),black 10%)!important;color:#fff!important}.btn-outline{background:transparent!important;color:var(--brand, var(--primary))!important;border-color:color-mix(in srgb,var(--brand, var(--primary)),black 12%)!important}.btn-outline:hover{background:color-mix(in srgb,var(--brand, var(--primary)),white 88%)!important}.btn-ghost{background:color-mix(in srgb,var(--bg-soft) 60%,transparent)!important;color:var(--text-secondary, var(--muted))!important;border-color:color-mix(in srgb,var(--text-secondary, var(--muted)),transparent 60%)!important}.btn-ghost:hover{background:color-mix(in srgb,var(--bg-soft) 80%,transparent)!important}.btn-sm,.btn.small{padding:.4rem .75rem!important;font-size:.82rem;border-radius:8px!important;min-height:32px}.btn-lg{padding:.85rem 1.25rem!important;font-size:1rem;border-radius:12px!important}.btn-block{display:flex!important;width:100%}.card{background:var(--surface, var(--card-bg))!important;border-radius:var(--ds-card-radius)!important;border:1px solid var(--border-color, var(--border, rgba(15,23,42,.08)))!important;padding:var(--ds-card-padding)!important;box-shadow:var(--ds-card-shadow)!important;color:var(--text, var(--text-primary))}.card h3,.card .card-title{font-size:1.05rem;font-weight:800;color:inherit;margin-block:0 .35rem}.card-muted{color:var(--muted)}.deck{background:var(--surface, var(--card-bg))!important;border:1px solid var(--border-color, var(--border, rgba(15,23,42,.08)))!important;border-radius:var(--ds-card-radius)!important;padding:var(--ds-card-padding)!important;box-shadow:var(--ds-card-shadow)!important;display:flex;flex-direction:column;gap:var(--deck-gap, .75rem)}.deck-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding-bottom:.35rem;border-bottom:1px solid color-mix(in srgb,var(--border-color, var(--border, rgba(15,23,42,.08))),transparent 20%)}.deck-title{margin:0;font-size:1.05rem;font-weight:800;color:var(--text, var(--text-primary))}.deck-content{display:flex;flex-direction:column;gap:.65rem}.badge{display:inline-flex;align-items:center;gap:.35rem;padding:.3rem .65rem;border-radius:var(--ds-badge-radius);font-size:.78rem;font-weight:700;border:1px solid var(--border-color, var(--border, rgba(15,23,42,.12)))!important;background:var(--bg-soft)!important;color:var(--text-secondary, var(--muted))!important}.badge.sa{background:#111827!important;color:#fff!important;border-color:#111827!important}.badge.admin{background:#1f2937!important;color:#fff!important;border-color:#1f2937!important}.badge.teacher{background:#0ea5e9!important;color:#fff!important;border-color:#0ea5e9!important}.badge.student{background:#6366f1!important;color:#fff!important;border-color:#6366f1!important}.input,.select,.textarea{width:100%;border-radius:10px;border:1px solid var(--border-color, #d7dce5)!important;padding:.65rem .85rem!important;background:var(--surface, var(--card-bg))!important;color:var(--text, var(--text-primary))!important;font:inherit;transition:border-color .15s ease,box-shadow .2s ease,background .2s ease}.textarea{min-height:110px;resize:vertical}.input::-moz-placeholder,.textarea::-moz-placeholder{color:color-mix(in srgb,var(--muted),transparent 30%)}.input::placeholder,.textarea::placeholder{color:color-mix(in srgb,var(--muted),transparent 30%)}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:color-mix(in srgb,var(--brand, var(--primary)),white 30%)!important;box-shadow:var(--ring, 0 0 0 3px rgba(37,99,235,.25))}.table{width:100%;border-collapse:separate;border-spacing:0;border:1px solid var(--border-color, var(--border, rgba(15,23,42,.1)))!important;border-radius:var(--ds-card-radius)!important;background:var(--surface, var(--card-bg))!important;box-shadow:var(--ds-card-shadow);overflow:hidden}.table th,.table td{padding:.75rem .95rem;border-bottom:1px solid var(--border-color, rgba(15,23,42,.08));text-align:left}.table thead th{background:color-mix(in srgb,var(--bg-soft),white 30%);font-weight:700;color:var(--text-secondary, var(--muted))}.table tbody tr:hover td{background:color-mix(in srgb,var(--bg-soft),white 12%)}.table-wrap{overflow-x:auto;border-radius:var(--ds-card-radius);box-shadow:var(--ds-card-shadow)}.card-grid{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.muted{color:var(--muted)}@media (max-width: 720px){.card,.deck{border-radius:14px!important;padding:.85rem!important}.btn{width:100%}}.topbar{position:sticky;top:0;z-index:50;background:color-mix(in srgb,var(--card-bg) 88%,transparent);border-bottom:1px solid var(--border-color);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.tb__wrap{display:flex;align-items:center;gap:1rem;padding:.75rem 1rem}.tb__left,.tb__center,.tb__right{display:flex;align-items:center}.tb__left{flex:1;min-width:0}.tb__center{flex:1;justify-content:center}.tb__right{flex:1;justify-content:flex-end;gap:.5rem}.tb__brand{display:inline-flex;align-items:center;gap:.65rem;text-decoration:none;color:var(--text-primary);font-weight:800}.tb__logo{width:34px;height:34px;border-radius:10px;-o-object-fit:cover;object-fit:cover;box-shadow:var(--shadow-sm);background:var(--bg-soft)}.tb__brand-text{font-size:1rem;letter-spacing:-.01em;white-space:nowrap}.tb__page-title{margin:0;font-size:1.1rem;font-weight:700;color:var(--text-primary);text-align:center;white-space:nowrap}.tb__notif-wrapper{position:relative}.topbar--minimal .tb__notif-wrapper{display:none}.tb__bell{position:relative;display:inline-flex;align-items:center;gap:.4rem;padding:.5rem .65rem;border-radius:10px;border:1px solid var(--border-color);background:var(--bg-soft);color:var(--text-primary);cursor:pointer}.tb__bell.is-open{box-shadow:var(--ring);border-color:color-mix(in srgb,var(--primary) 35%,var(--border-color))}.tb__badge{position:absolute;top:-6px;right:-6px;min-width:18px;height:18px;padding:0 6px;border-radius:999px;background:var(--danger);color:#fff;font-size:.7rem;font-weight:700;display:inline-flex;align-items:center;justify-content:center;border:2px solid var(--card-bg)}.tb__burger{border:1px solid var(--border-color);background:var(--bg-soft);border-radius:10px;padding:.55rem .65rem;display:inline-flex;align-items:center;justify-content:center}.tb__burger-inner{display:grid;gap:4px}.tb__burger-inner span{display:block;width:20px;height:2px;background:var(--text-primary);border-radius:999px}.tb-notifications{position:absolute;top:calc(100% + .5rem);right:0;width:min(360px,92vw);background:var(--card-bg);border:1px solid var(--border-color);border-radius:14px;box-shadow:var(--shadow-lg);padding:.75rem;z-index:60}.tb-notifications__header{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;margin-bottom:.75rem}.tb-notifications__summary{font-size:.8rem;color:var(--text-muted);margin-top:.2rem}.tb-notifications__chips{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.5rem}.tb-chip{display:inline-flex;align-items:center;gap:.4rem;padding:.2rem .55rem;border-radius:999px;background:var(--bg-soft);border:1px solid var(--border-color);font-size:.75rem;font-weight:600;color:var(--text-secondary)}.tb-chip__count{background:var(--primary);color:var(--text-on-primary);border-radius:999px;padding:0 6px;font-size:.7rem}.tb-notifications__section h5{margin:.5rem 0 .35rem;font-size:.8rem;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted)}.tb-notifications__error{padding:.65rem .75rem;border-radius:10px;border:1px solid color-mix(in srgb,var(--danger) 45%,var(--border-color));background:color-mix(in srgb,var(--danger) 10%,var(--card-bg));color:var(--danger-hover);font-size:.85rem}.tb-notifications ul{list-style:none;margin:0;padding:0}.notif-item{width:100%;text-align:left;display:grid;gap:.25rem;padding:.6rem .7rem;border-radius:10px;border:1px solid transparent;background:transparent;color:var(--text-primary)}.notif-item:hover{background:var(--bg-soft);border-color:var(--border-color)}.notif-title{display:inline-flex;align-items:center;gap:.35rem;font-weight:700;font-size:.9rem}.notif-dot{width:8px;height:8px;border-radius:50%;background:var(--primary)}.notif-detail{font-size:.82rem;color:var(--text-secondary)}.notif-time{font-size:.75rem;color:var(--text-muted)}.notif-empty{padding:.75rem;color:var(--text-muted);text-align:center}.notif-cta{margin-bottom:.35rem}.notif-cta__btn{width:100%;border-radius:10px;border:1px solid var(--border-color);background:var(--bg-soft);padding:.5rem .65rem;font-weight:600}.tb-drawer__overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a59;opacity:0;pointer-events:none;transition:opacity .2s ease;z-index:60}.tb-drawer__overlay.is-open{opacity:1;pointer-events:auto}.tb-drawer{position:fixed;top:0;right:0;height:100vh;width:min(360px,92vw);background:var(--card-bg);border-left:1px solid var(--border-color);box-shadow:var(--shadow-lg);transform:translate(100%);transition:transform .2s ease;z-index:70;display:flex;flex-direction:column}.tb-drawer.is-open{transform:translate(0)}.tb-drawer__header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:1rem 1.25rem;border-bottom:1px solid var(--border-color)}.tb-drawer__brand{display:inline-flex;align-items:center;gap:.6rem;font-weight:800;color:var(--text-primary)}.tb-drawer__logo{width:30px;height:30px;border-radius:8px;-o-object-fit:cover;object-fit:cover}.tb-drawer__title{font-size:1rem}.tb-drawer__close{border:1px solid var(--border-color);background:var(--bg-soft);border-radius:8px;padding:.4rem;display:inline-flex;align-items:center;justify-content:center}.tb-drawer__user-section{padding:1rem 1.25rem;border-bottom:1px solid var(--border-color)}.tb-drawer__user-main{display:flex;align-items:center;gap:.75rem}.tb-drawer__avatar-img,.tb-drawer__avatar-initials{width:44px;height:44px;border-radius:12px;background:var(--bg-soft);display:inline-flex;align-items:center;justify-content:center;font-weight:700;color:var(--text-primary)}.tb-drawer__user-name{font-weight:700;color:var(--text-primary)}.tb-drawer__user-role{font-size:.75rem;color:var(--text-muted)}.tb-drawer__profile-btn{margin-top:.75rem;display:inline-flex;width:100%;justify-content:center;padding:.5rem .75rem;border-radius:10px;border:1px solid var(--border-color);background:var(--bg-soft);font-weight:600;text-decoration:none;color:var(--text-primary)}.tb-drawer__scroll{padding:1rem 1.25rem;overflow:auto;flex:1}.tb-quick-actions{display:grid;gap:.5rem;margin-bottom:1rem}.tb-quick-btn{display:inline-flex;align-items:center;gap:.5rem;width:100%;padding:.55rem .7rem;border-radius:10px;border:1px solid var(--border-color);background:var(--bg-soft);font-weight:600}.tb-section{margin-bottom:.75rem}.tb-section__toggle{width:100%;display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.55rem .2rem;background:transparent;border:none;font-weight:700;color:var(--text-primary)}.tb-section__items{display:grid;gap:.5rem;margin-top:.5rem}.tb-card{display:flex;align-items:center;gap:.6rem;padding:.55rem .7rem;border-radius:10px;border:1px solid var(--border-color);text-decoration:none;color:var(--text-primary);background:var(--bg-soft)}.tb-card.is-active{border-color:color-mix(in srgb,var(--primary) 35%,var(--border-color));box-shadow:var(--ring)}.tb-card__icon{width:28px;height:28px;border-radius:8px;background:color-mix(in srgb,var(--primary) 18%,var(--bg-soft));display:inline-flex;align-items:center;justify-content:center}.tb-card__title{font-weight:600}.tb-drawer__footer{padding:1rem 1.25rem;border-top:1px solid var(--border-color);display:grid;gap:.5rem}.tb-drawer__action,.tb-drawer__logout,.tb-drawer__login{width:100%;padding:.6rem .75rem;border-radius:10px;border:1px solid var(--border-color);background:var(--bg-soft);font-weight:700;text-decoration:none;color:var(--text-primary);display:inline-flex;align-items:center;justify-content:center}body.tb-drawer-open{overflow:hidden}@media (max-width: 900px){.tb__center,.tb__brand-text{display:none}}.dashboard{padding:.75rem;max-width:1200px;margin:0 auto;background:var(--bg);color:var(--text)}.dashboard-header{margin:0 0 .75rem;border-bottom:1px solid var(--border-color, var(--border));padding-bottom:.5rem}.title-and-greet{display:flex;align-items:baseline;justify-content:space-between;gap:.75rem;flex-wrap:wrap}.dashboard-title{font-size:1.35rem;line-height:1.25;font-weight:800;color:var(--text-primary, var(--text));margin:0}.welcome-message{font-size:.95rem;color:var(--text-secondary, var(--muted))}.dashboard-grid{display:grid;grid-template-columns:1fr 1fr;gap:.75rem;align-items:start}@media (max-width: 1024px){.dashboard-grid{grid-template-columns:1fr}}.deck{background:var(--card-bg);border-radius:var(--radius-lg);padding:var(--card-padding);border:1px solid var(--border-color);box-shadow:var(--shadow-sm)}.deck-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem;gap:.5rem}.deck-title{font-size:1.05rem;font-weight:800;color:var(--text-primary, var(--text));margin:0}.deck-content{display:flex;flex-direction:column;gap:.5rem}.card-hover:hover{border-color:var(--primary, var(--brand));box-shadow:0 4px 18px #0000001a;transform:translateY(-1px)}.card.compact{padding:.6rem}.profile-card{border:1px solid var(--card-border, var(--border));background:linear-gradient(135deg,var(--bg-secondary, #f1f5f9) 0%,var(--card-bg, var(--surface)) 100%)}.profile-content{display:grid;grid-template-columns:auto 1fr;gap:.75rem;align-items:center}.avatar-section{position:relative}.avatar-container{width:64px;height:64px;border-radius:50%;overflow:hidden;cursor:pointer;position:relative;border:2px solid var(--border-color, var(--border));transition:border-color .15s}.avatar-container:hover{border-color:var(--primary, var(--brand))}.avatar-busy{cursor:not-allowed;opacity:.7}.avatar-image{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.avatar-initials{width:100%;height:100%;display:grid;place-items:center;font-weight:800;font-size:1.05rem;color:#fff;background:linear-gradient(135deg,#667eea,#764ba2)}.avatar-delete-btn{position:absolute;right:-4px;bottom:-4px;width:22px;height:22px;border-radius:50%;background:var(--danger, #ef4444);color:#fff;border:2px solid var(--surface);display:grid;place-items:center;font-size:13px;font-weight:800;cursor:pointer;box-shadow:0 2px 6px #00000040;transition:transform .15s,background .15s}.avatar-delete-btn:hover{transform:scale(1.06)}.avatar-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:#0000008c;display:flex;align-items:flex-end;justify-content:center;padding:10px}.avatar-progress{width:80%}.progress-bar{width:100%;height:6px;background:#ffffff40;border-radius:3px;overflow:hidden}.progress-fill{height:100%;background:#fff;transition:width .12s linear;border-radius:3px}.avatar-status{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;background:#0000008c;color:#fff;font-size:.85rem;font-weight:700}.avatar-status.saved{background:#22c55ed9}.profile-info{min-width:0}.profile-header{display:flex;align-items:center;gap:.5rem;margin-bottom:.25rem}.profile-name{font-size:1.05rem;font-weight:800;color:var(--text-primary, var(--text));margin:0}.role-badge{font-size:.7rem;font-weight:800}.profile-email{color:var(--text-secondary, var(--muted));margin-bottom:.45rem;word-break:break-all}.profile-actions{display:flex;gap:.5rem;flex-wrap:wrap}.badge{padding:.28rem .6rem;border-radius:999px;font-size:.78rem;font-weight:800;display:inline-flex;align-items:center;gap:.25rem;background:var(--chip-bg, #f3f4f6);color:var(--chip-fg, var(--text));border:1px solid var(--chip-border, var(--border))}.badge-outline{background:transparent;border:1px solid var(--border-color, var(--border));color:var(--text-secondary, var(--muted))}.badge-info{background:var(--primary-light, rgba(99,102,241,.18));color:var(--text-primary, var(--text))}.dashboard-v2{padding:1.5rem;max-width:1400px;margin:0 auto;color:var(--text-primary)}.dash-v2-topbar{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;padding:.9rem 1.1rem;background:var(--card-bg);border:1px solid var(--border-color);border-radius:16px;box-shadow:var(--shadow-sm)}.dash-v2-state{margin-top:1rem;padding:.65rem .9rem;border-radius:12px;border:1px solid var(--border-color);background:var(--bg-soft);color:var(--text-secondary);font-size:.9rem}.dash-v2-state.error{border-color:color-mix(in srgb,var(--danger) 40%,var(--border-color));background:color-mix(in srgb,var(--danger) 10%,var(--bg-soft));color:var(--danger-hover)}.dash-v2-brand{font-family:var(--font-headings);font-weight:800;letter-spacing:-.02em;font-size:1.1rem;color:var(--text-primary)}.dash-v2-tabs{display:flex;align-items:center;gap:.35rem;flex:1;flex-wrap:wrap;padding:.35rem;border-radius:999px;background:var(--bg-soft);border:1px solid var(--border-color)}.dash-v2-tab{padding:.45rem .85rem;border-radius:999px;text-decoration:none;font-weight:600;color:var(--text-secondary);transition:transform .15s ease,background .2s ease,color .2s ease}.dash-v2-tab:hover{background:color-mix(in srgb,var(--primary) 12%,var(--bg-soft));color:var(--text-primary);transform:translateY(-1px)}.dash-v2-tab.active{background:var(--primary);color:var(--text-on-primary);box-shadow:0 8px 16px #1f6feb40}.dash-v2-user-icon{width:38px;height:38px;display:grid;place-items:center;border-radius:12px;background:color-mix(in srgb,var(--primary) 12%,var(--card-bg));color:var(--primary-dark);border:1px solid var(--border-color)}.dash-v2-main-grid{margin-top:1.5rem;display:grid;gap:1.25rem;grid-template-columns:minmax(280px,1.1fr) minmax(280px,1fr) minmax(260px,.9fr);align-items:start}@media (max-width: 1100px){.dash-v2-main-grid{grid-template-columns:1fr}}.dash-v2-card{background:var(--card-bg);border:1px solid var(--border-color);border-radius:18px;padding:1rem 1.1rem;box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:.9rem}.dash-v2-empty{padding:.75rem;border-radius:12px;border:1px dashed var(--border-color);background:color-mix(in srgb,var(--bg-soft) 80%,var(--card-bg));color:var(--text-muted);font-size:.9rem;text-align:center}.dash-v2-card-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.dash-v2-card-header h3{margin:0;font-size:1.05rem;font-weight:800;color:var(--text-primary)}.dash-v2-allocated-list,.dash-v2-announcements,.dash-v2-swaps-table{display:grid;gap:.7rem}.dash-v2-allocated-item,.dash-v2-announcement-row,.dash-v2-swap-row{display:grid;gap:.55rem;padding:.75rem;border-radius:14px;border:1px solid var(--border-color);background:var(--bg-soft);transition:transform .15s ease,box-shadow .2s ease}.dash-v2-allocated-item:hover,.dash-v2-announcement-row:hover,.dash-v2-swap-row:hover{transform:translateY(-1px);box-shadow:var(--shadow-sm)}.dash-v2-allocated-left,.dash-v2-allocated-right{display:flex;flex-direction:column;gap:.25rem}.dash-v2-allocated-item{grid-template-columns:1fr auto;align-items:center}.dash-v2-allocated-links,.dash-v2-allocated-links-row{display:flex;gap:.5rem;flex-wrap:wrap}.dash-v2-allocated-links a,.dash-v2-allocated-links-row a{font-size:.78rem;font-weight:700;color:var(--primary-dark);text-decoration:none;padding:.2rem .55rem;border-radius:999px;border:1px solid color-mix(in srgb,var(--primary) 35%,var(--border-color));background:color-mix(in srgb,var(--primary) 10%,var(--bg-soft))}.dash-v2-allocated-title{font-weight:700;color:var(--text-primary)}.dash-v2-allocated-sub,.dash-v2-allocated-time{font-size:.85rem;color:var(--text-muted)}.dash-v2-muted{color:var(--text-muted);font-size:.85rem}.dash-v2-monitor-fields{display:grid;gap:.6rem}.dash-v2-monitor-field label{display:block;font-size:.8rem;font-weight:600;color:var(--text-muted);margin-bottom:.35rem}.dash-v2-select{width:100%;border-radius:12px;border:1px solid var(--border-color);padding:.6rem .8rem;background:var(--card-bg);color:var(--text-primary)}.dash-v2-monitor-metrics{display:grid;gap:.75rem}.dash-v2-metric-row{display:grid;grid-template-columns:90px 1fr 50px;gap:.6rem;align-items:center}.dash-v2-metric-bar{position:relative;height:8px;border-radius:999px;background:color-mix(in srgb,var(--border-color) 70%,transparent);overflow:hidden}.dash-v2-metric-fill{position:absolute;top:0;right:0;bottom:0;left:0;width:0;border-radius:999px;background:linear-gradient(90deg,var(--primary),var(--accent))}.dash-v2-metric-bar.attendance .dash-v2-metric-fill{background:linear-gradient(90deg,var(--accent),var(--success))}.dash-v2-metric-bar.performance .dash-v2-metric-fill{background:linear-gradient(90deg,var(--primary),var(--secondary))}.dash-v2-metric-bar.homework .dash-v2-metric-fill{background:linear-gradient(90deg,var(--secondary),var(--warning))}.dash-v2-monitor-btn{margin-top:.25rem;width:100%;justify-content:center}.dash-v2-swaps-header{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;font-size:.85rem;color:var(--text-muted)}.dash-v2-swap-row{grid-template-columns:1fr auto 1fr;align-items:center}.dash-v2-swap-title{font-weight:700;color:var(--text-primary)}.dash-v2-swap-arrow{font-weight:800;color:var(--primary)}.dash-v2-announcement-status{display:inline-flex;align-items:center;gap:.4rem;color:var(--text-muted);font-size:.8rem}.dash-v2-dot{width:8px;height:8px;border-radius:50%;background:var(--accent)}.dash-v2-caret{font-weight:700;color:var(--warning)}.badge-warning{background:var(--warn, #f59e0b1a);color:var(--text-primary, var(--text))}.badge-sa{background:#fef3c7;color:#92400e}.badge-admin{background:#dbeafe;color:#1e40af}.badge-teacher{background:#dcfce7;color:#166534}.badge-student{background:#f3e8ff;color:#7e22ce}.badge-default{background:#f3f4f6;color:#374151}[data-theme=dark] .badge-sa,[data-theme=dark] .badge-admin,[data-theme=dark] .badge-teacher,[data-theme=dark] .badge-student,[data-theme=dark] .badge-default{filter:saturate(.9) brightness(.9)}.row{display:flex;justify-content:space-between;align-items:center;gap:.75rem;min-height:42px}.row-main{display:flex;align-items:center;gap:.65rem;min-width:0;flex:1}.row-icon{font-size:1.1rem;line-height:1;flex-shrink:0}.row-text{min-width:0}.row-title{font-size:.95rem;font-weight:800;color:var(--text-primary, var(--text));overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row-sub{font-size:.85rem;color:var(--text-secondary, var(--muted));margin-top:2px;line-height:1.35}.row-divider{height:1px;background:var(--border-color, var(--border));margin:.5rem 0}.card-like{background:var(--card-bg, var(--surface));border:1px solid var(--card-border, var(--border));border-radius:8px;padding:.6rem .75rem}.list-compact{display:grid;gap:.5rem}.grid-cards{display:grid;gap:.6rem;grid-template-columns:repeat(2,1fr)}@media (max-width: 640px){.grid-cards{grid-template-columns:1fr}}.homework-tags{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.35rem}.homework-badge{font-size:.72rem}.announcements-grid{display:grid;gap:.5rem}.announcement-card .card-content{display:flex;flex-direction:column;gap:.45rem}.announcement-body{margin:0;line-height:1.45;color:var(--text-primary, var(--text))}.announcement-meta{display:flex;align-items:center;gap:.6rem;font-size:.84rem;flex-wrap:wrap}.class-reference{color:var(--text-secondary, var(--muted))}.line-clamp-3{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.empty-card{text-align:center;padding:1.1rem .9rem}.empty-state{display:flex;flex-direction:column;align-items:center;gap:.5rem}.empty-icon{font-size:1.7rem;opacity:.65}.empty-state p{margin:0;color:var(--text-secondary, var(--muted))}.error-card{background:color-mix(in oklab,var(--danger, #ef4444) 10%,transparent);border:1px solid color-mix(in oklab,var(--danger, #ef4444) 35%,transparent);margin-bottom:.75rem}.error-content{display:flex;align-items:center;gap:.6rem;color:var(--danger, #ef4444)}.error-icon{font-size:1.1rem}.skeleton{background:linear-gradient(90deg,color-mix(in oklab,var(--card-bg, var(--surface)) 96%,black) 25%,color-mix(in oklab,var(--card-bg, var(--surface)) 92%,black),color-mix(in oklab,var(--card-bg, var(--surface)) 96%,black) 75%);background-size:200% 100%;animation:loading 1.4s infinite;border-radius:4px}@keyframes loading{0%{background-position:200% 0}to{background-position:-200% 0}}.profile-skeleton{display:grid;grid-template-columns:auto 1fr;gap:.75rem;align-items:center}.avatar-skeleton{border-radius:50%;flex-shrink:0}.profile-info-skeleton{display:grid;gap:.45rem}.hidden-input{display:none}@media (max-width: 768px){.dashboard{padding:.6rem}.profile-content{grid-template-columns:1fr;text-align:center}.avatar-container{margin:0 auto}.profile-header,.profile-actions{justify-content:center}.card-header{display:flex;flex-direction:column;align-items:flex-start;gap:.4rem}.date-badge,.time-badge{align-self:flex-start}}.profile-deck{grid-column:1}.upcoming-deck{grid-column:2}.classes-deck{grid-column:1}.announcements-deck{grid-column:2}body.tb-drawer-open .dashboard-grid .announcements-deck{grid-column:1 / -1}@media (max-width: 1024px){.profile-deck,.upcoming-deck,.classes-deck,.announcements-deck{grid-column:1}}.planner-layout{display:grid;grid-template-columns:280px minmax(0,1fr);min-height:100vh;gap:1.25rem;padding:1.25rem;color:var(--text-primary)}.planner-sidebar{background:linear-gradient(180deg,color-mix(in srgb,var(--primary) 10%,var(--card-bg)),var(--card-bg));border:1px solid var(--border-color);border-radius:20px;box-shadow:var(--shadow-sm);position:relative;transition:transform .2s ease,opacity .2s ease}.planner-sidebar.closed{transform:translate(-8px);opacity:.6}.planner-sidebar-inner{padding:1.2rem;display:flex;flex-direction:column;gap:1.1rem}.planner-sidebar-header{display:flex;align-items:center;gap:.85rem}.planner-sidebar-logo{width:46px;height:46px;border-radius:14px;display:grid;place-items:center;background:linear-gradient(135deg,var(--primary),var(--accent));color:var(--text-on-primary);box-shadow:0 8px 18px #1f6feb40}.planner-sidebar-header h2{margin:0;font-size:1.2rem;font-family:var(--font-headings)}.planner-sidebar-header p{margin:.15rem 0 0;font-size:.82rem;color:var(--text-muted)}.planner-user-btn{width:100%;display:inline-flex;align-items:center;justify-content:space-between;padding:.65rem .8rem;border-radius:12px;border:1px solid var(--border-color);background:var(--bg-soft);color:var(--text-primary);font-weight:600}.planner-user{display:flex}.planner-nav{display:grid;gap:1rem}.planner-nav-section{display:grid;gap:.35rem}.planner-nav-title{font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;color:var(--text-muted);margin-bottom:.35rem}.planner-nav-item{display:inline-flex;align-items:center;gap:.6rem;padding:.55rem .7rem;border-radius:12px;text-decoration:none;color:var(--text-secondary);border:1px solid transparent;transition:transform .15s ease,background .2s ease,color .2s ease}.planner-nav-item:hover{background:color-mix(in srgb,var(--primary) 10%,var(--bg-soft));color:var(--text-primary);transform:translateY(-1px)}.planner-nav-item.active{background:var(--primary);color:var(--text-on-primary);border-color:transparent;box-shadow:0 10px 18px #1f6feb40}.planner-logout{margin-top:auto;border:none;border-radius:12px;padding:.65rem .8rem;background:color-mix(in srgb,var(--danger) 12%,var(--bg-soft));color:var(--danger);font-weight:700;cursor:pointer}.planner-main{display:flex;flex-direction:column;gap:1.25rem}.planner-main-header{display:flex;align-items:center;justify-content:space-between;padding:.9rem 1.1rem;background:var(--card-bg);border-radius:16px;border:1px solid var(--border-color);box-shadow:var(--shadow-sm)}.planner-main-left{display:inline-flex;align-items:center;gap:.75rem}.planner-main-left h1{margin:0;font-size:1.2rem;font-family:var(--font-headings)}.planner-menu-btn{border:1px solid var(--border-color);background:var(--bg-soft);border-radius:10px;padding:.4rem;display:inline-flex;align-items:center;justify-content:center}.planner-main-user{width:36px;height:36px;display:grid;place-items:center;border-radius:12px;background:color-mix(in srgb,var(--primary) 12%,var(--card-bg));color:var(--primary-dark);border:1px solid var(--border-color)}.planner-content{display:flex;flex-direction:column;gap:1.2rem}.planner-header{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;background:var(--card-bg);border:1px solid var(--border-color);border-radius:18px;padding:1rem 1.1rem;box-shadow:var(--shadow-sm)}.planner-header h2{margin:0;font-size:1.2rem;font-family:var(--font-headings)}.planner-header p{margin:.25rem 0 0;color:var(--text-muted)}.planner-data-state{padding:.65rem .9rem;border-radius:12px;border:1px solid var(--border-color);background:var(--bg-soft);color:var(--text-secondary);font-size:.9rem}.planner-data-state.error{border-color:color-mix(in srgb,var(--danger) 40%,var(--border-color));background:color-mix(in srgb,var(--danger) 10%,var(--bg-soft));color:var(--danger-hover)}.planner-data-state.empty{border-color:color-mix(in srgb,var(--warning) 35%,var(--border-color));background:color-mix(in srgb,var(--warning) 10%,var(--bg-soft));color:var(--warning-hover)}.planner-header-actions{display:flex;gap:.6rem;flex-wrap:wrap}.planner-toolbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}.planner-toolbar-left{display:flex;gap:.5rem;background:var(--bg-soft);border:1px solid var(--border-color);padding:.3rem;border-radius:999px}.planner-toggle{border:none;background:transparent;padding:.45rem .85rem;border-radius:999px;font-weight:600;color:var(--text-muted);cursor:pointer}.planner-toggle.active{background:var(--primary);color:var(--text-on-primary);box-shadow:0 8px 16px #1f6feb40}.planner-toolbar-right{display:flex;gap:.6rem;flex-wrap:wrap}.planner-btn-primary,.planner-btn-outline,.planner-btn-ghost{display:inline-flex;align-items:center;gap:.4rem;border-radius:12px;padding:.6rem .9rem;font-weight:700;cursor:pointer;border:1px solid transparent;text-decoration:none}.planner-btn-primary{background:var(--primary);color:var(--text-on-primary);box-shadow:0 10px 18px #1f6feb40}.planner-btn-outline{background:var(--card-bg);border-color:var(--border-color);color:var(--text-primary)}.planner-btn-outline.active{border-color:color-mix(in srgb,var(--primary) 35%,var(--border-color));color:var(--primary-dark);box-shadow:0 8px 16px #1f6feb33}.planner-btn-ghost{background:transparent;border-color:transparent;color:var(--text-secondary)}.planner-grid-card{background:var(--card-bg);border:1px solid var(--border-color);border-radius:18px;box-shadow:var(--shadow-sm);overflow:hidden}.planner-grid{width:100%;border-collapse:separate;border-spacing:0;font-size:.9rem}.planner-grid th,.planner-grid td{border-bottom:1px solid var(--border-color);border-right:1px solid var(--border-color);padding:.6rem;vertical-align:top}.planner-grid th:last-child,.planner-grid td:last-child{border-right:none}.planner-grid thead th{background:var(--bg-soft);font-weight:700;color:var(--text-secondary)}.planner-grid-corner{min-width:120px}.planner-week-btn{width:100%;border:none;background:transparent;display:inline-flex;align-items:center;justify-content:space-between;font-weight:700;color:var(--text-primary)}.planner-grid-head{text-align:left}.planner-grid-date{font-size:.8rem;color:var(--text-muted)}.planner-period{font-weight:700;color:var(--text-secondary);background:var(--bg-soft)}.planner-cell{cursor:pointer;background:linear-gradient(180deg,transparent,rgba(0,0,0,.02));transition:background .2s ease}.planner-cell:hover{background:color-mix(in srgb,var(--primary) 6%,var(--card-bg))}.planner-lesson-card{position:relative;display:grid;gap:.4rem;padding:.65rem;border-radius:12px;border:1px solid transparent;background:var(--bg-soft)}.planner-lesson-green{border-color:color-mix(in srgb,var(--success) 40%,var(--border-color));background:color-mix(in srgb,var(--success) 10%,var(--bg-soft))}.planner-lesson-yellow{border-color:color-mix(in srgb,var(--warning) 40%,var(--border-color));background:color-mix(in srgb,var(--warning) 10%,var(--bg-soft))}.planner-lesson-red{border-color:color-mix(in srgb,var(--danger) 40%,var(--border-color));background:color-mix(in srgb,var(--danger) 8%,var(--bg-soft))}.planner-lesson-orange{border-color:color-mix(in srgb,var(--secondary) 40%,var(--border-color));background:color-mix(in srgb,var(--secondary) 10%,var(--bg-soft))}.planner-lesson-row{display:flex;align-items:center;gap:.5rem;justify-content:space-between}.planner-lesson-badge{display:grid;place-items:center;width:28px;height:28px;border-radius:10px;background:var(--card-bg);border:1px solid var(--border-color);font-weight:700}.planner-lesson-title{font-weight:700;color:var(--text-primary)}.planner-lesson-sub{font-size:.78rem;color:var(--text-muted)}.planner-lesson-details{font-size:.78rem;color:var(--text-secondary);white-space:pre-line}.planner-lesson-flag{color:var(--danger);margin-left:auto}.planner-lesson-corner{position:absolute;right:8px;bottom:8px;color:var(--text-muted)}.planner-empty{min-height:64px}.planner-day-picker{margin-bottom:1rem;display:flex;gap:.5rem;flex-wrap:wrap}.planner-day-btn{font-size:.9rem}.planner-day-grid{display:grid;gap:1rem}.planner-day-card{border:1px solid var(--border-color);border-radius:12px;padding:1rem;background:var(--card-bg)}.planner-day-card.clickable{cursor:pointer}.planner-day-card.clickable:hover{border-color:color-mix(in srgb,var(--primary) 35%,var(--border-color));box-shadow:var(--shadow-sm)}.planner-day-card.empty{background:var(--bg-soft)}.planner-day-row{display:flex;align-items:center;gap:1rem;margin-bottom:.5rem}.planner-day-period{font-weight:700;font-size:1.05rem;color:var(--text-primary);min-width:80px}.planner-day-lesson{flex:1;margin:0}.planner-day-empty{flex:1;color:var(--text-muted);font-style:italic}.planner-month-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;background:var(--border-color);border:1px solid var(--border-color);border-radius:12px;overflow:hidden}.planner-month-head{padding:.75rem;font-weight:700;text-align:center;background:var(--bg-soft);color:var(--text-secondary)}.planner-month-blank{background:color-mix(in srgb,var(--bg-soft) 60%,var(--card-bg));min-height:100px}.planner-month-cell{background:var(--card-bg);padding:.5rem;min-height:100px;display:flex;flex-direction:column;gap:.25rem}.planner-month-date{font-weight:700;font-size:.9rem;color:var(--text-primary);margin-bottom:.25rem}.planner-month-lessons{display:flex;flex-direction:column;gap:.25rem}.planner-month-lesson{font-size:.7rem;padding:.25rem;border-radius:6px;background:var(--bg-soft);color:var(--text-primary);border:1px solid var(--border-color);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.planner-month-lesson.green{border-color:color-mix(in srgb,var(--success) 40%,var(--border-color));background:color-mix(in srgb,var(--success) 12%,var(--bg-soft))}.planner-month-lesson.yellow{border-color:color-mix(in srgb,var(--warning) 40%,var(--border-color));background:color-mix(in srgb,var(--warning) 12%,var(--bg-soft))}.planner-month-lesson.red{border-color:color-mix(in srgb,var(--danger) 40%,var(--border-color));background:color-mix(in srgb,var(--danger) 10%,var(--bg-soft))}.planner-month-lesson.orange{border-color:color-mix(in srgb,var(--secondary) 40%,var(--border-color));background:color-mix(in srgb,var(--secondary) 12%,var(--bg-soft))}.planner-month-more{font-size:.65rem;color:var(--text-muted);text-align:center}.planner-alerts{display:flex;gap:.6rem;flex-wrap:wrap}.planner-alert{display:inline-flex;align-items:center;gap:.4rem;padding:.45rem .7rem;border-radius:999px;font-size:.85rem;border:1px solid var(--border-color);background:var(--bg-soft)}.planner-alert.success{border-color:color-mix(in srgb,var(--success) 40%,var(--border-color));color:var(--success-hover)}.planner-alert.warning{border-color:color-mix(in srgb,var(--warning) 40%,var(--border-color));color:var(--warning-hover)}.planner-alert.danger{border-color:color-mix(in srgb,var(--danger) 40%,var(--border-color));color:var(--danger-hover)}.planner-alert-info{border-color:color-mix(in srgb,var(--info) 40%,var(--border-color));color:var(--info);background:color-mix(in srgb,var(--info) 8%,var(--bg-soft))}.planner-alert-warning{border-color:color-mix(in srgb,var(--warning) 40%,var(--border-color));color:var(--warning-hover);background:color-mix(in srgb,var(--warning) 12%,var(--bg-soft))}.planner-alert-note{border-color:color-mix(in srgb,var(--accent) 40%,var(--border-color));color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,var(--bg-soft))}.planner-modal{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a80;display:grid;place-items:center;z-index:1000;padding:1rem}.planner-modal-card{background:var(--card-bg);border-radius:18px;border:1px solid var(--border-color);box-shadow:var(--shadow-lg);width:min(620px,92vw);display:flex;flex-direction:column;overflow:hidden}.planner-modal-card-sm{max-width:400px}.planner-modal-card-md{max-width:500px}.planner-modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:1rem 1.1rem;border-bottom:1px solid var(--border-color)}.planner-modal-title{margin:0;font-size:1.1rem;font-family:var(--font-headings)}.planner-modal-subtitle{margin:.2rem 0 0;color:var(--text-muted);font-size:.85rem}.planner-modal-close{border:1px solid var(--border-color);background:var(--bg-soft);border-radius:10px;padding:.4rem}.planner-modal-body{padding:1rem 1.1rem;display:grid;gap:1rem}.planner-modal-scroll{max-height:400px;overflow-y:auto}.planner-week-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.5rem}.planner-week-option{padding:.5rem;font-size:.9rem}.planner-homework-list{display:grid;gap:.75rem}.planner-homework-row{padding:.75rem;border:1px solid var(--border-color);border-radius:12px;display:flex;justify-content:space-between;align-items:center;background:var(--bg-soft)}.planner-homework-title{font-weight:700;color:var(--text-primary)}.planner-homework-sub{font-size:.85rem;color:var(--text-muted)}.planner-homework-pill{padding:.25rem .75rem;border-radius:999px;font-size:.8rem;font-weight:600;border:1px solid transparent;text-transform:capitalize}.planner-homework-pill.heavy{background:color-mix(in srgb,var(--danger) 12%,var(--bg-soft));color:var(--danger-hover);border-color:color-mix(in srgb,var(--danger) 40%,var(--border-color))}.planner-homework-pill.moderate{background:color-mix(in srgb,var(--warning) 12%,var(--bg-soft));color:var(--warning-hover);border-color:color-mix(in srgb,var(--warning) 40%,var(--border-color))}.planner-homework-pill.light{background:color-mix(in srgb,var(--success) 12%,var(--bg-soft));color:var(--success-hover);border-color:color-mix(in srgb,var(--success) 40%,var(--border-color))}.planner-modal-footer{padding:.9rem 1.1rem;border-top:1px solid var(--border-color);display:flex;justify-content:flex-end;gap:.6rem}.planner-field-label{font-weight:700;color:var(--text-secondary);margin-bottom:.4rem;display:block}.planner-pill-group{display:flex;gap:.5rem;flex-wrap:wrap}.planner-pill{border:1px solid var(--border-color);background:var(--bg-soft);padding:.4rem .7rem;border-radius:999px;font-weight:600;cursor:pointer}.planner-textarea{width:100%;border-radius:12px;border:1px solid var(--border-color);padding:.7rem;font:inherit;background:var(--bg-soft);color:var(--text-primary)}.planner-check-row{display:grid;gap:.6rem}.planner-check{display:inline-flex;align-items:center;gap:.5rem}.planner-sync-btn{border-radius:12px;border:1px solid var(--border-color);background:var(--bg-soft);padding:.6rem .9rem;font-weight:700;color:var(--text-secondary)}@media (max-width: 980px){.planner-layout{grid-template-columns:1fr}.planner-sidebar{position:relative;width:100%}}@media (max-width: 640px){.planner-header{flex-direction:column;align-items:flex-start}.planner-main-header{flex-direction:column;align-items:flex-start;gap:.8rem}.planner-week-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
