/* Academic Professional Portal 3.0 — consolidated production stylesheet */
/* ---- tailwind.css ---- */
*,:after,:before{--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:rgba(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:rgba(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: }/*! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Inter,ui-sans-serif,system-ui,sans-serif;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,pre,samp{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,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{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}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.\!container{width:100%!important}.container{width:100%}@media (min-width:640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media (min-width:768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media (min-width:1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media (min-width:1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media (min-width:1536px){.\!container{max-width:1536px!important}.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}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-y-0{top:0;bottom:0}.-right-1{right:-.25rem}.-top-1{top:-.25rem}.bottom-0{bottom:0}.bottom-5{bottom:1.25rem}.left-0{left:0}.right-0{right:0}.right-2{right:.5rem}.right-4{right:1rem}.right-5{right:1.25rem}.top-0{top:0}.top-2{top:.5rem}.top-4{top:1rem}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.z-\[70\]{z-index:70}.z-\[80\]{z-index:80}.z-\[90\]{z-index:90}.m-0{margin:0}.mx-auto{margin-left:auto;margin-right:auto}.my-10{margin-top:2.5rem;margin-bottom:2.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.mb-1{margin-bottom:.25rem}.mb-10{margin-bottom:2.5rem}.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-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.mr-1{margin-right:.25rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-10{margin-top:2.5rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mt-auto{margin-top:auto}.line-clamp-3{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-1{height:.25rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-2{height:.5rem}.h-24{height:6rem}.h-3{height:.75rem}.h-32{height:8rem}.h-4{height:1rem}.h-40{height:10rem}.h-44{height:11rem}.h-5{height:1.25rem}.h-56{height:14rem}.h-6{height:1.5rem}.h-64{height:16rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-96{height:24rem}.h-full{height:100%}.min-h-\[60vh\]{min-height:60vh}.min-h-screen{min-height:100vh}.w-0{width:0}.w-1{width:.25rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-2{width:.5rem}.w-20{width:5rem}.w-24{width:6rem}.w-3{width:.75rem}.w-32{width:8rem}.w-4{width:1rem}.w-40{width:10rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-80{width:20rem}.w-9{width:2.25rem}.w-full{width:100%}.min-w-0{min-width:0}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-\[90vw\]{max-width:90vw}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.-translate-x-full{--tw-translate-x:-100%}.-translate-x-full,.translate-x-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x:0px}.translate-y-full{--tw-translate-y:100%}.transform,.translate-y-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes bounce{0%,to{transform:translateY(-25%);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;animation-timing-function:cubic-bezier(0,0,.2,1)}}.animate-bounce{animation:bounce 1s infinite}@keyframes ping{75%,to{transform:scale(2);opacity:0}}.animate-ping{animation:ping 1s cubic-bezier(0,0,.2,1) infinite}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize{resize:both}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-\[92px_1fr\]{grid-template-columns:92px 1fr}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.space-y-10>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2.5rem*var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*(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*(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*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem*var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px*var(--tw-divide-y-reverse))}.divide-slate-200>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(226 232 240/var(--tw-divide-opacity,1))}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.truncate{overflow:hidden;text-overflow:ellipsis}.truncate,.whitespace-nowrap{white-space:nowrap}.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-4{border-left-width:4px}.border-t{border-top-width:1px}.border-primary-100{--tw-border-opacity:1;border-color:rgb(214 239 226/var(--tw-border-opacity,1))}.border-primary-500{--tw-border-opacity:1;border-color:rgb(11 107 58/var(--tw-border-opacity,1))}.border-slate-100{--tw-border-opacity:1;border-color:rgb(241 245 249/var(--tw-border-opacity,1))}.border-slate-200{--tw-border-opacity:1;border-color:rgb(226 232 240/var(--tw-border-opacity,1))}.border-slate-200\/80{border-color:rgba(226,232,240,.8)}.border-slate-300{--tw-border-opacity:1;border-color:rgb(203 213 225/var(--tw-border-opacity,1))}.border-white{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.border-white\/20{border-color:hsla(0,0%,100%,.2)}.bg-\[\#1DB954\]{--tw-bg-opacity:1;background-color:rgb(29 185 84/var(--tw-bg-opacity,1))}.bg-\[\#FC3C44\]{--tw-bg-opacity:1;background-color:rgb(252 60 68/var(--tw-bg-opacity,1))}.bg-\[\#FF6B00\]{--tw-bg-opacity:1;background-color:rgb(255 107 0/var(--tw-bg-opacity,1))}.bg-accent-400\/20{background-color:rgba(255,202,46,.2)}.bg-accent-50{--tw-bg-opacity:1;background-color:rgb(255 248 230/var(--tw-bg-opacity,1))}.bg-accent-500\/90{background-color:rgba(201,162,39,.9)}.bg-amber-100{--tw-bg-opacity:1;background-color:rgb(254 243 199/var(--tw-bg-opacity,1))}.bg-black\/0{background-color:transparent}.bg-black\/40{background-color:rgba(0,0,0,.4)}.bg-emerald-100{--tw-bg-opacity:1;background-color:rgb(209 250 229/var(--tw-bg-opacity,1))}.bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.bg-primary-100{--tw-bg-opacity:1;background-color:rgb(214 239 226/var(--tw-bg-opacity,1))}.bg-primary-200{--tw-bg-opacity:1;background-color:rgb(167 223 194/var(--tw-bg-opacity,1))}.bg-primary-50{--tw-bg-opacity:1;background-color:rgb(236 247 241/var(--tw-bg-opacity,1))}.bg-primary-600{--tw-bg-opacity:1;background-color:rgb(10 95 53/var(--tw-bg-opacity,1))}.bg-primary-700{--tw-bg-opacity:1;background-color:rgb(9 79 44/var(--tw-bg-opacity,1))}.bg-primary-900{--tw-bg-opacity:1;background-color:rgb(8 51 33/var(--tw-bg-opacity,1))}.bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.bg-slate-200{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity,1))}.bg-slate-400{--tw-bg-opacity:1;background-color:rgb(148 163 184/var(--tw-bg-opacity,1))}.bg-slate-50{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity,1))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.bg-white\/10{background-color:hsla(0,0%,100%,.1)}.bg-white\/20{background-color:hsla(0,0%,100%,.2)}.bg-white\/90{background-color:hsla(0,0%,100%,.9)}.bg-white\/95{background-color:hsla(0,0%,100%,.95)}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.bg-gradient-to-t{background-image:linear-gradient(to top,var(--tw-gradient-stops))}.from-accent-500{--tw-gradient-from:#c9a227 var(--tw-gradient-from-position);--tw-gradient-to:rgba(201,162,39,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-black\/50{--tw-gradient-from:rgba(0,0,0,.5) var(--tw-gradient-from-position);--tw-gradient-to:transparent var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-blue-50{--tw-gradient-from:#eff6ff var(--tw-gradient-from-position);--tw-gradient-to:rgba(239,246,255,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-green-50{--tw-gradient-from:#f0fdf4 var(--tw-gradient-from-position);--tw-gradient-to:rgba(240,253,244,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-primary-100{--tw-gradient-from:#d6efe2 var(--tw-gradient-from-position);--tw-gradient-to:rgba(214,239,226,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-primary-50{--tw-gradient-from:#ecf7f1 var(--tw-gradient-from-position);--tw-gradient-to:rgba(236,247,241,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-primary-500{--tw-gradient-from:#0b6b3a var(--tw-gradient-from-position);--tw-gradient-to:rgba(11,107,58,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-purple-50{--tw-gradient-from:#faf5ff var(--tw-gradient-from-position);--tw-gradient-to:rgba(250,245,255,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:hsla(0,86%,97%,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-slate-50{--tw-gradient-from:#f8fafc var(--tw-gradient-from-position);--tw-gradient-to:rgba(248,250,252,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-teal-50{--tw-gradient-from:#f0fdfa var(--tw-gradient-from-position);--tw-gradient-to:rgba(240,253,250,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-white{--tw-gradient-from:#fff var(--tw-gradient-from-position);--tw-gradient-to:hsla(0,0%,100%,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.to-accent-100{--tw-gradient-to:#ffefc2 var(--tw-gradient-to-position)}.to-accent-50{--tw-gradient-to:#fff8e6 var(--tw-gradient-to-position)}.to-accent-500{--tw-gradient-to:#c9a227 var(--tw-gradient-to-position)}.to-accent-600{--tw-gradient-to:#b88a1e var(--tw-gradient-to-position)}.to-blue-100{--tw-gradient-to:#dbeafe var(--tw-gradient-to-position)}.to-green-100{--tw-gradient-to:#dcfce7 var(--tw-gradient-to-position)}.to-purple-100{--tw-gradient-to:#f3e8ff var(--tw-gradient-to-position)}.to-red-100{--tw-gradient-to:#fee2e2 var(--tw-gradient-to-position)}.to-slate-100{--tw-gradient-to:#f1f5f9 var(--tw-gradient-to-position)}.to-slate-50{--tw-gradient-to:#f8fafc var(--tw-gradient-to-position)}.to-teal-100{--tw-gradient-to:#ccfbf1 var(--tw-gradient-to-position)}.to-transparent{--tw-gradient-to:transparent var(--tw-gradient-to-position)}.object-cover{-o-object-fit:cover;object-fit:cover}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.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\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pl-3{padding-left:.75rem}.pl-5{padding-left:1.25rem}.pl-6{padding-left:1.5rem}.pt-2{padding-top:.5rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-justify{text-align:justify}.align-top{vertical-align:top}.font-sans{font-family:Inter,ui-sans-serif,system-ui,sans-serif}.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-\[10px\]{font-size:10px}.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-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.leading-tight{line-height:1.25}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.text-accent-300{--tw-text-opacity:1;color:rgb(255 212 82/var(--tw-text-opacity,1))}.text-accent-400{--tw-text-opacity:1;color:rgb(255 202 46/var(--tw-text-opacity,1))}.text-accent-600{--tw-text-opacity:1;color:rgb(184 138 30/var(--tw-text-opacity,1))}.text-accent-900{--tw-text-opacity:1;color:rgb(81 61 14/var(--tw-text-opacity,1))}.text-amber-800{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity,1))}.text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.text-emerald-800{--tw-text-opacity:1;color:rgb(6 95 70/var(--tw-text-opacity,1))}.text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity,1))}.text-primary-600{--tw-text-opacity:1;color:rgb(10 95 53/var(--tw-text-opacity,1))}.text-primary-700{--tw-text-opacity:1;color:rgb(9 79 44/var(--tw-text-opacity,1))}.text-primary-800{--tw-text-opacity:1;color:rgb(10 66 38/var(--tw-text-opacity,1))}.text-primary-900{--tw-text-opacity:1;color:rgb(8 51 33/var(--tw-text-opacity,1))}.text-purple-600{--tw-text-opacity:1;color:rgb(147 51 234/var(--tw-text-opacity,1))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.text-slate-400{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1))}.text-slate-500{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity,1))}.text-slate-600{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity,1))}.text-slate-700{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity,1))}.text-slate-800{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity,1))}.text-slate-900{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.text-teal-600{--tw-text-opacity:1;color:rgb(13 148 136/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.text-white\/50{color:hsla(0,0%,100%,.5)}.text-white\/70{color:hsla(0,0%,100%,.7)}.underline{text-decoration-line:underline}.decoration-dotted{text-decoration-style:dotted}.opacity-0{opacity:0}.opacity-90{opacity:.9}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-2xl{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 rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-lg,.shadow-sm{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 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-soft{--tw-shadow:0 10px 25px -10px rgba(2,6,23,.25);--tw-shadow-colored:0 10px 25px -10px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.ring-4{--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)}.ring-4,.ring-8{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-8{--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(8px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-accent-500\/20{--tw-ring-color:rgba(201,162,39,.2)}.ring-primary-50{--tw-ring-opacity:1;--tw-ring-color:rgb(236 247 241/var(--tw-ring-opacity,1))}.ring-white\/10{--tw-ring-color:hsla(0,0%,100%,.1)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur{--tw-backdrop-blur:blur(8px)}.backdrop-blur,.backdrop-blur-md{-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)}.backdrop-blur-md{--tw-backdrop-blur:blur(12px)}.backdrop-blur-sm{--tw-backdrop-blur:blur(4px);-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,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-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-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;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}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.hover\:scale-105:hover{--tw-scale-x:1.05;--tw-scale-y:1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:border-accent-300:hover{--tw-border-opacity:1;border-color:rgb(255 212 82/var(--tw-border-opacity,1))}.hover\:bg-\[\#1ed760\]:hover{--tw-bg-opacity:1;background-color:rgb(30 215 96/var(--tw-bg-opacity,1))}.hover\:bg-\[\#fd5c63\]:hover{--tw-bg-opacity:1;background-color:rgb(253 92 99/var(--tw-bg-opacity,1))}.hover\:bg-\[\#ff8533\]:hover{--tw-bg-opacity:1;background-color:rgb(255 133 51/var(--tw-bg-opacity,1))}.hover\:bg-accent-400:hover{--tw-bg-opacity:1;background-color:rgb(255 202 46/var(--tw-bg-opacity,1))}.hover\:bg-primary-700:hover{--tw-bg-opacity:1;background-color:rgb(9 79 44/var(--tw-bg-opacity,1))}.hover\:bg-slate-100:hover{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity,1))}.hover\:bg-slate-50:hover{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity,1))}.hover\:bg-white\/10:hover{background-color:hsla(0,0%,100%,.1)}.hover\:bg-white\/20:hover{background-color:hsla(0,0%,100%,.2)}.hover\:from-accent-400:hover{--tw-gradient-from:#ffca2e var(--tw-gradient-from-position);--tw-gradient-to:rgba(255,202,46,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.hover\:from-blue-100:hover{--tw-gradient-from:#dbeafe var(--tw-gradient-from-position);--tw-gradient-to:rgba(219,234,254,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.hover\:from-green-100:hover{--tw-gradient-from:#dcfce7 var(--tw-gradient-from-position);--tw-gradient-to:rgba(220,252,231,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.hover\:from-purple-100:hover{--tw-gradient-from:#f3e8ff var(--tw-gradient-from-position);--tw-gradient-to:rgba(243,232,255,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.hover\:from-red-100:hover{--tw-gradient-from:#fee2e2 var(--tw-gradient-from-position);--tw-gradient-to:hsla(0,93%,94%,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.hover\:from-slate-100:hover{--tw-gradient-from:#f1f5f9 var(--tw-gradient-from-position);--tw-gradient-to:rgba(241,245,249,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.hover\:from-teal-100:hover{--tw-gradient-from:#ccfbf1 var(--tw-gradient-from-position);--tw-gradient-to:rgba(204,251,241,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.hover\:to-accent-500:hover{--tw-gradient-to:#c9a227 var(--tw-gradient-to-position)}.hover\:to-blue-200:hover{--tw-gradient-to:#bfdbfe var(--tw-gradient-to-position)}.hover\:to-green-200:hover{--tw-gradient-to:#bbf7d0 var(--tw-gradient-to-position)}.hover\:to-purple-200:hover{--tw-gradient-to:#e9d5ff var(--tw-gradient-to-position)}.hover\:to-red-200:hover{--tw-gradient-to:#fecaca var(--tw-gradient-to-position)}.hover\:to-slate-200:hover{--tw-gradient-to:#e2e8f0 var(--tw-gradient-to-position)}.hover\:to-teal-200:hover{--tw-gradient-to:#99f6e4 var(--tw-gradient-to-position)}.hover\:text-accent-500:hover{--tw-text-opacity:1;color:rgb(201 162 39/var(--tw-text-opacity,1))}.hover\:text-primary-500:hover{--tw-text-opacity:1;color:rgb(11 107 58/var(--tw-text-opacity,1))}.hover\:text-primary-600:hover{--tw-text-opacity:1;color:rgb(10 95 53/var(--tw-text-opacity,1))}.hover\:text-white:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.hover\:shadow-lg:hover,.hover\:shadow-xl:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.hover\:shadow-xl:hover{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}.focus\:border-transparent:focus{border-color:transparent}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2: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(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-2:focus,.focus\:ring-4:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.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)}.focus\:ring-accent-300\/50:focus{--tw-ring-color:rgba(255,212,82,.5)}.focus\:ring-accent-400:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(255 202 46/var(--tw-ring-opacity,1))}.active\:scale-95:active{--tw-scale-x:.95;--tw-scale-y:.95}.active\:scale-95:active,.group:hover .group-hover\:rotate-12{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:rotate-12{--tw-rotate:12deg}.group:hover .group-hover\:bg-black\/30{background-color:rgba(0,0,0,.3)}.group:hover .group-hover\:opacity-100{opacity:1}.dark\:divide-slate-700:is(.dark *)>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(51 65 85/var(--tw-divide-opacity,1))}.dark\:border-primary-800:is(.dark *){--tw-border-opacity:1;border-color:rgb(10 66 38/var(--tw-border-opacity,1))}.dark\:border-slate-600:is(.dark *){--tw-border-opacity:1;border-color:rgb(71 85 105/var(--tw-border-opacity,1))}.dark\:border-slate-700:is(.dark *){--tw-border-opacity:1;border-color:rgb(51 65 85/var(--tw-border-opacity,1))}.dark\:border-slate-700\/80:is(.dark *){border-color:rgba(51,65,85,.8)}.dark\:border-slate-900:is(.dark *){--tw-border-opacity:1;border-color:rgb(15 23 42/var(--tw-border-opacity,1))}.dark\:bg-accent-900\/40:is(.dark *){background-color:rgba(81,61,14,.4)}.dark\:bg-amber-900\/30:is(.dark *){background-color:rgba(120,53,15,.3)}.dark\:bg-emerald-900\/30:is(.dark *){background-color:rgba(6,78,59,.3)}.dark\:bg-primary-900:is(.dark *){--tw-bg-opacity:1;background-color:rgb(8 51 33/var(--tw-bg-opacity,1))}.dark\:bg-slate-700:is(.dark *){--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity,1))}.dark\:bg-slate-800:is(.dark *){--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.dark\:bg-slate-800\/50:is(.dark *){background-color:rgba(30,41,59,.5)}.dark\:bg-slate-800\/80:is(.dark *){background-color:rgba(30,41,59,.8)}.dark\:bg-slate-900:is(.dark *){--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity,1))}.dark\:bg-slate-900\/30:is(.dark *){background-color:rgba(15,23,42,.3)}.dark\:bg-slate-900\/90:is(.dark *){background-color:rgba(15,23,42,.9)}.dark\:bg-slate-900\/95:is(.dark *){background-color:rgba(15,23,42,.95)}.dark\:from-blue-900\/40:is(.dark *){--tw-gradient-from:rgba(30,58,138,.4) var(--tw-gradient-from-position);--tw-gradient-to:rgba(30,58,138,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-green-900\/40:is(.dark *){--tw-gradient-from:rgba(20,83,45,.4) var(--tw-gradient-from-position);--tw-gradient-to:rgba(20,83,45,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-primary-900:is(.dark *){--tw-gradient-from:#083321 var(--tw-gradient-from-position);--tw-gradient-to:rgba(8,51,33,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-primary-900\/20:is(.dark *){--tw-gradient-from:rgba(8,51,33,.2) var(--tw-gradient-from-position);--tw-gradient-to:rgba(8,51,33,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-purple-900\/40:is(.dark *){--tw-gradient-from:rgba(88,28,135,.4) var(--tw-gradient-from-position);--tw-gradient-to:rgba(88,28,135,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-red-900\/40:is(.dark *){--tw-gradient-from:rgba(127,29,29,.4) var(--tw-gradient-from-position);--tw-gradient-to:rgba(127,29,29,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-slate-900:is(.dark *){--tw-gradient-from:#0f172a var(--tw-gradient-from-position);--tw-gradient-to:rgba(15,23,42,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-slate-900\/40:is(.dark *){--tw-gradient-from:rgba(15,23,42,.4) var(--tw-gradient-from-position);--tw-gradient-to:rgba(15,23,42,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-teal-900\/40:is(.dark *){--tw-gradient-from:rgba(19,78,74,.4) var(--tw-gradient-from-position);--tw-gradient-to:rgba(19,78,74,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:to-accent-900\/20:is(.dark *){--tw-gradient-to:rgba(81,61,14,.2) var(--tw-gradient-to-position)}.dark\:to-accent-900\/40:is(.dark *){--tw-gradient-to:rgba(81,61,14,.4) var(--tw-gradient-to-position)}.dark\:to-blue-800\/40:is(.dark *){--tw-gradient-to:rgba(30,64,175,.4) var(--tw-gradient-to-position)}.dark\:to-green-800\/40:is(.dark *){--tw-gradient-to:rgba(22,101,52,.4) var(--tw-gradient-to-position)}.dark\:to-purple-800\/40:is(.dark *){--tw-gradient-to:rgba(107,33,168,.4) var(--tw-gradient-to-position)}.dark\:to-red-800\/40:is(.dark *){--tw-gradient-to:rgba(153,27,27,.4) var(--tw-gradient-to-position)}.dark\:to-slate-800\/40:is(.dark *){--tw-gradient-to:rgba(30,41,59,.4) var(--tw-gradient-to-position)}.dark\:to-slate-950:is(.dark *){--tw-gradient-to:#020617 var(--tw-gradient-to-position)}.dark\:to-teal-800\/40:is(.dark *){--tw-gradient-to:rgba(17,94,89,.4) var(--tw-gradient-to-position)}.dark\:text-accent-200:is(.dark *){--tw-text-opacity:1;color:rgb(255 226 138/var(--tw-text-opacity,1))}.dark\:text-accent-300:is(.dark *){--tw-text-opacity:1;color:rgb(255 212 82/var(--tw-text-opacity,1))}.dark\:text-accent-400:is(.dark *){--tw-text-opacity:1;color:rgb(255 202 46/var(--tw-text-opacity,1))}.dark\:text-amber-200:is(.dark *){--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity,1))}.dark\:text-blue-300:is(.dark *){--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity,1))}.dark\:text-emerald-200:is(.dark *){--tw-text-opacity:1;color:rgb(167 243 208/var(--tw-text-opacity,1))}.dark\:text-green-300:is(.dark *){--tw-text-opacity:1;color:rgb(134 239 172/var(--tw-text-opacity,1))}.dark\:text-primary-100:is(.dark *){--tw-text-opacity:1;color:rgb(214 239 226/var(--tw-text-opacity,1))}.dark\:text-purple-300:is(.dark *){--tw-text-opacity:1;color:rgb(216 180 254/var(--tw-text-opacity,1))}.dark\:text-red-300:is(.dark *){--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.dark\:text-slate-100:is(.dark *){--tw-text-opacity:1;color:rgb(241 245 249/var(--tw-text-opacity,1))}.dark\:text-slate-200:is(.dark *){--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity,1))}.dark\:text-slate-300:is(.dark *){--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity,1))}.dark\:text-slate-400:is(.dark *){--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1))}.dark\:text-teal-300:is(.dark *){--tw-text-opacity:1;color:rgb(94 234 212/var(--tw-text-opacity,1))}.dark\:text-white:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.dark\:opacity-90:is(.dark *){opacity:.9}.dark\:ring-primary-900\/40:is(.dark *){--tw-ring-color:rgba(8,51,33,.4)}.dark\:grayscale:is(.dark *){--tw-grayscale:grayscale(100%);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)}.dark\:hover\:bg-slate-700:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity,1))}.dark\:hover\:bg-slate-700\/40:hover:is(.dark *){background-color:rgba(51,65,85,.4)}.dark\:hover\:bg-slate-800:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.dark\:hover\:from-blue-800\/60:hover:is(.dark *){--tw-gradient-from:rgba(30,64,175,.6) var(--tw-gradient-from-position);--tw-gradient-to:rgba(30,64,175,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:hover\:from-green-800\/60:hover:is(.dark *){--tw-gradient-from:rgba(22,101,52,.6) var(--tw-gradient-from-position);--tw-gradient-to:rgba(22,101,52,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:hover\:from-purple-800\/60:hover:is(.dark *){--tw-gradient-from:rgba(107,33,168,.6) var(--tw-gradient-from-position);--tw-gradient-to:rgba(107,33,168,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:hover\:from-red-800\/60:hover:is(.dark *){--tw-gradient-from:rgba(153,27,27,.6) var(--tw-gradient-from-position);--tw-gradient-to:rgba(153,27,27,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:hover\:from-slate-800\/60:hover:is(.dark *){--tw-gradient-from:rgba(30,41,59,.6) var(--tw-gradient-from-position);--tw-gradient-to:rgba(30,41,59,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:hover\:from-teal-800\/60:hover:is(.dark *){--tw-gradient-from:rgba(17,94,89,.6) var(--tw-gradient-from-position);--tw-gradient-to:rgba(17,94,89,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:hover\:to-blue-700\/60:hover:is(.dark *){--tw-gradient-to:rgba(29,78,216,.6) var(--tw-gradient-to-position)}.dark\:hover\:to-green-700\/60:hover:is(.dark *){--tw-gradient-to:rgba(21,128,61,.6) var(--tw-gradient-to-position)}.dark\:hover\:to-purple-700\/60:hover:is(.dark *){--tw-gradient-to:rgba(126,34,206,.6) var(--tw-gradient-to-position)}.dark\:hover\:to-red-700\/60:hover:is(.dark *){--tw-gradient-to:rgba(185,28,28,.6) var(--tw-gradient-to-position)}.dark\:hover\:to-slate-700\/60:hover:is(.dark *){--tw-gradient-to:rgba(51,65,85,.6) var(--tw-gradient-to-position)}.dark\:hover\:to-teal-700\/60:hover:is(.dark *){--tw-gradient-to:rgba(15,118,110,.6) var(--tw-gradient-to-position)}.dark\:hover\:text-accent-300:hover:is(.dark *){--tw-text-opacity:1;color:rgb(255 212 82/var(--tw-text-opacity,1))}@media (min-width:640px){.sm\:h-56{height:14rem}.sm\:w-56{width:14rem}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:text-4xl{font-size:2.25rem;line-height:2.5rem}}@media (min-width:768px){.md\:relative{position:relative}.md\:sticky{position:sticky}.md\:top-0{top:0}.md\:col-span-2{grid-column:span 2/span 2}.md\:mx-0{margin-left:0;margin-right:0}.md\:mt-4{margin-top:1rem}.md\:inline{display:inline}.md\:hidden{display:none}.md\:h-screen{height:100vh}.md\:w-auto{width:auto}.md\:translate-x-0{--tw-translate-x:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.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-\[1fr_2fr_auto\]{grid-template-columns:1fr 2fr auto}.md\:grid-cols-\[300px_1fr\]{grid-template-columns:300px 1fr}.md\:grid-cols-\[96px_1fr\]{grid-template-columns:96px 1fr}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:gap-10{gap:2.5rem}.md\:p-10{padding:2.5rem}.md\:p-5{padding:1.25rem}.md\:text-left{text-align:left}.md\:text-3xl{font-size:1.875rem;line-height:2.25rem}.md\:text-4xl{font-size:2.25rem;line-height:2.5rem}}@media (min-width:1024px){.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}

/* ---- styles.css ---- */
.active-menu-item{
      background:linear-gradient(90deg, rgba(201,162,39,.1) 0%, rgba(201,162,39,.3) 100%);
      border-left:4px solid #c9a227;color:#ffffff !important;font-weight:600;
    }
    @media (max-width: 767px){
      .active-menu-item{
        background: rgba(201,162,39,.2);
        border-left: none;
        border-bottom: 4px solid #c9a227;
        color: #ffffff !important;
      }
    }
    .social-icon{transition:all .3s ease;}
    .social-icon:hover{transform:translateY(-3px);box-shadow:0 5px 15px rgba(201,162,39,.3);}
    .profile-img{filter:drop-shadow(0 10px 15px rgba(0,0,0,.2));}
    .card-hover{transition:all .3s ease;}
    .card-hover:hover{transform:translateY(-5px);box-shadow:0 15px 30px rgba(0,0,0,.1);}
    @media (max-width: 767px){
      .social-icon{width: 2rem; height: 2rem;}
      .social-icon i{font-size: .875rem;}
    }

    /* Timeline vertical (Educación Continua) */
    .timeline-rail{position:relative;padding-left:2.5rem;}
    .timeline-rail::before{
      content:"";position:absolute;left:1rem;top:0;bottom:0;width:2px;
      background:linear-gradient(180deg, rgba(11,107,58,.3), rgba(201,162,39,.5));
    }
    .timeline-node{
      position:absolute;left:.8rem;width:14px;height:14px;border-radius:9999px;background:#c9a227;
      box-shadow:0 0 0 6px rgba(201,162,39,.15),0 6px 18px rgba(0,0,0,.15);
    }
    .timeline-card{transition:transform .25s ease, box-shadow .25s ease, border-color .25s ease;}
    .timeline-card:hover{transform:translateY(-3px);box-shadow:0 18px 40px rgba(2,6,23,.15);border-color:rgba(201,162,39,.4);}

    /* Botones toggle tamaño fijo */
    .toggle-btn { height: 2.5rem; }
    .toggle-grid { display:grid; grid-template-columns: 1fr 1fr; gap:.5rem; width:100%; }

    .fc { --fc-border-color:#e2e8f0; --fc-page-bg-color:transparent; }
    .dark .fc{
      --fc-small-font-size: .85rem;
      --fc-page-bg-color: transparent;
      --fc-neutral-bg-color: #0b1220;
      --fc-neutral-text-color: #cbd5e1;
      --fc-border-color: #334155;
      --fc-button-text-color: #0f172a;
      --fc-button-bg-color: #c9a227;
      --fc-button-border-color: #c9a227;
      --fc-button-hover-bg-color: #ddb83b;
      --fc-button-hover-border-color: #ddb83b;
      --fc-button-active-bg-color: #a5841f;
      --fc-button-active-border-color: #a5841f;
      --fc-event-bg-color: #0b6b3a;
      --fc-event-border-color: #0b6b3a;
      --fc-event-text-color: #fff;
      --fc-today-bg-color: rgba(201,162,39,.12);
      --fc-text-color: #e5e7eb;
    }
    @media (max-width: 640px) {
      .fc .fc-header-toolbar { display:flex; flex-wrap:wrap; gap:.5rem; }
      .fc .fc-header-toolbar .fc-toolbar-chunk { flex:1 1 100%; display:flex; justify-content:center; }
      .fc .fc-header-toolbar .fc-toolbar-chunk:nth-child(2) { order:1; }
      .fc .fc-header-toolbar .fc-toolbar-chunk:nth-child(1) { order:2; }
      .fc .fc-header-toolbar .fc-toolbar-chunk:nth-child(3) { order:3; }
      .fc .fc-toolbar-title { font-size:1rem; line-height:1.25rem; }
      .fc .fc-button { padding:.35rem .55rem; font-size:.75rem; border-radius:.5rem; }
      .fc .fc-button-group { gap:.35rem; flex-wrap:wrap; }
    }

    @media (max-width: 640px) {
      /* header del calendar responsivo */
      .fc .fc-header-toolbar { display:flex; flex-wrap:wrap; gap:.5rem; }
      .fc .fc-header-toolbar .fc-toolbar-chunk { flex:1 1 100%; display:flex; justify-content:center; }
      .fc .fc-header-toolbar .fc-toolbar-chunk:nth-child(2) { order:1; } /* title */
      .fc .fc-header-toolbar .fc-toolbar-chunk:nth-child(1) { order:2; } /* prev/next/hoy */
      .fc .fc-header-toolbar .fc-toolbar-chunk:nth-child(3) { order:3; } /* vistas */
      .fc .fc-toolbar-title { font-size:1rem; line-height:1.25rem; }
      .fc .fc-button { padding:.35rem .55rem; font-size:.75rem; border-radius:.5rem; }
      .fc .fc-button-group { gap:.35rem; flex-wrap:wrap; }
    }

    /* Cortar texto al 3er renglón */
    .line-clamp-3{
      overflow:hidden; display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:3;
    }

    /* --- Galería full-bleed (rompe el max-width del contenedor) --- */
    .gallery-bleed{
      position:relative; left:50%; right:50%;
      margin-left:calc(50% - 50vw); margin-right:calc(50% - 50vw);
    }

    /* --- Masonry con columnas CSS --- */
    .masonry{ column-gap: 1rem; }
    .masonry > *{ break-inside: avoid; }

    /* --- Lightbox genérico (no usado por la nueva galería, pero disponible) --- */
    .lightbox-backdrop{ background: rgba(0,0,0,.9); }
    .lightbox-btn{
      position:absolute; top:50%; transform:translateY(-50%);
      width:3rem; height:3rem; border-radius:.75rem;
      display:flex; align-items:center; justify-content:center;
      background: rgba(255,255,255,.08);
      border:1px solid rgba(255,255,255,.15);
      backdrop-filter: blur(6px);
    }
    .lightbox-btn:hover{ background: rgba(255,255,255,.18); }
    .lightbox-close{
      position:absolute; top:1rem; right:1rem;
      width:2.5rem; height:2.5rem; border-radius:.75rem;
      background: rgba(255,255,255,.1); border:1px solid rgba(255,255,255,.2);
      display:flex; align-items:center; justify-content:center;
    }

    /* ==== GALERÍA PATRÓN 1–2 / 2–1 (álbumes con lightbox) ==== */
    .uabc-gallery-grid{ display:grid; gap:16px; grid-template-columns:1fr; grid-auto-rows:220px; }
    @media (min-width:980px){
      .uabc-gallery-grid{ grid-template-columns:repeat(12,minmax(0,1fr)); grid-auto-rows:240px; }
      .uabc-gallery-grid > .uabc-card{ grid-column:span 4; }
      .uabc-gallery-grid > .uabc-card:nth-child(4n+2),
      .uabc-gallery-grid > .uabc-card:nth-child(4n+3){ grid-column:span 8; }
    }
    @media (max-width: 767px) {
      .uabc-gallery-grid{ grid-template-columns:1fr; grid-auto-rows:180px; }
    }
    .uabc-card{
      position:relative; overflow:hidden; border-radius:22px;
      background:rgba(11,107,58,.06); border:1px solid rgba(15,23,42,.08);
      box-shadow:0 14px 36px -18px rgba(2,6,23,.25); cursor:pointer;
      transition:transform .3s cubic-bezier(.4,0,.2,1), box-shadow .3s ease;
    }
    .uabc-card:hover{ transform:translateY(-3px); box-shadow:0 20px 40px -20px rgba(2,6,23,.35); }
    .uabc-card img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; transition:transform .35s ease; }
    .uabc-card:hover img{ transform:scale(1.05); }
    .uabc-badge{
      position:absolute; top:10px; left:10px; padding:.28rem .6rem;
      background:#fff; border-radius:9999px; font-size:12px; font-weight:700;
      backdrop-filter:blur(10px); z-index:10;
    }
    .uabc-caption{
      position:absolute; left:0; right:0; bottom:0; padding:16px 20px; color:#fff; font-weight:700;
      background:linear-gradient(180deg,transparent,rgba(0,0,0,.7)); text-shadow:0 1px 2px rgba(0,0,0,.6); z-index:10;
    }

    .uabc-lightbox{ position:fixed; inset:0; display:none; align-items:center; justify-content:center; padding:20px; z-index:60; }
    .uabc-lightbox.open{ display:flex; animation: uabcFade .4s ease; }
    .uabc-lb-back{ position:absolute; inset:0; background:rgba(0,0,0,.85); backdrop-filter:blur(8px); }
    .uabc-lb-dialog{
      position:relative; z-index:61; width:min(1100px,95%); max-height:90vh; background:#0b1220; color:#e5e7eb;
      border-radius:24px; overflow:hidden; box-shadow:0 30px 70px rgba(0,0,0,.35); animation:uabcPop .4s cubic-bezier(.4,0,.2,1);
    }
    .uabc-lb-head{ display:flex; align-items:center; justify-content:space-between; gap:12px; padding:16px 24px; border-bottom:1px solid #334155; }
    .uabc-icon{ display:inline-flex; align-items:center; justify-content:center; width:42px; height:42px; border-radius:12px;
      border:1px solid #334155; background:#0f172a; color:#e5e7eb; cursor:pointer; transition:.2s ease; }
    .uabc-icon:hover{ background:#c9a227; border-color:#c9a227; transform:scale(1.05); color:#0f172a; }
    .uabc-view{ position:relative; width:100%; aspect-ratio:16/9; background:#0b0e14; }
    .uabc-view img{ position:absolute; inset:0; width:100%; height:100%; object-fit:contain; background:#0b0e14; transition:opacity .3s ease; }
    .uabc-nav{ position:absolute; top:50%; transform:translateY(-50%); width:48px; height:48px; border:none; border-radius:9999px;
      background:rgba(255,255,255,.95); color:#111; cursor:pointer; font-size:24px; display:flex; align-items:center; justify-content:center; transition:.2s ease; }
    .uabc-nav:hover{ background:#fff; transform:translateY(-50%) scale(1.1); }
    .uabc-nav.prev{ left:20px; } .uabc-nav.next{ right:20px; }
    .uabc-thumbs{ display:flex; gap:12px; padding:16px; overflow-x:auto; background:#0b0e14; border-top:1px solid #334155; }
    .uabc-thumbs img{ width:120px; height:80px; object-fit:cover; border-radius:12px; opacity:.7; cursor:pointer; outline:2px solid transparent; outline-offset:2px; transition:.2s ease; }
    .uabc-thumbs img.active{ opacity:1; outline-color:#c9a227; transform:scale(1.05); }
    .uabc-progress{ position:absolute; bottom:16px; left:50%; transform:translateX(-50%); padding:8px 16px; background:rgba(0,0,0,.7);
      color:#fff; border-radius:20px; font-size:14px; font-weight:600; backdrop-filter:blur(10px); z-index:62; }
    .uabc-spinner{ position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); width:40px; height:40px; border:3px solid rgba(255,255,255,.1); border-top:3px solid #c9a227; border-radius:50%; animation:uabcSpin 1s linear infinite; }
    @keyframes uabcFade{ from{opacity:0} to{opacity:1} }
    @keyframes uabcPop{ from{ transform:scale(.96) translateY(20px); opacity:0 } to{ transform:scale(1) translateY(0); opacity:1 } }
    @keyframes uabcSpin{ to{ transform:translate(-50%,-50%) rotate(360deg) } }

    /* Docencia (estilo timeline de la captura) – comentarios de referencia
    .teach-section h2.section-title{ ... }
    */


/* ---- layout-fixes.css ---- */
/*
 * UABC Professional Portal — layout hardening layer
 * Loaded after Tailwind/inline generated styles so responsive corrections win.
 * Keeps the existing visual identity while preventing overlaps and horizontal overflow.
 */

:root {
  --uabc-green: #0b6b3a;
  --uabc-green-dark: #083321;
  --uabc-gold: #c9a227;
  --page-gutter: clamp(1rem, 3vw, 2.5rem);
  --floating-gap: 1rem;
}

html {
  width: 100%;
  max-width: 100%;
  scroll-behavior: smooth;
  overflow-x: clip;
}

body {
  width: 100%;
  max-width: 100%;
  min-height: 100dvh;
  overflow-x: clip;
}

/* Prevent long academic content, URLs and labels from pushing containers wider. */
#app,
#sidebar,
#socialPanel,
#cookieBanner,
#podcastPlayer {
  overflow-wrap: anywhere;
  word-break: normal;
}

#app,
#app > *,
#app section,
#app article,
#app aside,
#app .grid,
#app .flex,
main {
  min-width: 0;
  max-width: 100%;
}

#app .grid > *,
#app .flex > *,
#sidebar .flex > *,
#cookieBanner .flex > *,
#podcastPlayer .flex > * {
  min-width: 0;
}

/* Main application shell */
body > div.grid.min-h-screen {
  width: 100%;
  max-width: 100%;
  align-items: stretch;
}

main {
  width: 100%;
  overflow-x: clip;
}

#app {
  width: 100%;
  margin-inline: auto;
}

#app > section {
  width: 100%;
}

#app h1,
#app h2,
#app h3,
#app h4,
#app p,
#app li,
#app a,
#app span {
  max-width: 100%;
}

#app a,
#app p,
#app li {
  overflow-wrap: anywhere;
}

#app img,
#app video,
#app iframe,
#app canvas,
#app svg {
  max-width: 100%;
}

#app iframe {
  display: block;
}

/* Consistent cards/containers */
#app .rounded-xl,
#app .rounded-2xl,
#app .rounded-lg {
  min-width: 0;
}

#app [class*="shadow"] {
  max-width: 100%;
}

/* Forms: never escape their grid column */
#app form,
#app label,
#app input,
#app select,
#app textarea,
#app button {
  max-width: 100%;
}

#app input,
#app select,
#app textarea {
  width: 100%;
  min-width: 0;
}

#app textarea {
  resize: vertical;
}

#app button,
#app [role="button"] {
  line-height: 1.25;
}

/* Lists/tables with arbitrary real-world content */
#app table {
  width: 100%;
  max-width: 100%;
}

#app td,
#app th {
  overflow-wrap: anywhere;
  vertical-align: top;
}

#app .overflow-x-auto {
  width: 100%;
  max-width: 100%;
  -webkit-overflow-scrolling: touch;
}

/* === Sidebar === */
#sidebar {
  width: min(20rem, 88vw);
  max-width: 100%;
  height: 100dvh !important;
  max-height: 100dvh;
  overflow-y: auto !important;
  overflow-x: hidden !important;
  overscroll-behavior: contain;
  scrollbar-gutter: stable;
  -webkit-overflow-scrolling: touch;
}

#sidebar > div {
  width: 100%;
  height: auto !important;
  min-height: 100%;
}

#sidebar nav {
  width: 100%;
  flex: 0 0 auto;
}

#sidebar .menu-link {
  width: 100%;
  min-height: 2.75rem;
  line-height: 1.25;
}

#sidebar .menu-link > span {
  min-width: 0;
  overflow-wrap: anywhere;
}

#sidebar .menu-link svg,
#sidebar .menu-link i {
  flex: 0 0 auto;
}

#sidebar .toggle-grid {
  min-width: 0;
}

#sidebar .toggle-btn {
  min-width: 0;
  padding-inline: .5rem;
  white-space: normal !important;
  line-height: 1.15;
}

#closeSidebarBtn {
  position: sticky !important;
  top: 0 !important;
  margin-left: auto;
  z-index: 3;
}

/* Mobile top bar */
body > header.md\:hidden {
  width: 100%;
  max-width: 100%;
}

#mobileMenuBtn {
  flex: 0 0 auto;
}

#backdrop {
  z-index: 45 !important;
}

/* === Floating social panel === */
#socialDock {
  right: max(1rem, env(safe-area-inset-right)) !important;
  bottom: max(1rem, env(safe-area-inset-bottom)) !important;
  max-width: calc(100vw - 2rem);
}

#socialPanel {
  width: min(20rem, calc(100vw - 2rem)) !important;
  max-width: calc(100vw - 2rem) !important;
  max-height: min(34rem, calc(100dvh - 7rem));
  overflow-y: auto;
  overflow-x: hidden;
}

#socialPanel .grid {
  grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
}

#socialPanel .social-icon {
  width: 100% !important;
  min-width: 0;
  aspect-ratio: 1;
  height: auto !important;
}

#socialToggle {
  flex: 0 0 auto;
}

/* === Cookie banner === */
#cookieBanner {
  max-width: 100vw;
  max-height: min(70dvh, 30rem);
  overflow-y: auto;
  overflow-x: hidden;
  padding-bottom: max(1rem, env(safe-area-inset-bottom)) !important;
}

#cookieBanner .max-w-5xl {
  width: 100%;
  min-width: 0;
}

#cookieBanner button {
  white-space: nowrap;
}

body:has(#cookieBanner:not(.hidden)) #socialDock {
  bottom: clamp(10rem, 30dvh, 20rem) !important;
}

/* === Floating podcast player === */
#podcastPlayer {
  width: 100%;
  max-width: 100vw;
  padding-bottom: env(safe-area-inset-bottom);
}

#podcastPlayer > div,
#podcastPlayer .max-w-5xl {
  width: 100%;
  max-width: 100%;
  min-width: 0;
}

#podcastPlayer .truncate {
  min-width: 0;
  max-width: 100%;
}

body:has(#podcastPlayer:not(.translate-y-full)) #socialDock {
  bottom: 6rem !important;
}

body:has(#cookieBanner:not(.hidden)):has(#podcastPlayer:not(.translate-y-full)) #socialDock {
  bottom: clamp(15rem, 38dvh, 23rem) !important;
}

/* === FullCalendar === */
.fc {
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
}

.fc .fc-view-harness,
.fc .fc-scrollgrid,
.fc table {
  max-width: 100%;
}

.fc .fc-toolbar {
  min-width: 0;
}

.fc .fc-toolbar-title {
  overflow-wrap: anywhere;
}

.fc .fc-button {
  white-space: normal;
  line-height: 1.1;
}

/* === Publications === */
#pubsType,
#pubsSearch,
#pubsSort {
  min-width: 0;
  max-width: 100%;
}

#pubsContainer,
#pubsContainer > * {
  min-width: 0;
  max-width: 100%;
}

/* === Research carousel === */
#memberCarousel {
  width: 100%;
  max-width: 100%;
  min-width: 0;
}

#memberTrack {
  max-width: 100%;
}

#memberTrack > * {
  vertical-align: top;
  white-space: normal;
  overflow-wrap: anywhere;
}

/* === Blog === */
#latestPost,
#postsList,
#postsList > * {
  min-width: 0;
  max-width: 100%;
}

/* === Teaching / generated lists === */
#ugList,
#gradList,
#positionsList,
#educationList,
#moreSections,
#projectsGrid,
#episodesGrid,
#upcomingEvents,
#pastEvents,
#contactCards {
  min-width: 0;
  max-width: 100%;
}

/* === Gallery / lightbox === */
.uabc-gallery-grid,
.uabc-card {
  max-width: 100%;
  min-width: 0;
}

.uabc-card .uabc-caption {
  overflow-wrap: anywhere;
}

.uabc-lightbox {
  width: 100vw;
  height: 100dvh;
  padding: clamp(.5rem, 2vw, 1.25rem);
}

.uabc-lb-dialog {
  width: min(1100px, 100%) !important;
  max-width: 100%;
  max-height: calc(100dvh - 1rem) !important;
  display: flex;
  flex-direction: column;
}

.uabc-view {
  min-height: 0;
}

.uabc-thumbs {
  flex: 0 0 auto;
}

.uabc-nav {
  z-index: 3;
}

[data-aos] {
  max-width: 100%;
}

@media (hover: none) {
  .card-hover:hover,
  .timeline-card:hover,
  .uabc-card:hover,
  .social-icon:hover {
    transform: none !important;
  }
}

/* Tablet / small desktop */
@media (min-width: 768px) and (max-width: 1023px) {
  body > div.grid.min-h-screen {
    grid-template-columns: 16.5rem minmax(0, 1fr) !important;
  }

  #sidebar {
    width: auto !important;
    padding: 1.1rem !important;
  }

  #sidebar .profile-img {
    width: 6rem !important;
    height: 6rem !important;
  }

  #sidebar > div {
    gap: 1rem !important;
  }

  #sidebar .menu-link {
    padding: .6rem .7rem !important;
  }

  main {
    padding: 1.5rem !important;
  }
}

/* Mobile */
@media (max-width: 767px) {
  body > div.grid.min-h-screen {
    display: block !important;
    min-height: 0 !important;
  }

  #sidebar {
    width: min(20rem, 88vw) !important;
    padding: 1.25rem !important;
  }

  #sidebar > div {
    gap: 1rem !important;
  }

  #sidebar .profile-img {
    width: 6.5rem !important;
    height: 6.5rem !important;
  }

  #sidebar .menu-link {
    padding: .65rem .8rem !important;
  }

  main {
    width: 100% !important;
    padding: 1.25rem !important;
  }

  #app {
    width: 100%;
    max-width: 100%;
  }

  #app h2.text-3xl,
  #app h2.md\:text-4xl,
  #app h2.sm\:text-4xl {
    font-size: clamp(1.65rem, 7vw, 2rem) !important;
    line-height: 1.15 !important;
  }

  #app h3.text-2xl,
  #app h3.md\:text-3xl {
    font-size: clamp(1.3rem, 5.5vw, 1.6rem) !important;
    line-height: 1.2 !important;
  }

  #app .md\:grid-cols-2,
  #app .md\:grid-cols-3,
  #app .lg\:grid-cols-3,
  #app .md\:grid-cols-\[1fr_2fr_auto\] {
    grid-template-columns: minmax(0, 1fr) !important;
  }

  #app .md\:flex-row {
    flex-direction: column !important;
  }

  #app .flex.gap-3,
  #app .flex.gap-4 {
    flex-wrap: wrap;
  }

  #socialDock {
    right: max(.75rem, env(safe-area-inset-right)) !important;
    bottom: max(.75rem, env(safe-area-inset-bottom)) !important;
  }

  #socialToggle {
    width: 3.5rem !important;
    height: 3.5rem !important;
    border-radius: .9rem !important;
  }

  #socialPanel {
    width: min(19rem, calc(100vw - 1.5rem)) !important;
    max-width: calc(100vw - 1.5rem) !important;
  }

  #cookieBanner {
    padding: .9rem !important;
  }

  #cookieBanner .flex.gap-2 {
    width: 100%;
  }

  #cookieBanner .flex.gap-2 > button {
    flex: 1 1 0;
    min-width: 0;
  }

  body:has(#cookieBanner:not(.hidden)) #socialDock {
    bottom: clamp(14rem, 42dvh, 23rem) !important;
  }

  #podcastPlayer .max-w-5xl {
    padding: .65rem .85rem !important;
  }

  #podcastPlayer .max-w-5xl > .flex {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) auto !important;
    align-items: center !important;
    gap: .55rem .75rem !important;
  }

  #podcastPlayer .max-w-5xl > .flex > :nth-child(1) {
    grid-column: 1;
    min-width: 0;
  }

  #podcastPlayer .max-w-5xl > .flex > :nth-child(2) {
    grid-column: 2;
    justify-self: end;
  }

  #podcastPlayer .max-w-5xl > .flex > :nth-child(3) {
    grid-column: 1 / -1;
    width: 100%;
    max-width: none !important;
  }

  #podcastPlayer .max-w-5xl > .flex > :nth-child(4) {
    position: absolute;
    top: .45rem;
    right: .45rem;
  }

  #podcastPlayer .max-w-5xl > .flex > :nth-child(4) > :not(#podcastPlayerClose) {
    display: none !important;
  }

  body:has(#podcastPlayer:not(.translate-y-full)) #socialDock {
    bottom: 8.75rem !important;
  }

  body:has(#cookieBanner:not(.hidden)):has(#podcastPlayer:not(.translate-y-full)) #socialDock {
    bottom: clamp(19rem, 50dvh, 28rem) !important;
  }

  #pubsType {
    width: 100%;
  }

  #pubsSort {
    width: 2.75rem;
    flex: 0 0 2.75rem;
  }

  .fc .fc-header-toolbar {
    margin-bottom: .75rem !important;
  }

  .fc .fc-toolbar-chunk {
    min-width: 0;
  }

  .fc .fc-button {
    padding: .35rem .45rem !important;
    font-size: .72rem !important;
  }

  .uabc-lb-head {
    padding: .75rem !important;
  }

  .uabc-lb-head h3 {
    min-width: 0;
    font-size: 1rem;
  }

  .uabc-nav {
    width: 2.5rem !important;
    height: 2.5rem !important;
  }

  .uabc-nav.prev {
    left: .5rem !important;
  }

  .uabc-nav.next {
    right: .5rem !important;
  }

  .uabc-thumbs img {
    width: 5.5rem !important;
    height: 3.75rem !important;
  }
}

/* Very small phones */
@media (max-width: 420px) {
  main {
    padding: 1rem !important;
  }

  #sidebar {
    width: 92vw !important;
    padding: 1rem !important;
  }

  #sidebar .profile-img {
    width: 5.75rem !important;
    height: 5.75rem !important;
  }

  #socialPanel .grid {
    gap: .5rem !important;
  }

  #socialPanel {
    padding: .75rem !important;
  }

  #podcastPlayer .w-12.h-12 {
    width: 2.5rem !important;
    height: 2.5rem !important;
  }

  #podcastPlayer .w-10.h-10 {
    width: 2.25rem !important;
    height: 2.25rem !important;
  }

  #podcastPlayer .w-8.h-8 {
    width: 2rem !important;
    height: 2rem !important;
  }

  #cookieBanner .flex.gap-2 {
    flex-direction: column;
  }

  #cookieBanner .flex.gap-2 > button {
    width: 100%;
  }
}

/* Short laptops */
@media (min-width: 768px) and (max-height: 820px) {
  #sidebar {
    padding-top: 1rem !important;
    padding-bottom: 1rem !important;
  }

  #sidebar > div {
    gap: .8rem !important;
  }

  #sidebar .profile-img {
    width: 5rem !important;
    height: 5rem !important;
    margin-bottom: .5rem !important;
  }

  #sidebar h1 {
    font-size: 1.08rem !important;
    line-height: 1.25 !important;
  }

  #sidebar nav {
    margin-top: .15rem !important;
  }

  #sidebar .menu-link {
    min-height: 2.25rem;
    padding: .42rem .7rem !important;
    font-size: .86rem;
  }

  #sidebar .mt-auto {
    margin-top: .75rem !important;
  }

  #sidebar .pt-6 {
    padding-top: .75rem !important;
  }

  #sidebar .mb-6 {
    margin-bottom: .65rem !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    scroll-behavior: auto !important;
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
  }
}


/* ---- enhancements.css ---- */
/* Progressive product enhancements: accessibility, search, detail pages and professional visual polish. */

.skip-link {
  position: fixed;
  left: 1rem;
  top: 1rem;
  z-index: 9999;
  padding: .75rem 1rem;
  border-radius: .75rem;
  background: #fff;
  color: #083321;
  font-weight: 700;
  box-shadow: 0 12px 30px rgba(0,0,0,.2);
  transform: translateY(-160%);
  transition: transform .2s ease;
}
.skip-link:focus { transform: translateY(0); }
.sr-only {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0,0,0,0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}
:focus-visible { outline: 3px solid #c9a227; outline-offset: 3px; }

/* Global search */
.global-search-button {
  position: fixed;
  left: 1rem;
  bottom: 1rem;
  z-index: 68;
  display: flex;
  align-items: center;
  gap: .55rem;
  padding: .65rem .85rem;
  border: 1px solid rgba(255,255,255,.18);
  border-radius: 999px;
  background: rgba(8,51,33,.96);
  color: #fff;
  box-shadow: 0 10px 26px rgba(2,6,23,.18);
  font-weight: 700;
  backdrop-filter: blur(10px);
}
.global-search-button:hover { transform: translateY(-1px); }
.global-search-button kbd {
  padding: .08rem .38rem;
  border-radius: .35rem;
  background: rgba(255,255,255,.12);
  font-size: .72rem;
}
.global-search-dialog {
  width: min(760px,calc(100vw - 2rem));
  max-height: min(760px,calc(100dvh - 2rem));
  padding: 0;
  border: 0;
  border-radius: 1rem;
  background: transparent;
}
.global-search-dialog::backdrop { background: rgba(2,6,23,.7); backdrop-filter: blur(4px); }
.search-panel { overflow: hidden; border-radius: 1rem; background: #fff; color: #0f172a; box-shadow: 0 30px 80px rgba(2,6,23,.38); }
.search-head { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1rem 1rem .6rem; font-weight: 700; }
.search-close { width: 2.4rem; height: 2.4rem; border-radius: .65rem; background: #f1f5f9; font-size: 1.5rem; }
.search-input { display: block; width: calc(100% - 2rem); margin: 0 1rem 1rem; padding: .9rem 1rem; border: 1px solid #cbd5e1; border-radius: .8rem; font: inherit; }
.search-results { max-height: 58dvh; overflow: auto; border-top: 1px solid #e2e8f0; }
.search-result { display: grid; gap: .2rem; padding: .9rem 1rem; border-bottom: 1px solid #f1f5f9; text-decoration: none; }
.search-result:hover,.search-result:focus { background: #f8fafc; }
.search-result strong { color: #083321; }
.search-result>span:last-child { color: #64748b; font-size: .88rem; line-height: 1.4; }
.search-section { width: max-content; padding: .15rem .45rem; border-radius: 999px; background: #ecf7f1; color: #0a5f35; font-size: .7rem; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; }
.search-empty,.search-help { padding: 1rem; color: #64748b; }
.search-help { margin: 0; font-size: .78rem; border-top: 1px solid #e2e8f0; }

/* Detail pages */
.detail-page { min-height: 100vh; background: #f8fafc; color: #1e293b; font-family: Inter,ui-sans-serif,system-ui,sans-serif; }
.detail-shell { width: min(880px,calc(100% - 2rem)); margin: 0 auto; padding: 3rem 0 5rem; }
.detail-back { display: inline-flex; margin-bottom: 2rem; color: #0a5f35; font-weight: 700; }
.detail-kicker { color: #8f6b18; font-size: .8rem; font-weight: 800; text-transform: uppercase; letter-spacing: .08em; }
.detail-title { margin: .45rem 0 1rem; font-size: clamp(2rem,5vw,3.6rem); line-height: 1.05; color: #083321; }
.detail-summary { font-size: 1.08rem; line-height: 1.7; color: #475569; }
.detail-card { margin-top: 2rem; padding: 1.4rem; border: 1px solid #e2e8f0; border-radius: 1rem; background: #fff; box-shadow: 0 12px 30px -20px rgba(2,6,23,.3); }
.detail-grid { display: grid; grid-template-columns: minmax(140px,.35fr) 1fr; gap: .8rem 1.2rem; }
.detail-grid dt { font-weight: 800; color: #334155; }
.detail-grid dd { margin: 0; overflow-wrap: anywhere; }
.detail-grid a { color: #0a5f35; text-decoration: underline; }
.install-hint { position: fixed; right: 1rem; top: 1rem; z-index: 65; }

/* Scrollable modal surfaces with visually hidden scrollbars. */
.global-search-dialog,
.search-results,
.uabc-lb-dialog,
#socialPanel,
#cookieBanner {
  scrollbar-width: none;
  -ms-overflow-style: none;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
}

.global-search-dialog {
  overflow-y: auto;
  overflow-x: hidden;
}

.uabc-lb-dialog {
  overflow-y: auto !important;
  overflow-x: hidden !important;
}

.global-search-dialog::-webkit-scrollbar,
.search-results::-webkit-scrollbar,
.uabc-lb-dialog::-webkit-scrollbar,
#socialPanel::-webkit-scrollbar,
#cookieBanner::-webkit-scrollbar {
  width: 0;
  height: 0;
  display: none;
}


/* ---- template-demo.css ---- */
.template-demo-notice{position:fixed;left:max(1rem,env(safe-area-inset-left));bottom:max(1rem,env(safe-area-inset-bottom));z-index:65;display:inline-flex;align-items:center;gap:.55rem;max-width:calc(100vw - 2rem);padding:.55rem .75rem;border:1px solid rgba(15,23,42,.12);border-radius:999px;background:rgba(255,255,255,.92);box-shadow:0 10px 30px rgba(15,23,42,.14);backdrop-filter:blur(12px);color:#334155;font:500 .75rem/1.2 Inter,ui-sans-serif,system-ui,sans-serif}.template-demo-notice strong{display:inline-flex;align-items:center;padding:.2rem .45rem;border-radius:999px;background:#083321;color:#fff;font-size:.68rem;letter-spacing:.04em;text-transform:uppercase}.dark .template-demo-notice{border-color:rgba(255,255,255,.12);background:rgba(15,23,42,.92);color:#cbd5e1}@media(max-width:640px){.template-demo-notice{left:.75rem;bottom:.75rem;max-width:calc(100vw - 1.5rem);padding:.48rem .65rem;font-size:.7rem}}@media(prefers-reduced-motion:reduce){.template-demo-notice{backdrop-filter:none}}


/* ---- presentation-refinement.css ---- */
/*
 * Presentation refinement
 * Keeps the professional polish while restoring the original information hierarchy.
 */
:root {
  --portal-ink: #0f172a;
  --portal-body: #334155;
  --portal-muted: #475569;
  --portal-subtle: #64748b;
  --portal-green: #083d2b;
  --portal-gold-readable: #f0cf58;
}

body {
  color: var(--portal-body);
  background: #f8faf9;
}

/* Readability: avoid globally washing academic copy out in pale gray. */
#app p,
#app li,
#app dd,
#app td {
  color: var(--portal-body);
}

#app .text-slate-500,
#app .text-slate-600,
#app .text-slate-700,
#app .text-sm.text-slate-600,
#app .text-xs.text-slate-500 {
  color: var(--portal-muted) !important;
}

#app h1,
#app h2,
#app h3,
#app h4,
#app strong,
#app dt {
  color: var(--portal-ink);
}

#app a:not(.btn):not([class*="bg-"]) {
  text-underline-offset: .16em;
}

/* Sidebar proportions return to the original 300 px academic layout. */
@media (min-width: 768px) {
  body > div.grid.min-h-screen {
    grid-template-columns: 18.75rem minmax(0, 1fr) !important;
  }

  #sidebar {
    width: 18.75rem !important;
    padding: 1.5rem !important;
  }

  main {
    padding: 2.5rem !important;
  }

  #app {
    max-width: 64rem !important;
  }

  .global-search-button {
    left: calc(18.75rem + 1.25rem) !important;
  }
}

#sidebar > div {
  gap: 1.5rem !important;
}

#sidebar .profile-img {
  width: 8rem !important;
  height: 8rem !important;
  margin-bottom: 1rem !important;
}

#sidebar h1 {
  color: #fff !important;
  font-size: 1.5rem !important;
  line-height: 1.25 !important;
  letter-spacing: -.025em;
}

#sidebar [data-i18n="role"] {
  color: var(--portal-gold-readable) !important;
  font-weight: 600;
}

#sidebar [data-i18n="university"] {
  color: #d8e5df !important;
  line-height: 1.45;
}

#sidebar .menu-link {
  color: #f8faf9 !important;
  min-height: 2.9rem !important;
  padding: .72rem .85rem !important;
}

#sidebar .menu-link svg,
#sidebar .menu-link i {
  color: #efca43 !important;
}

#sidebar .text-white\/50,
#sidebar .text-white\/70 {
  color: #c8d8d0 !important;
}

#sidebar a:hover {
  color: #fff;
}

/* Restore the original home-header geometry: top-aligned portrait + name + biography. */
#app > section > header:first-child {
  align-items: flex-start !important;
  gap: 2rem !important;
  margin-bottom: 2.5rem !important;
}

#app > section > header:first-child .profile-img {
  width: 14rem !important;
  height: 14rem !important;
  flex: 0 0 14rem !important;
  border: 0 !important;
  box-shadow: 0 12px 30px -18px rgba(15, 23, 42, .45) !important;
}

#app > section > header:first-child h2 {
  margin-top: .15rem;
  font-size: 2.25rem !important;
  line-height: 1.15 !important;
  color: var(--portal-ink) !important;
}

#app > section > header:first-child hr {
  margin-block: 1rem !important;
  border-color: #dce3e0 !important;
}

#app > section > header:first-child p {
  max-width: 48rem !important;
  color: #27364a !important;
  line-height: 1.65 !important;
  text-align: justify !important;
}

/* Cards should read as academic content, not disabled dashboard widgets. */
#positionsList > div,
#educationList > div,
#moreSections .timeline-card,
#upcomingEvents > div,
#pastEvents > div {
  color: var(--portal-body);
}

#positionsList .text-sm,
#educationList .text-sm,
#moreSections .text-sm {
  color: var(--portal-muted) !important;
}

/* Dark mode with real contrast rather than gray-on-gray. */
.dark body,
html.dark body {
  color: #e2e8f0;
}

.dark #app p,
.dark #app li,
.dark #app dd,
.dark #app td {
  color: #d5dde7 !important;
}

.dark #app h1,
.dark #app h2,
.dark #app h3,
.dark #app h4,
.dark #app strong,
.dark #app dt {
  color: #f8fafc !important;
}

.dark #app > section > header:first-child p {
  color: #d5dde7 !important;
}

.dark #app .text-slate-500,
.dark #app .text-slate-600,
.dark #app .text-slate-700 {
  color: #c1ccd9 !important;
}

@media (min-width: 768px) and (max-width: 1023px) {
  body > div.grid.min-h-screen {
    grid-template-columns: 17rem minmax(0, 1fr) !important;
  }
  #sidebar { width: 17rem !important; }
  #sidebar .profile-img { width: 7rem !important; height: 7rem !important; }
  #app > section > header:first-child .profile-img {
    width: 11rem !important;
    height: 11rem !important;
    flex-basis: 11rem !important;
  }
  main { padding: 2rem !important; }
  .global-search-button { left: calc(17rem + 1rem) !important; }
}

@media (max-width: 767px) {
  #sidebar .profile-img {
    width: 7rem !important;
    height: 7rem !important;
  }

  #sidebar h1 {
    font-size: 1.35rem !important;
  }

  #app > section > header:first-child {
    align-items: center !important;
    gap: 1.35rem !important;
  }

  #app > section > header:first-child .profile-img {
    width: 10rem !important;
    height: 10rem !important;
    flex-basis: 10rem !important;
  }

  #app > section > header:first-child h2 {
    font-size: clamp(1.85rem, 8vw, 2.2rem) !important;
    text-align: center;
  }

  #app > section > header:first-child p {
    max-width: none !important;
    text-align: left !important;
  }
}

/* ---- showcase.css ---- */
/* Academic Professional Portal — portfolio-grade showcase layer */
:root {
  --showcase-ink:#0f172a;
  --showcase-muted:#536273;
  --showcase-line:#dfe7e3;
  --showcase-surface:#ffffff;
  --showcase-soft:#f4f7f5;
  --showcase-green:#083d2b;
  --showcase-green-2:#0b5c40;
  --showcase-gold:#c9a227;
  --showcase-radius:14px;
  --showcase-shadow:0 14px 36px -28px rgba(15,23,42,.5);
}

::selection { background:rgba(201,162,39,.24); color:var(--showcase-ink); }

/* Give every routed section a deliberate, calm entrance without changing geometry. */
#app > section.portal-enter { animation:portalSectionIn .28s ease-out both; }
@keyframes portalSectionIn {
  from { opacity:.72; transform:translateY(5px); }
  to { opacity:1; transform:none; }
}

/* Section titles share one editorial language. */
#app .portal-section-title {
  position:relative;
  padding-bottom:.8rem;
  margin-bottom:1.55rem !important;
}
#app .portal-section-title::after {
  content:"";
  position:absolute;
  left:0;
  bottom:0;
  width:3rem;
  height:3px;
  border-radius:999px;
  background:linear-gradient(90deg,var(--showcase-gold),#e4c64f);
}

/* Normalize cards produced by the different legacy renderers. */
#pubsContainer > *,
#projectsGrid > *,
#episodesGrid > *,
#postsList > *,
#latestPost > *,
#contactCards > *,
#upcomingEvents > *,
#pastEvents > *,
#positionsList > *,
#educationList > *,
#moreSections .timeline-card,
.portal-card {
  border-color:var(--showcase-line) !important;
  border-radius:var(--showcase-radius) !important;
  box-shadow:var(--showcase-shadow) !important;
}

#pubsContainer > *,
#projectsGrid > *,
#episodesGrid > *,
#postsList > *,
#latestPost > *,
#contactCards > * {
  transition:border-color .18s ease, box-shadow .18s ease, transform .18s ease;
}
@media (hover:hover) {
  #pubsContainer > *:hover,
  #projectsGrid > *:hover,
  #episodesGrid > *:hover,
  #postsList > *:hover,
  #latestPost > *:hover,
  #contactCards > *:hover {
    border-color:#c9d8d1 !important;
    box-shadow:0 18px 40px -30px rgba(8,61,43,.5) !important;
    transform:translateY(-1px);
  }
}

/* Inputs feel like a finished product across publications/contact/search. */
#app input,
#app select,
#app textarea,
.search-input {
  min-height:2.75rem;
  border-color:#ced8d3 !important;
  background-color:rgba(255,255,255,.96) !important;
  color:var(--showcase-ink) !important;
  transition:border-color .15s ease, box-shadow .15s ease, background-color .15s ease;
}
#app textarea { min-height:7rem; }
#app input:focus,
#app select:focus,
#app textarea:focus,
.search-input:focus {
  border-color:#3d8068 !important;
  box-shadow:0 0 0 3px rgba(11,107,58,.12) !important;
  outline:none !important;
}

/* Clearer chips and metadata. */
#app [class*="rounded-full"],
#app .badge,
#app .tag {
  font-variant-numeric:tabular-nums;
}
#pubsCount { font-variant-numeric:tabular-nums; }

/* Placeholder links remain demonstrable without behaving like broken links. */
a[data-demo-link="true"] {
  cursor:help !important;
  text-decoration-style:dotted !important;
}
.portal-demo-toast {
  position:fixed;
  right:max(1rem,env(safe-area-inset-right));
  bottom:max(1rem,env(safe-area-inset-bottom));
  z-index:120;
  width:min(24rem,calc(100vw - 2rem));
  padding:.85rem 1rem;
  border:1px solid rgba(255,255,255,.18);
  border-radius:.85rem;
  background:rgba(8,51,33,.97);
  color:#fff;
  box-shadow:0 22px 55px rgba(15,23,42,.28);
  font-size:.88rem;
  line-height:1.45;
  opacity:0;
  transform:translateY(8px);
  pointer-events:none;
  transition:opacity .18s ease,transform .18s ease;
}
.portal-demo-toast.show { opacity:1; transform:none; }
.portal-demo-toast strong { display:block; color:#f5d86c; margin-bottom:.15rem; }

/* Demo marker is intentional and discreet, not a developer watermark. */
.template-demo-notice {
  border:1px solid rgba(8,61,43,.14) !important;
  background:rgba(255,255,255,.94) !important;
  color:#334155 !important;
  box-shadow:0 10px 28px rgba(15,23,42,.10) !important;
  backdrop-filter:blur(12px);
}
.template-demo-notice strong {
  background:var(--showcase-green) !important;
  color:#fff !important;
}

/* Detail pages generated during build now match the main product. */
.detail-page { background:linear-gradient(145deg,#f8faf9,#eef4f1); }
.detail-shell { width:min(900px,calc(100% - 2rem)); }
.detail-back {
  gap:.4rem;
  text-decoration:none;
  color:var(--showcase-green-2);
}
.detail-back:hover { text-decoration:underline; text-underline-offset:.2em; }
.detail-kicker { color:#8b7017; }
.detail-title { letter-spacing:-.035em; }
.detail-card {
  border-color:var(--showcase-line);
  border-radius:1rem;
  box-shadow:0 18px 45px -34px rgba(15,23,42,.55);
}
.detail-grid dt { color:#475569; }
.detail-grid dd { color:#172235; }
.detail-demo-badge {
  display:inline-flex;
  align-items:center;
  margin-left:.55rem;
  padding:.18rem .48rem;
  border-radius:999px;
  background:#edf5f1;
  color:#0a5f35;
  font-size:.68rem;
  font-weight:800;
  letter-spacing:.04em;
  text-transform:uppercase;
}
.detail-placeholder {
  display:inline-flex;
  align-items:center;
  padding:.24rem .52rem;
  border-radius:999px;
  background:#f3f6f4;
  border:1px dashed #cbd8d1;
  color:#64748b;
  font-size:.78rem;
  font-weight:650;
}

/* Sidebar legal copy looks deliberate instead of legacy footer text. */
#sidebar [data-portal-copyright] {
  color:#c8d8d0 !important;
  letter-spacing:.01em;
}

.dark .template-demo-notice {
  background:rgba(15,23,42,.94) !important;
  border-color:#334155 !important;
  color:#d5dde7 !important;
}
.dark #app input,
.dark #app select,
.dark #app textarea {
  background-color:#111827 !important;
  border-color:#3b4b5f !important;
  color:#f8fafc !important;
}
.dark .detail-page { background:#0f172a; }
.dark .detail-card { background:#1e293b; border-color:#334155; }
.dark .detail-grid dd { color:#e2e8f0; }
.dark .detail-placeholder { background:#172033; border-color:#475569; color:#cbd5e1; }

@media (max-width:767px) {
  .template-demo-notice {
    left:auto !important;
    right:max(.75rem,env(safe-area-inset-right)) !important;
    top:4.4rem !important;
    bottom:auto !important;
  }
  .portal-demo-toast { bottom:5rem; }
  #app .portal-section-title { padding-bottom:.65rem; }
}

@media (prefers-reduced-motion:reduce) {
  #app > section.portal-enter { animation:none !important; }
  #pubsContainer > *,#projectsGrid > *,#episodesGrid > *,#postsList > *,#latestPost > *,#contactCards > * { transform:none !important; }
}


/* ---- theme-system.css ---- */
/* Academic Professional Portal — authoritative theme and typography system.
 * Loaded last in production so semantic tokens win over legacy utility layers.
 */
:root {
  color-scheme: light;
  --ui-canvas:#f7f9f8;
  --ui-canvas-alt:#eef4f1;
  --ui-surface:#ffffff;
  --ui-surface-soft:#f2f6f4;
  --ui-surface-elevated:#ffffff;
  --ui-heading:#132033;
  --ui-text:#334155;
  --ui-muted:#5c6978;
  --ui-subtle:#64748b;
  --ui-link:#0b6b3a;
  --ui-link-hover:#084d30;
  --ui-line:#dbe5e0;
  --ui-line-strong:#c8d7d0;
  --ui-green:#083d2b;
  --ui-green-2:#0b6b3a;
  --ui-gold:#c9a227;
  --ui-gold-readable:#8a6d12;
  --ui-shadow:0 16px 38px -30px rgba(15,23,42,.5);
  --ui-radius:14px;
}

html.dark {
  color-scheme: dark;
  --ui-canvas:#0b1220;
  --ui-canvas-alt:#0f172a;
  --ui-surface:#111827;
  --ui-surface-soft:#162131;
  --ui-surface-elevated:#1b2737;
  --ui-heading:#f8fafc;
  --ui-text:#dbe5ee;
  --ui-muted:#aebdca;
  --ui-subtle:#94a3b8;
  --ui-link:#8ed2b5;
  --ui-link-hover:#b7e7d2;
  --ui-line:#2d3a4c;
  --ui-line-strong:#3c4c60;
  --ui-gold-readable:#f3d56a;
  --ui-shadow:0 18px 45px -30px rgba(0,0,0,.76);
}

html, body {
  background:var(--ui-canvas) !important;
  color:var(--ui-text) !important;
}

body {
  font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  font-size:1rem;
  line-height:1.6;
  text-rendering:optimizeLegibility;
  -webkit-font-smoothing:antialiased;
}

/* The legacy layer forced main to white with !important. This rule is authoritative. */
body > div.grid.min-h-screen > main,
main {
  background:linear-gradient(145deg,var(--ui-surface) 0%,var(--ui-canvas) 100%) !important;
  color:var(--ui-text) !important;
}
html.dark body > div.grid.min-h-screen > main,
html.dark main {
  background:linear-gradient(145deg,#0f172a 0%,#0b1220 100%) !important;
  color:var(--ui-text) !important;
}

#app {
  color:var(--ui-text);
  font-size:1rem;
  line-height:1.65;
}

/* ------------------------- Typography ------------------------- */
#app .portal-profile-name {
  margin:.1rem 0 0 !important;
  color:var(--ui-heading) !important;
  font-size:clamp(2rem,3vw,2.35rem) !important;
  font-weight:700 !important;
  line-height:1.12 !important;
  letter-spacing:-.035em !important;
  text-align:left !important;
}

#app .portal-page-title {
  position:relative;
  margin:0 0 1.6rem !important;
  padding:0 0 .78rem !important;
  color:var(--ui-heading) !important;
  font-size:clamp(1.85rem,2.6vw,2.15rem) !important;
  font-weight:700 !important;
  line-height:1.15 !important;
  letter-spacing:-.03em !important;
  text-align:left !important;
}
#app .portal-page-title::after {
  content:"";
  position:absolute;
  left:0;
  bottom:0;
  width:3rem;
  height:3px;
  border-radius:999px;
  background:linear-gradient(90deg,var(--ui-gold),#e4c64f);
}

#app .portal-page-intro {
  max-width:72ch !important;
  margin-top:-.55rem !important;
  margin-bottom:1.75rem !important;
  color:var(--ui-text) !important;
  font-size:.985rem !important;
  line-height:1.72 !important;
  text-align:left !important;
}

#app .portal-section-heading {
  margin-top:0 !important;
  color:var(--ui-heading) !important;
  font-size:clamp(1.28rem,1.8vw,1.5rem) !important;
  font-weight:700 !important;
  line-height:1.25 !important;
  letter-spacing:-.018em !important;
  text-align:left !important;
}

#app .portal-card-title {
  color:var(--ui-heading) !important;
  font-size:1rem !important;
  font-weight:700 !important;
  line-height:1.35 !important;
  letter-spacing:-.01em !important;
  text-align:left !important;
}

#app h1,
#app h2,
#app h3,
#app h4,
#app h5,
#app h6,
#app strong,
#app dt {
  color:var(--ui-heading) !important;
}
#app h2:not(.portal-profile-name):not(.portal-page-title) {
  font-size:1.55rem !important;
  line-height:1.22 !important;
  font-weight:700 !important;
  letter-spacing:-.02em;
}
#app h3:not(.portal-section-heading):not(.portal-card-title) {
  font-size:1.2rem !important;
  line-height:1.3 !important;
  font-weight:700 !important;
}
#app h4:not(.portal-card-title) {
  font-size:1.02rem !important;
  line-height:1.35 !important;
  font-weight:700 !important;
}

#app p,
#app li,
#app dd,
#app td,
#app label {
  color:var(--ui-text) !important;
}
#app p,
#app li,
#app dd {
  line-height:1.65;
}

/* Normalize legacy Tailwind text utilities by semantic intent. */
#app [class~="text-slate-900"],
#app [class~="text-slate-800"] { color:var(--ui-heading) !important; }
#app [class~="text-slate-700"],
#app [class~="text-slate-600"] { color:var(--ui-text) !important; }
#app [class~="text-slate-500"],
#app [class~="text-slate-400"] { color:var(--ui-muted) !important; }
#app [class~="text-primary-800"] { color:var(--ui-heading) !important; }

#app .text-xs { font-size:.78rem !important; line-height:1.45 !important; }
#app .text-sm { font-size:.875rem !important; line-height:1.5 !important; }
#app .portal-meta,
#pubsCount { color:var(--ui-muted) !important; font-size:.875rem !important; }

#app a:not(.social-icon):not([class*="bg-"]) {
  color:var(--ui-link);
  text-decoration-thickness:.06em;
  text-underline-offset:.17em;
}
#app a:not(.social-icon):not([class*="bg-"]):hover { color:var(--ui-link-hover); }

/* ------------------------- Surfaces ------------------------- */
#positionsList > *,
#educationList > *,
#upcomingEvents > *,
#pastEvents > *,
#pubsContainer > *,
#projectsGrid > *,
#episodesGrid > *,
#postsList > *,
#latestPost > *,
#contactCards > *,
#moreSections .timeline-card,
#app .portal-card {
  background:var(--ui-surface) !important;
  border-color:var(--ui-line) !important;
  color:var(--ui-text) !important;
  box-shadow:var(--ui-shadow) !important;
}

#app [class~="bg-white"] { background-color:var(--ui-surface) !important; }
#app [class~="bg-slate-50"] { background-color:var(--ui-surface-soft) !important; }
html.dark #app [class~="bg-slate-800"],
html.dark #app [class~="dark:bg-slate-800"],
html.dark #app [class~="dark:bg-slate-900"] { background-color:var(--ui-surface) !important; }
html.dark #app [class~="bg-slate-900"],
html.dark #app [class~="dark:bg-slate-950"] { background-color:var(--ui-canvas-alt) !important; }

#app [class~="border-slate-100"],
#app [class~="border-slate-200"],
#app [class~="border-slate-300"],
#app [class~="border-slate-700"] { border-color:var(--ui-line) !important; }

/* ------------------------- Forms ------------------------- */
#app input,
#app select,
#app textarea,
.search-input {
  background:var(--ui-surface) !important;
  color:var(--ui-heading) !important;
  border-color:var(--ui-line-strong) !important;
  min-height:2.75rem;
}
#app input::placeholder,
#app textarea::placeholder,
.search-input::placeholder { color:var(--ui-subtle) !important; opacity:1; }
#app input:focus,
#app select:focus,
#app textarea:focus,
.search-input:focus {
  border-color:#4c9478 !important;
  box-shadow:0 0 0 3px rgba(76,148,120,.18) !important;
  outline:none !important;
}
html.dark #app input,
html.dark #app select,
html.dark #app textarea,
html.dark .search-input {
  background:var(--ui-surface-elevated) !important;
  color:var(--ui-heading) !important;
  border-color:var(--ui-line-strong) !important;
}
html.dark #app select option { background:var(--ui-surface); color:var(--ui-heading); }

/* ------------------------- Global search ------------------------- */
.global-search-dialog { color:var(--ui-text); }
.search-panel {
  background:var(--ui-surface) !important;
  color:var(--ui-text) !important;
  border:1px solid var(--ui-line) !important;
}
.search-head label { color:var(--ui-heading) !important; }
.search-close {
  background:var(--ui-surface-soft) !important;
  color:var(--ui-heading) !important;
  border-color:var(--ui-line) !important;
}
.search-results { border-color:var(--ui-line) !important; }
.search-result { border-color:var(--ui-line) !important; color:var(--ui-text) !important; }
.search-result:hover { background:var(--ui-surface-soft) !important; }
.search-result strong { color:var(--ui-heading) !important; }
.search-result > span:last-child,
.search-help,
.search-empty { color:var(--ui-muted) !important; }
.search-section {
  background:color-mix(in srgb,var(--ui-link) 12%,transparent) !important;
  color:var(--ui-link) !important;
}
html.dark .global-search-dialog::backdrop { background:rgba(2,6,23,.72); }

/* ------------------------- Floating panels ------------------------- */
#cookieBanner,
#socialPanel {
  background:var(--ui-surface) !important;
  border-color:var(--ui-line) !important;
  color:var(--ui-text) !important;
}
#cookieBanner h3,
#socialPanel h4 { color:var(--ui-heading) !important; }
#cookieBanner p,
#socialPanel p,
#socialPanel span:not([class*="text-"]) { color:var(--ui-muted); }
html.dark #socialPanel [class*="from-blue-"],
html.dark #socialPanel [class*="from-slate-"],
html.dark #socialPanel [class*="from-green-"],
html.dark #socialPanel [class*="from-purple-"],
html.dark #socialPanel [class*="from-teal-"] {
  background:var(--ui-surface-elevated) !important;
}

/* ------------------------- Calendar ------------------------- */
.fc {
  --fc-page-bg-color:var(--ui-surface);
  --fc-neutral-bg-color:var(--ui-surface-soft);
  --fc-neutral-text-color:var(--ui-muted);
  --fc-border-color:var(--ui-line);
  color:var(--ui-text) !important;
}
.fc .fc-toolbar-title { color:var(--ui-heading) !important; font-weight:700; }
.fc .fc-col-header-cell-cushion,
.fc .fc-daygrid-day-number { color:var(--ui-text) !important; }
.fc .fc-button {
  border-color:var(--ui-line-strong) !important;
  background:var(--ui-surface-elevated) !important;
  color:var(--ui-heading) !important;
}
.fc .fc-button-primary:not(:disabled).fc-button-active,
.fc .fc-button-primary:not(:disabled):active {
  background:var(--ui-green-2) !important;
  border-color:var(--ui-green-2) !important;
  color:#fff !important;
}

/* ------------------------- Sidebar ------------------------- */
#sidebar { background:#083d2b !important; color:#fff !important; }
#sidebar h1 { color:#fff !important; }
#sidebar [data-i18n="role"] { color:#f0cf58 !important; font-weight:600 !important; }
#sidebar [data-i18n="university"] { color:#d8e5df !important; }
#sidebar .menu-link { color:#f8faf9 !important; }
#sidebar .menu-link svg,
#sidebar .menu-link i { color:#efca43 !important; }
#sidebar .active-menu-item {
  background:linear-gradient(90deg,rgba(201,162,39,.22),rgba(201,162,39,.10)) !important;
  box-shadow:inset 3px 0 0 #e1be38 !important;
}
#sidebar .text-white\/50,
#sidebar .text-white\/70 { color:#c8d8d0 !important; }

/* Home keeps its original profile composition, but with semantic colors. */
#app > section > header:first-child p {
  color:var(--ui-text) !important;
  line-height:1.7 !important;
}
#app > section > header:first-child hr { border-color:var(--ui-line) !important; }

/* ------------------------- Demo and generated detail pages ------------------------- */
.template-demo-notice {
  background:color-mix(in srgb,var(--ui-surface) 95%,transparent) !important;
  color:var(--ui-text) !important;
  border-color:var(--ui-line) !important;
}
.detail-page {
  min-height:100vh;
  background:linear-gradient(145deg,var(--ui-canvas),var(--ui-canvas-alt)) !important;
  color:var(--ui-text) !important;
}
.detail-title { color:var(--ui-heading) !important; line-height:1.12; }
.detail-summary { color:var(--ui-text) !important; line-height:1.7; }
.detail-card { background:var(--ui-surface) !important; border-color:var(--ui-line) !important; }
.detail-grid dt { color:var(--ui-muted) !important; }
.detail-grid dd { color:var(--ui-heading) !important; }
.detail-back { color:var(--ui-link) !important; }
.detail-placeholder { background:var(--ui-surface-soft) !important; border-color:var(--ui-line-strong) !important; color:var(--ui-muted) !important; }

/* ------------------------- Mobile ------------------------- */
@media (max-width:767px) {
  #app { font-size:.975rem; line-height:1.62; }
  #app .portal-profile-name {
    font-size:clamp(1.8rem,8vw,2.15rem) !important;
    text-align:center !important;
  }
  #app .portal-page-title {
    font-size:clamp(1.7rem,7vw,1.95rem) !important;
    margin-bottom:1.35rem !important;
  }
  #app .portal-page-intro {
    margin-top:-.35rem !important;
    font-size:.95rem !important;
    line-height:1.65 !important;
  }
  #app .portal-section-heading { font-size:1.28rem !important; }
}

@media (prefers-reduced-motion:reduce) {
  *,*::before,*::after {
    scroll-behavior:auto !important;
    animation-duration:.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.01ms !important;
  }
}


/* ---- contrast-contract.css ---- */
/* Final foreground-color contract.
 * Loaded after theme-system.css. It protects intentional text colors from
 * semantic typography rules while keeping headings and neutral copy coherent.
 */

/* Neutral text follows the active theme. */
#app .text-slate-900,
#app .text-slate-800 { color:var(--ui-heading) !important; }
#app .text-slate-700,
#app .text-slate-600 { color:var(--ui-text) !important; }
#app .text-slate-500,
#app .text-slate-400 { color:var(--ui-muted) !important; }

html.dark #app .dark\:text-slate-100 { color:#f1f5f9 !important; }
html.dark #app .dark\:text-slate-200 { color:#e2e8f0 !important; }
html.dark #app .dark\:text-slate-300 { color:#cbd5e1 !important; }
html.dark #app .dark\:text-slate-400 { color:#94a3b8 !important; }

/* Brand and categorical colors retain readable contrast in light mode. */
#app .text-primary-600 { color:#0a5f35 !important; }
#app .text-primary-700 { color:#094f2c !important; }
#app .text-primary-800 { color:#083d2b !important; }
#app .text-primary-900 { color:#062b1c !important; }
#app .text-accent-600 { color:#7a5a0a !important; }
#app .text-accent-900 { color:#513d0e !important; }
#app .text-blue-600 { color:#1d4ed8 !important; }
#app .text-red-600 { color:#b91c1c !important; }
#app .text-green-600 { color:#15803d !important; }
#app .text-purple-600 { color:#7e22ce !important; }
#app .text-teal-600 { color:#0f766e !important; }

/* Explicit dark variants are restored after semantic rules. */
html.dark #app .dark\:text-white { color:#fff !important; }
html.dark #app .dark\:text-primary-100 { color:#d6efe2 !important; }
html.dark #app .dark\:text-accent-200 { color:#ffe28a !important; }
html.dark #app .dark\:text-accent-300 { color:#ffd452 !important; }
html.dark #app .dark\:text-accent-400 { color:#ffca2e !important; }
html.dark #app .dark\:text-blue-300 { color:#93c5fd !important; }
html.dark #app .dark\:text-red-300 { color:#fca5a5 !important; }
html.dark #app .dark\:text-green-300 { color:#86efac !important; }
html.dark #app .dark\:text-purple-300 { color:#d8b4fe !important; }
html.dark #app .dark\:text-teal-300 { color:#5eead4 !important; }

/* Semantic headings stay consistent even when old templates carry color utilities. */
#app .portal-profile-name,
#app .portal-page-title,
#app .portal-section-heading,
#app .portal-card-title {
  color:var(--ui-heading) !important;
}

/* White text on dark/brand surfaces must never be neutralized by p/strong/meta rules. */
#app .text-white { color:#fff !important; }
#app .text-white p,
#app .text-white li,
#app .text-white span,
#app .text-white strong,
#app .text-white h1,
#app .text-white h2,
#app .text-white h3,
#app .text-white h4,
#app .text-white h5,
#app .text-white h6 { color:inherit !important; }

/* Small badges/chips keep their designed foreground instead of becoming metadata gray. */
#app .portal-meta.text-white { color:#fff !important; }
#app .portal-meta.text-primary-600 { color:#0a5f35 !important; }
#app .portal-meta.text-primary-700 { color:#094f2c !important; }
#app .portal-meta.text-primary-800 { color:#083d2b !important; }
#app .portal-meta.text-primary-900 { color:#062b1c !important; }
#app .portal-meta.text-accent-600 { color:#7a5a0a !important; }
#app .portal-meta.text-accent-900 { color:#513d0e !important; }
#app .portal-meta.text-blue-600 { color:#1d4ed8 !important; }
#app .portal-meta.text-red-600 { color:#b91c1c !important; }
#app .portal-meta.text-green-600 { color:#15803d !important; }
#app .portal-meta.text-purple-600 { color:#7e22ce !important; }
#app .portal-meta.text-teal-600 { color:#0f766e !important; }
html.dark #app .portal-meta.dark\:text-primary-100 { color:#d6efe2 !important; }
html.dark #app .portal-meta.dark\:text-accent-200 { color:#ffe28a !important; }
html.dark #app .portal-meta.dark\:text-accent-300 { color:#ffd452 !important; }
html.dark #app .portal-meta.dark\:text-blue-300 { color:#93c5fd !important; }
html.dark #app .portal-meta.dark\:text-red-300 { color:#fca5a5 !important; }
html.dark #app .portal-meta.dark\:text-green-300 { color:#86efac !important; }
html.dark #app .portal-meta.dark\:text-purple-300 { color:#d8b4fe !important; }
html.dark #app .portal-meta.dark\:text-teal-300 { color:#5eead4 !important; }

/* Brand buttons: white on green, dark ink on gold. */
#app [class*="bg-primary-600"].text-white,
#app [class*="bg-primary-700"].text-white,
#app [class*="bg-primary-800"].text-white,
#app [class*="bg-primary-900"].text-white { color:#fff !important; }

#app [class*="bg-accent-"][class*="text-slate-900"],
#sidebar [class*="bg-accent-"][class*="text-slate-900"] { color:#172012 !important; }

/* Preserve icon/button foreground inherited from the control. */
#app button.text-white *,
#app a.text-white *,
#sidebar button.text-white *,
#sidebar a.text-white * { color:inherit !important; }

/* Sidebar colors are theme-independent because the sidebar is always dark green. */
#sidebar { color:#fff !important; }
#sidebar .text-white { color:#fff !important; }
#sidebar .text-white\/70 { color:#d8e5df !important; }
#sidebar .text-white\/50 { color:#b8cbc2 !important; }
#sidebar .text-accent-300 { color:#ffd452 !important; }
#sidebar .text-accent-400 { color:#ffca2e !important; }

/* Search/results use the semantic palette, not stale utility colors. */
.search-head label,
.search-result strong { color:var(--ui-heading) !important; }
.search-result > span:last-child,
.search-help,
.search-empty { color:var(--ui-muted) !important; }

/* Form labels and placeholder contrast. */
#app label { color:var(--ui-heading) !important; }
#app input::placeholder,
#app textarea::placeholder,
.search-input::placeholder { color:var(--ui-subtle) !important; opacity:1; }

/* Disabled controls remain visibly disabled but legible in both themes. */
#app button:disabled,
#app [aria-disabled="true"] { color:var(--ui-muted) !important; }
html.dark #app button:disabled,
html.dark #app [aria-disabled="true"] { color:#94a3b8 !important; }


/* ---- product-v3.css ---- */
/* Academic Professional Portal 3.0 — product components.
 * This file contains only semantic components introduced in Phase 3.
 * It is bundled into portal.css during production build.
 */

.portal-home-summary {
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:.85rem;
  margin:1.75rem 0 2rem;
}
.portal-metric {
  min-width:0;
  padding:1rem 1.05rem;
  border:1px solid var(--ui-line);
  border-radius:var(--ui-radius);
  background:var(--ui-surface);
  box-shadow:var(--ui-shadow);
}
.portal-metric strong {
  display:block;
  margin-bottom:.18rem;
  color:var(--ui-heading) !important;
  font-size:1.55rem;
  line-height:1;
  font-variant-numeric:tabular-nums;
}
.portal-metric span {
  display:block;
  color:var(--ui-muted);
  font-size:.78rem;
  font-weight:650;
  line-height:1.35;
  letter-spacing:.02em;
}

.portal-home-actions {
  display:flex;
  flex-wrap:wrap;
  gap:.7rem;
  margin:-.7rem 0 2rem;
}
.portal-action {
  display:inline-flex;
  min-height:2.65rem;
  align-items:center;
  justify-content:center;
  gap:.45rem;
  padding:.65rem .9rem;
  border:1px solid var(--ui-line-strong);
  border-radius:.72rem;
  background:var(--ui-surface);
  color:var(--ui-heading) !important;
  font-size:.86rem;
  font-weight:700;
  text-decoration:none !important;
  box-shadow:0 8px 22px -20px rgba(15,23,42,.7);
  transition:transform .16s ease,border-color .16s ease,background .16s ease;
}
.portal-action:hover {
  transform:translateY(-1px);
  border-color:color-mix(in srgb,var(--ui-link) 48%,var(--ui-line));
  background:var(--ui-surface-soft);
}
.portal-action.primary {
  border-color:var(--ui-green-2);
  background:var(--ui-green-2);
  color:#fff !important;
}
.portal-action.primary:hover { background:var(--ui-green); }

.portal-empty-state {
  display:grid;
  place-items:center;
  min-height:10rem;
  padding:2rem 1rem;
  border:1px dashed var(--ui-line-strong);
  border-radius:var(--ui-radius);
  background:var(--ui-surface-soft);
  text-align:center;
}
.portal-empty-state__icon {
  display:grid;
  width:2.75rem;
  height:2.75rem;
  place-items:center;
  margin-bottom:.65rem;
  border-radius:999px;
  background:color-mix(in srgb,var(--ui-link) 10%,var(--ui-surface));
  color:var(--ui-link);
  font-size:1.15rem;
}
.portal-empty-state strong {
  display:block;
  color:var(--ui-heading) !important;
  font-size:.95rem;
}
.portal-empty-state p {
  max-width:42ch;
  margin:.25rem 0 0;
  color:var(--ui-muted) !important;
  font-size:.84rem;
  line-height:1.55;
}

.portal-card-tools {
  display:flex;
  flex-wrap:wrap;
  gap:.45rem;
  margin-top:.8rem;
  padding-top:.72rem;
  border-top:1px solid var(--ui-line);
}
.portal-card-tool {
  display:inline-flex;
  align-items:center;
  gap:.35rem;
  min-height:2rem;
  padding:.34rem .58rem;
  border:1px solid var(--ui-line);
  border-radius:.55rem;
  background:var(--ui-surface-soft);
  color:var(--ui-link) !important;
  font-size:.75rem;
  font-weight:700;
  cursor:pointer;
}
.portal-card-tool:hover { border-color:var(--ui-line-strong); background:var(--ui-surface); }
.portal-card-tool[data-state="done"] { color:#14733e !important; }
html.dark .portal-card-tool[data-state="done"] { color:#9de0bb !important; }

.portal-inline-status {
  display:inline-flex;
  align-items:center;
  gap:.38rem;
  padding:.3rem .55rem;
  border:1px solid var(--ui-line);
  border-radius:999px;
  background:var(--ui-surface-soft);
  color:var(--ui-muted);
  font-size:.74rem;
  font-weight:700;
}
.portal-inline-status::before {
  content:"";
  width:.42rem;
  height:.42rem;
  border-radius:999px;
  background:#16a34a;
}

/* Gallery lightbox is a true viewport modal.
 * AOS keeps transforms on animated sections; without this reset, a fixed
 * descendant is positioned relative to the gallery section instead of the viewport.
 */
#app > section:has(#uabcLb) {
  transform:none !important;
}
.uabc-lightbox {
  inset:0 !important;
  width:100vw !important;
  height:100dvh !important;
  max-width:none !important;
  max-height:none !important;
  padding:clamp(.75rem,2vw,1.5rem) !important;
  align-items:center !important;
  justify-content:center !important;
  z-index:1000 !important;
}
.uabc-lb-back {
  background:rgba(2,6,23,.76) !important;
  backdrop-filter:blur(7px) saturate(.85);
}
.uabc-lb-dialog {
  width:min(70rem,calc(100vw - 2rem)) !important;
  max-width:calc(100vw - 2rem) !important;
  max-height:calc(100dvh - 2rem) !important;
  margin:auto !important;
  border:1px solid rgba(148,163,184,.24);
  background:#0b1220 !important;
  color:#e5edf6 !important;
  box-shadow:0 32px 90px rgba(0,0,0,.52) !important;
}
.uabc-lb-head {
  flex:0 0 auto;
  min-height:4.25rem;
  background:#0f172a !important;
  border-bottom-color:#334155 !important;
}
.uabc-lb-head h3,
#uabcLbTitle {
  color:#f8fafc !important;
  text-shadow:none !important;
}
.uabc-lb-head .uabc-icon {
  flex:0 0 auto;
  color:#f8fafc !important;
  background:#162033 !important;
  border-color:#475569 !important;
}
.uabc-lb-head .uabc-icon:hover,
.uabc-lb-head .uabc-icon:focus-visible {
  background:#c9a227 !important;
  border-color:#c9a227 !important;
  color:#111827 !important;
}
.uabc-view {
  flex:1 1 auto;
  min-height:0 !important;
  max-height:min(68dvh,42rem);
  background:#05080e !important;
}
.uabc-view img {
  background:#05080e !important;
}
.uabc-thumbs {
  flex:0 0 auto;
  max-height:7.5rem;
  scrollbar-width:none;
}
.uabc-thumbs::-webkit-scrollbar { display:none; }
.uabc-nav {
  box-shadow:0 8px 24px rgba(0,0,0,.28);
}

/* Consistent interactive focus treatment. */
#app :where(a,button,input,select,textarea):focus-visible,
#sidebar :where(a,button):focus-visible,
.global-search-dialog :where(a,button,input):focus-visible,
.uabc-lightbox :where(button,img[tabindex]):focus-visible {
  outline:3px solid color-mix(in srgb,var(--ui-link) 40%,transparent) !important;
  outline-offset:2px !important;
}

/* Normalize native disabled states without losing text contrast. */
#app :where(button,input,select,textarea):disabled {
  opacity:.62;
  cursor:not-allowed;
}

/* Reduced-motion remains first-class. */
@media (prefers-reduced-motion:reduce) {
  .portal-action,
  .portal-card-tool { transition:none !important; transform:none !important; }
}

@media (max-width:900px) {
  .portal-home-summary { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width:767px) {
  .uabc-lightbox { padding:.5rem !important; }
  .uabc-lb-dialog {
    width:calc(100vw - 1rem) !important;
    max-width:calc(100vw - 1rem) !important;
    max-height:calc(100dvh - 1rem) !important;
    border-radius:1rem !important;
  }
  .uabc-lb-head {
    min-height:3.5rem;
    padding:.65rem .8rem !important;
  }
  .uabc-lb-head h3,
  #uabcLbTitle { font-size:1rem !important; }
  .uabc-icon { width:2.35rem !important; height:2.35rem !important; }
  .uabc-view { max-height:calc(100dvh - 10.5rem); }
  .uabc-nav { width:2.5rem !important; height:2.5rem !important; }
  .uabc-nav.prev { left:.65rem !important; }
  .uabc-nav.next { right:.65rem !important; }
  .uabc-thumbs { padding:.65rem !important; gap:.55rem !important; }
  .uabc-thumbs img { width:5.25rem !important; height:3.5rem !important; }
}
@media (max-width:520px) {
  .portal-home-summary { grid-template-columns:1fr 1fr; gap:.65rem; }
  .portal-metric { padding:.85rem; }
  .portal-metric strong { font-size:1.3rem; }
  .portal-home-actions { display:grid; grid-template-columns:1fr; }
  .portal-action { width:100%; }
}

