@epfl-sti/poesis 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/poesis.js CHANGED
@@ -1,23 +1,23 @@
1
1
  (function(){try{if(typeof document<`u`){var e=document.createElement(`style`);e.appendChild(document.createTextNode(`/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */
2
- @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:""}}}@layer theme{:root,:host{--font-sans:"Inter", ui-sans-serif, system-ui, -apple-system, sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-600:oklch(57.7% .245 27.325);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-md:28rem;--container-xl:36rem;--container-6xl:72rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wide:.025em;--tracking-wider:.05em;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--shadow-sm:0 1px 2px #0000000f;--shadow-md:0 2px 8px #00000014;--shadow-lg:0 4px 16px #0000001a;--shadow-xl:0 8px 32px #0000001f;--ease-out:cubic-bezier(0, 0, .2, 1);--animate-spin:spin 1s linear infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-epfl-red:red;--color-epfl-red-dark:#b51f1f;--color-epfl-leman:#00a79f;--color-epfl-canard:#007480;--color-epfl-canard-dark:#004248;--color-primary:var(--action-primary);--color-primary-hover:var(--action-primary-hover);--color-bg-primary:var(--bg-primary);--color-bg-secondary:var(--bg-secondary);--color-bg-tertiary:var(--bg-tertiary);--color-border:var(--border-default);--color-border-strong:var(--border-strong);--color-text-primary:var(--text-primary);--color-text-secondary:var(--text-secondary);--color-text-muted:var(--text-muted);--color-success:var(--semantic-success);--color-success-bg:var(--semantic-success-bg);--color-warning:var(--semantic-warning);--color-warning-bg:var(--semantic-warning-bg);--color-error:var(--semantic-error);--color-error-bg:var(--semantic-error-bg);--color-info:var(--semantic-info);--color-info-bg:var(--semantic-info-bg);--radius-full:9999px;--spacing-xs:4px;--spacing-sm:8px;--spacing-md:16px;--spacing-lg:24px;--spacing-xl:32px;--spacing-2xl:48px;--text-h1:2rem;--text-h1--line-height:1.2;--text-h2:1.5rem;--text-h2--line-height:1.3;--text-h3:1.25rem;--text-h3--line-height:1.4;--text-body:.9375rem;--text-body--line-height:1.5;--text-small:.8125rem;--text-small--line-height:1.5;--text-caption:.75rem;--text-caption--line-height:1.4}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}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;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:calc(var(--spacing) * 0)}.inset-x-0{inset-inline:calc(var(--spacing) * 0)}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.top-0{top:calc(var(--spacing) * 0)}.right-0{right:calc(var(--spacing) * 0)}.right-lg{right:var(--spacing-lg)}.bottom-lg{bottom:var(--spacing-lg)}.left-0{left:calc(var(--spacing) * 0)}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.m-0{margin:calc(var(--spacing) * 0)}.mx-auto{margin-inline:auto}.my-1{margin-block:calc(var(--spacing) * 1)}.mt-0\\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-auto{margin-top:auto}.mt-lg{margin-top:var(--spacing-lg)}.mt-md{margin-top:var(--spacing-md)}.mt-sm{margin-top:var(--spacing-sm)}.mt-xs{margin-top:var(--spacing-xs)}.mr-lg{margin-right:var(--spacing-lg)}.mr-sm{margin-right:var(--spacing-sm)}.-mb-px{margin-bottom:-1px}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-lg{margin-bottom:var(--spacing-lg)}.mb-md{margin-bottom:var(--spacing-md)}.mb-sm{margin-bottom:var(--spacing-sm)}.mb-xs{margin-bottom:var(--spacing-xs)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-2\\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-11{width:calc(var(--spacing) * 11);height:calc(var(--spacing) * 11)}.size-12{width:calc(var(--spacing) * 12);height:calc(var(--spacing) * 12)}.size-14{width:calc(var(--spacing) * 14);height:calc(var(--spacing) * 14)}.size-16{width:calc(var(--spacing) * 16);height:calc(var(--spacing) * 16)}.size-20{width:calc(var(--spacing) * 20);height:calc(var(--spacing) * 20)}.size-full{width:100%;height:100%}.h-0\\.5{height:calc(var(--spacing) * .5)}.h-1\\.5{height:calc(var(--spacing) * 1.5)}.h-2\\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-4{height:calc(var(--spacing) * 4)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-11{height:calc(var(--spacing) * 11)}.h-12{height:calc(var(--spacing) * 12)}.h-14{height:calc(var(--spacing) * 14)}.h-20{height:calc(var(--spacing) * 20)}.h-64{height:calc(var(--spacing) * 64)}.h-96{height:calc(var(--spacing) * 96)}.h-\\[30px\\]{height:30px}.h-full{height:100%}.h-screen{height:100vh}.min-h-screen{min-height:100vh}.w-3{width:calc(var(--spacing) * 3)}.w-4{width:calc(var(--spacing) * 4)}.w-7{width:calc(var(--spacing) * 7)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-11{width:calc(var(--spacing) * 11)}.w-16{width:calc(var(--spacing) * 16)}.w-40{width:calc(var(--spacing) * 40)}.w-48{width:calc(var(--spacing) * 48)}.w-64{width:calc(var(--spacing) * 64)}.w-72{width:calc(var(--spacing) * 72)}.w-80{width:calc(var(--spacing) * 80)}.w-96{width:calc(var(--spacing) * 96)}.w-\\[4px\\]{width:4px}.w-\\[8px\\]{width:8px}.w-\\[16px\\]{width:16px}.w-\\[24px\\]{width:24px}.w-\\[32px\\]{width:32px}.w-\\[48px\\]{width:48px}.w-auto{width:auto}.w-full{width:100%}.max-w-6xl{max-width:var(--container-6xl)}.max-w-\\[24rem\\]{max-width:24rem}.max-w-\\[32rem\\]{max-width:32rem}.max-w-\\[42rem\\]{max-width:42rem}.max-w-\\[600px\\]{max-width:600px}.max-w-\\[var\\(--container-6xl\\)\\]{max-width:var(--container-6xl)}.max-w-\\[var\\(--container-md\\)\\]{max-width:var(--container-md)}.max-w-\\[var\\(--container-xl\\)\\]{max-width:var(--container-xl)}.max-w-\\[var\\(--container-xs\\)\\]{max-width:var(--container-xs)}.max-w-full{max-width:100%}.max-w-md{max-width:var(--spacing-md)}.max-w-screen{max-width:100vw}.max-w-sm{max-width:var(--spacing-sm)}.max-w-xl{max-width:var(--spacing-xl)}.max-w-xs{max-width:var(--spacing-xs)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-7{min-width:calc(var(--spacing) * 7)}.min-w-9{min-width:calc(var(--spacing) * 9)}.min-w-11{min-width:calc(var(--spacing) * 11)}.min-w-\\[10rem\\]{min-width:10rem}.min-w-\\[280px\\]{min-width:280px}.min-w-\\[500px\\]{min-width:500px}.flex-1{flex:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.-translate-x-full{--tw-translate-x:-100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-0{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.-rotate-90{rotate:-90deg}.rotate-45{rotate:45deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-dialog-in{animation:.2s ease-out dialog-in}.animate-floating-in{animation:.15s ease-out floating-in}.animate-slide-in{animation:.25s ease-out slide-in}.animate-spin{animation:var(--animate-spin)}.cursor-help{cursor:help}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize{resize:both}.resize-none{resize:none}.resize-y{resize:vertical}.list-none{list-style-type:none}.appearance-none{appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2xl{gap:var(--spacing-2xl)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-lg{gap:var(--spacing-lg)}.gap-md{gap:var(--spacing-md)}.gap-px{gap:1px}.gap-sm{gap:var(--spacing-sm)}.gap-xl{gap:var(--spacing-xl)}.gap-xs{gap:var(--spacing-xs)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-border>:not(:last-child)){border-color:var(--color-border)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.\\!rounded-lg{border-radius:var(--radius-lg)!important}.\\!rounded-md{border-radius:var(--radius-md)!important}.\\!rounded-sm{border-radius:var(--radius-sm)!important}.rounded{border-radius:.25rem}.rounded-full{border-radius:var(--radius-full)}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.\\!border{border-style:var(--tw-border-style)!important;border-width:1px!important}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-r-2{border-right-style:var(--tw-border-style);border-right-width:2px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-none{--tw-border-style:none;border-style:none}.\\!border-border{border-color:var(--color-border)!important}.\\!border-epfl-canard{border-color:var(--color-epfl-canard)!important}.\\!border-error{border-color:var(--color-error)!important}.\\!border-primary{border-color:var(--color-primary)!important}.border-border{border-color:var(--color-border)}.border-border-strong{border-color:var(--color-border-strong)}.border-error,.border-error\\/30{border-color:var(--color-error)}@supports (color:color-mix(in lab, red, red)){.border-error\\/30{border-color:color-mix(in oklab, var(--color-error) 30%, transparent)}}.border-info\\/30{border-color:var(--color-info)}@supports (color:color-mix(in lab, red, red)){.border-info\\/30{border-color:color-mix(in oklab, var(--color-info) 30%, transparent)}}.border-primary{border-color:var(--color-primary)}.border-red-600{border-color:var(--color-red-600)}.border-success\\/30{border-color:var(--color-success)}@supports (color:color-mix(in lab, red, red)){.border-success\\/30{border-color:color-mix(in oklab, var(--color-success) 30%, transparent)}}.border-transparent{border-color:#0000}.border-warning\\/30{border-color:var(--color-warning)}@supports (color:color-mix(in lab, red, red)){.border-warning\\/30{border-color:color-mix(in oklab, var(--color-warning) 30%, transparent)}}.\\!bg-bg-tertiary{background-color:var(--color-bg-tertiary)!important}.\\!bg-epfl-canard{background-color:var(--color-epfl-canard)!important}.\\!bg-primary{background-color:var(--color-primary)!important}.bg-bg-primary{background-color:var(--color-bg-primary)}.bg-bg-secondary{background-color:var(--color-bg-secondary)}.bg-bg-tertiary,.bg-bg-tertiary\\/50{background-color:var(--color-bg-tertiary)}@supports (color:color-mix(in lab, red, red)){.bg-bg-tertiary\\/50{background-color:color-mix(in oklab, var(--color-bg-tertiary) 50%, transparent)}}.bg-black\\/40{background-color:#0006}@supports (color:color-mix(in lab, red, red)){.bg-black\\/40{background-color:color-mix(in oklab, var(--color-black) 40%, transparent)}}.bg-black\\/50{background-color:#00000080}@supports (color:color-mix(in lab, red, red)){.bg-black\\/50{background-color:color-mix(in oklab, var(--color-black) 50%, transparent)}}.bg-border{background-color:var(--color-border)}.bg-border-strong{background-color:var(--color-border-strong)}.bg-epfl-canard{background-color:var(--color-epfl-canard)}.bg-epfl-canard-dark{background-color:var(--color-epfl-canard-dark)}.bg-epfl-leman{background-color:var(--color-epfl-leman)}.bg-epfl-red{background-color:var(--color-epfl-red)}.bg-epfl-red-dark{background-color:var(--color-epfl-red-dark)}.bg-error{background-color:var(--color-error)}.bg-error-bg{background-color:var(--color-error-bg)}.bg-info{background-color:var(--color-info)}.bg-info-bg{background-color:var(--color-info-bg)}.bg-primary,.bg-primary\\/5{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\\/5{background-color:color-mix(in oklab, var(--color-primary) 5%, transparent)}}.bg-primary\\/10{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\\/10{background-color:color-mix(in oklab, var(--color-primary) 10%, transparent)}}.bg-success{background-color:var(--color-success)}.bg-success-bg{background-color:var(--color-success-bg)}.bg-text-muted{background-color:var(--color-text-muted)}.bg-text-primary{background-color:var(--color-text-primary)}.bg-transparent{background-color:#0000}.bg-warning{background-color:var(--color-warning)}.bg-warning-bg{background-color:var(--color-warning-bg)}.object-cover{object-fit:cover}.p-0{padding:calc(var(--spacing) * 0)}.p-0\\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:calc(var(--spacing) * 1)}.p-2{padding:calc(var(--spacing) * 2)}.p-2xl{padding:var(--spacing-2xl)}.p-16{padding:calc(var(--spacing) * 16)}.p-lg{padding:var(--spacing-lg)}.p-md{padding:var(--spacing-md)}.p-sm{padding:var(--spacing-sm)}.p-xl{padding:var(--spacing-xl)}.p-xs{padding:var(--spacing-xs)}.px-1\\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-lg{padding-inline:var(--spacing-lg)}.px-md{padding-inline:var(--spacing-md)}.px-sm{padding-inline:var(--spacing-sm)}.px-xs{padding-inline:var(--spacing-xs)}.py-0\\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\\.5{padding-block:calc(var(--spacing) * 2.5)}.py-2xl{padding-block:var(--spacing-2xl)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-3\\.5{padding-block:calc(var(--spacing) * 3.5)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-lg{padding-block:var(--spacing-lg)}.py-md{padding-block:var(--spacing-md)}.py-sm{padding-block:var(--spacing-sm)}.py-xl{padding-block:var(--spacing-xl)}.py-xs{padding-block:var(--spacing-xs)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-14{padding-top:calc(var(--spacing) * 14)}.pt-md{padding-top:var(--spacing-md)}.pt-sm{padding-top:var(--spacing-sm)}.pt-xl{padding-top:var(--spacing-xl)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pr-11{padding-right:calc(var(--spacing) * 11)}.pb-1{padding-bottom:calc(var(--spacing) * 1)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-6{padding-left:calc(var(--spacing) * 6)}.pl-8{padding-left:calc(var(--spacing) * 8)}.pl-10{padding-left:calc(var(--spacing) * 10)}.pl-11{padding-left:calc(var(--spacing) * 11)}.pl-14{padding-left:calc(var(--spacing) * 14)}.text-center{text-align:center}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.text-body{font-size:var(--text-body);line-height:var(--tw-leading,var(--text-body--line-height))}.text-caption{font-size:var(--text-caption);line-height:var(--tw-leading,var(--text-caption--line-height))}.text-h1{font-size:var(--text-h1);line-height:var(--tw-leading,var(--text-h1--line-height))}.text-h2{font-size:var(--text-h2);line-height:var(--tw-leading,var(--text-h2--line-height))}.text-h3{font-size:var(--text-h3);line-height:var(--tw-leading,var(--text-h3--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-small{font-size:var(--text-small);line-height:var(--tw-leading,var(--text-small--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-\\[1\\.2\\]{--tw-leading:1.2;line-height:1.2}.leading-\\[1\\.3\\]{--tw-leading:1.3;line-height:1.3}.leading-\\[1\\.4\\]{--tw-leading:1.4;line-height:1.4}.leading-\\[1\\.5\\]{--tw-leading:1.5;line-height:1.5}.leading-none{--tw-leading:1;line-height:1}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.whitespace-nowrap{white-space:nowrap}.\\!text-white{color:var(--color-white)!important}.text-bg-primary{color:var(--color-bg-primary)}.text-epfl-canard{color:var(--color-epfl-canard)}.text-epfl-leman{color:var(--color-epfl-leman)}.text-epfl-red{color:var(--color-epfl-red)}.text-error{color:var(--color-error)}.text-info{color:var(--color-info)}.text-primary{color:var(--color-primary)}.text-success{color:var(--color-success)}.text-text-muted{color:var(--color-text-muted)}.text-text-primary{color:var(--color-text-primary)}.text-text-secondary{color:var(--color-text-secondary)}.text-warning{color:var(--color-warning)}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.no-underline{text-decoration-line:none}.underline{text-decoration-line:underline}.decoration-dotted{text-decoration-style:dotted}.opacity-0{opacity:0}.opacity-25{opacity:.25}.opacity-30{opacity:.3}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.opacity-100{opacity:1}.\\!shadow-lg{--tw-shadow:0 4px 16px var(--tw-shadow-color,#0000001a)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}.\\!shadow-sm{--tw-shadow:0 1px 2px var(--tw-shadow-color,#0000000f)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}.shadow-lg{--tw-shadow:0 4px 16px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 2px 8px var(--tw-shadow-color,#00000014);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px var(--tw-shadow-color,#0000000f);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 8px 32px var(--tw-shadow-color,#0000001f);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.\\!ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}.\\!ring-epfl-canard{--tw-ring-color:var(--color-epfl-canard)!important}.\\!ring-primary{--tw-ring-color:var(--color-primary)!important}.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,)}.transition-\\[width\\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-none{transition-property:none}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.peer-checked\\:bg-primary:is(:where(.peer):checked~*){background-color:var(--color-primary)}.peer-focus-visible\\:ring-2:is(:where(.peer):focus-visible~*){--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.peer-focus-visible\\:ring-primary:is(:where(.peer):focus-visible~*){--tw-ring-color:var(--color-primary)}.peer-focus-visible\\:ring-offset-2:is(:where(.peer):focus-visible~*){--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.peer-focus-visible\\:ring-offset-bg-primary:is(:where(.peer):focus-visible~*){--tw-ring-offset-color:var(--color-bg-primary)}.peer-disabled\\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\\:opacity-50:is(:where(.peer):disabled~*){opacity:.5}.placeholder\\:text-text-muted::placeholder{color:var(--color-text-muted)}.after\\:absolute:after{content:var(--tw-content);position:absolute}.after\\:top-0\\.5:after{content:var(--tw-content);top:calc(var(--spacing) * .5)}.after\\:left-0\\.5:after{content:var(--tw-content);left:calc(var(--spacing) * .5)}.after\\:size-5:after{content:var(--tw-content);width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.after\\:rounded-full:after{content:var(--tw-content);border-radius:var(--radius-full)}.after\\:bg-white:after{content:var(--tw-content);background-color:var(--color-white)}.after\\:shadow-sm:after{content:var(--tw-content);--tw-shadow:0 1px 2px var(--tw-shadow-color,#0000000f);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.after\\:transition-transform:after{content:var(--tw-content);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.after\\:content-\\[\\'\\'\\]:after{--tw-content:"";content:var(--tw-content)}.peer-checked\\:after\\:translate-x-5:is(:where(.peer):checked~*):after{content:var(--tw-content);--tw-translate-x:calc(var(--spacing) * 5);translate:var(--tw-translate-x) var(--tw-translate-y)}.last\\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.checked\\:border-\\[5px\\]:checked{border-style:var(--tw-border-style);border-width:5px}.checked\\:border-primary:checked{border-color:var(--color-primary)}.checked\\:bg-primary:checked{background-color:var(--color-primary)}.checked\\:bg-\\[url\\(\\'data\\:image\\/svg\\+xml\\,\\%3Csvg\\%20viewBox\\%3D\\%220\\%200\\%2016\\%2016\\%22\\%20fill\\%3D\\%22white\\%22\\%20xmlns\\%3D\\%22http\\%3A\\%2F\\%2Fwww\\.w3\\.org\\%2F2000\\%2Fsvg\\%22\\%3E\\%3Cpath\\%20d\\%3D\\%22M12\\.207\\%204\\.793a1\\%201\\%200\\%20010\\%201\\.414l-5\\%205a1\\%201\\%200\\%2001-1\\.414\\%200l-2-2a1\\%201\\%200\\%20011\\.414-1\\.414L6\\.5\\%209\\.086l4\\.293-4\\.293a1\\%201\\%200\\%20011\\.414\\%200z\\%22\\%2F\\%3E\\%3C\\%2Fsvg\\%3E\\'\\)\\]:checked{background-image:url(data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%2016%2016%22%20fill%3D%22white%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12.207%204.793a1%201%200%20010%201.414l-5%205a1%201%200%2001-1.414%200l-2-2a1%201%200%20011.414-1.414L6.5%209.086l4.293-4.293a1%201%200%20011.414%200z%22%2F%3E%3C%2Fsvg%3E)}.checked\\:bg-center:checked{background-position:50%}.checked\\:bg-no-repeat:checked{background-repeat:no-repeat}.indeterminate\\:border-primary:indeterminate{border-color:var(--color-primary)}.indeterminate\\:bg-primary:indeterminate{background-color:var(--color-primary)}.indeterminate\\:bg-\\[url\\(\\'data\\:image\\/svg\\+xml\\,\\%3Csvg\\%20viewBox\\%3D\\%220\\%200\\%2016\\%2016\\%22\\%20fill\\%3D\\%22white\\%22\\%20xmlns\\%3D\\%22http\\%3A\\%2F\\%2Fwww\\.w3\\.org\\%2F2000\\%2Fsvg\\%22\\%3E\\%3Crect\\%20x\\%3D\\%223\\%22\\%20y\\%3D\\%227\\%22\\%20width\\%3D\\%2210\\%22\\%20height\\%3D\\%222\\%22\\%20rx\\%3D\\%221\\%22\\%2F\\%3E\\%3C\\%2Fsvg\\%3E\\'\\)\\]:indeterminate{background-image:url(data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%2016%2016%22%20fill%3D%22white%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20x%3D%223%22%20y%3D%227%22%20width%3D%2210%22%20height%3D%222%22%20rx%3D%221%22%2F%3E%3C%2Fsvg%3E)}.indeterminate\\:bg-center:indeterminate{background-position:50%}.indeterminate\\:bg-no-repeat:indeterminate{background-repeat:no-repeat}@media (hover:hover){.hover\\:border-border-strong:hover{border-color:var(--color-border-strong)}.hover\\:border-error:hover{border-color:var(--color-error)}.hover\\:border-primary:hover{border-color:var(--color-primary)}.hover\\:bg-bg-secondary:hover{background-color:var(--color-bg-secondary)}.hover\\:bg-bg-tertiary:hover,.hover\\:bg-bg-tertiary\\/70:hover{background-color:var(--color-bg-tertiary)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-bg-tertiary\\/70:hover{background-color:color-mix(in oklab, var(--color-bg-tertiary) 70%, transparent)}}.hover\\:bg-error-bg:hover{background-color:var(--color-error-bg)}.hover\\:bg-error\\/80:hover{background-color:var(--color-error)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-error\\/80:hover{background-color:color-mix(in oklab, var(--color-error) 80%, transparent)}}.hover\\:bg-primary-hover:hover{background-color:var(--color-primary-hover)}.hover\\:text-primary:hover{color:var(--color-primary)}.hover\\:text-text-primary:hover{color:var(--color-text-primary)}.hover\\:text-text-secondary:hover{color:var(--color-text-secondary)}.hover\\:opacity-90:hover{opacity:.9}}.focus\\:border-error:focus{border-color:var(--color-error)}.focus\\:border-primary:focus{border-color:var(--color-primary)}.focus\\:bg-bg-tertiary:focus{background-color:var(--color-bg-tertiary)}.focus\\:bg-error-bg:focus{background-color:var(--color-error-bg)}.focus\\:ring-1:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\\:ring-error:focus{--tw-ring-color:var(--color-error)}.focus\\:ring-primary:focus{--tw-ring-color:var(--color-primary)}.focus-visible\\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\\:ring-epfl-canard:focus-visible{--tw-ring-color:var(--color-epfl-canard)}.focus-visible\\:ring-error:focus-visible{--tw-ring-color:var(--color-error)}.focus-visible\\:ring-primary:focus-visible{--tw-ring-color:var(--color-primary)}.focus-visible\\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\\:ring-offset-bg-primary:focus-visible{--tw-ring-offset-color:var(--color-bg-primary)}.focus-visible\\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:bg-bg-secondary:disabled{background-color:var(--color-bg-secondary)}.disabled\\:opacity-50:disabled{opacity:.5}@media (width>=40rem){.sm\\:col-span-2{grid-column:span 2/span 2}.sm\\:w-1\\/3{width:33.3333%}.sm\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\\:flex-row{flex-direction:row}.sm\\:gap-lg{gap:var(--spacing-lg)}}@media (width>=48rem){.md\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=64rem){.lg\\:flex{display:flex}.lg\\:hidden{display:none}.lg\\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\\:px-lg{padding-inline:var(--spacing-lg)}}.\\[\\&\\>svg\\]\\:size-4>svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\\[\\&\\>svg\\]\\:size-5>svg{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}}:root{--bg-primary:#fff;--bg-secondary:#f5f5f5;--bg-tertiary:#e6e6e6;--border-default:#d5d5d5;--border-strong:#c1c1c1;--text-primary:#212121;--text-secondary:#707070;--text-muted:#8e8e8e;--semantic-success:#1b874b;--semantic-success-bg:#e8f5e9;--semantic-warning:#d4860a;--semantic-warning-bg:#fff3e0;--semantic-error:#d32f2f;--semantic-error-bg:#ffebee;--semantic-info:#1976d2;--semantic-info-bg:#e3f2fd;--action-primary:#007480;--action-primary-hover:#004248;--logo-filter:brightness(0);--logo-opacity:.5}.dark{--bg-primary:#1a1a1a;--bg-secondary:#242424;--bg-tertiary:#2e2e2e;--border-default:#3a3a3a;--border-strong:#505050;--text-primary:#f0f0f0;--text-secondary:#a0a0a0;--text-muted:#707070;--semantic-success:#34d37a;--semantic-success-bg:#1a2e1a;--semantic-warning:#ffad33;--semantic-warning-bg:#2e2410;--semantic-error:#ff6b6b;--semantic-error-bg:#2e1515;--semantic-info:#64b5f6;--semantic-info-bg:#152538;--action-primary:#009ba6;--action-primary-hover:#007480;--logo-filter:brightness(0) invert(1);--logo-opacity:1;--shadow-sm:0 1px 2px #0000004d;--shadow-md:0 2px 8px #0006;--shadow-lg:0 4px 16px #00000080;--shadow-xl:0 8px 32px #0009}@keyframes slide-in{0%{opacity:0;transform:translate(1rem)}to{opacity:1;transform:translate(0)}}@keyframes dialog-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes floating-in{0%{opacity:0}to{opacity:1}}body{font-family:var(--font-sans);font-size:var(--text-body);line-height:var(--text-body--line-height);color:var(--color-text-primary);background-color:var(--color-bg-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(360deg)}}
2
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:""}}}@layer theme{:root,:host{--font-sans:"Inter", ui-sans-serif, system-ui, -apple-system, sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-600:oklch(57.7% .245 27.325);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-md:28rem;--container-xl:36rem;--container-6xl:72rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wide:.025em;--tracking-wider:.05em;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--shadow-sm:0 1px 2px #0000000f;--shadow-md:0 2px 8px #00000014;--shadow-lg:0 4px 16px #0000001a;--shadow-xl:0 8px 32px #0000001f;--ease-out:cubic-bezier(0, 0, .2, 1);--animate-spin:spin 1s linear infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-epfl-red:red;--color-epfl-red-dark:#b51f1f;--color-epfl-leman:#00a79f;--color-epfl-canard:#007480;--color-epfl-canard-dark:#004248;--color-primary:var(--action-primary);--color-primary-hover:var(--action-primary-hover);--color-bg-primary:var(--bg-primary);--color-bg-secondary:var(--bg-secondary);--color-bg-tertiary:var(--bg-tertiary);--color-border:var(--border-default);--color-border-strong:var(--border-strong);--color-text-primary:var(--text-primary);--color-text-secondary:var(--text-secondary);--color-text-muted:var(--text-muted);--color-success:var(--semantic-success);--color-success-bg:var(--semantic-success-bg);--color-warning:var(--semantic-warning);--color-warning-bg:var(--semantic-warning-bg);--color-error:var(--semantic-error);--color-error-bg:var(--semantic-error-bg);--color-info:var(--semantic-info);--color-info-bg:var(--semantic-info-bg);--radius-full:9999px;--spacing-xs:4px;--spacing-sm:8px;--spacing-md:16px;--spacing-lg:24px;--spacing-xl:32px;--spacing-2xl:48px;--text-h1:2rem;--text-h1--line-height:1.2;--text-h2:1.5rem;--text-h2--line-height:1.3;--text-h3:1.25rem;--text-h3--line-height:1.4;--text-body:.9375rem;--text-body--line-height:1.5;--text-small:.8125rem;--text-small--line-height:1.5;--text-caption:.75rem;--text-caption--line-height:1.4}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}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;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:calc(var(--spacing) * 0)}.inset-x-0{inset-inline:calc(var(--spacing) * 0)}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.top-0{top:calc(var(--spacing) * 0)}.right-0{right:calc(var(--spacing) * 0)}.right-lg{right:var(--spacing-lg)}.bottom-lg{bottom:var(--spacing-lg)}.left-0{left:calc(var(--spacing) * 0)}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.m-0{margin:calc(var(--spacing) * 0)}.mx-auto{margin-inline:auto}.my-1{margin-block:calc(var(--spacing) * 1)}.mt-0\\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-auto{margin-top:auto}.mt-lg{margin-top:var(--spacing-lg)}.mt-md{margin-top:var(--spacing-md)}.mt-sm{margin-top:var(--spacing-sm)}.mt-xs{margin-top:var(--spacing-xs)}.mr-lg{margin-right:var(--spacing-lg)}.mr-sm{margin-right:var(--spacing-sm)}.-mb-px{margin-bottom:-1px}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-lg{margin-bottom:var(--spacing-lg)}.mb-md{margin-bottom:var(--spacing-md)}.mb-sm{margin-bottom:var(--spacing-sm)}.mb-xs{margin-bottom:var(--spacing-xs)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-2\\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-11{width:calc(var(--spacing) * 11);height:calc(var(--spacing) * 11)}.size-12{width:calc(var(--spacing) * 12);height:calc(var(--spacing) * 12)}.size-14{width:calc(var(--spacing) * 14);height:calc(var(--spacing) * 14)}.size-16{width:calc(var(--spacing) * 16);height:calc(var(--spacing) * 16)}.size-20{width:calc(var(--spacing) * 20);height:calc(var(--spacing) * 20)}.size-full{width:100%;height:100%}.h-0\\.5{height:calc(var(--spacing) * .5)}.h-1\\.5{height:calc(var(--spacing) * 1.5)}.h-2\\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-4{height:calc(var(--spacing) * 4)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-11{height:calc(var(--spacing) * 11)}.h-12{height:calc(var(--spacing) * 12)}.h-14{height:calc(var(--spacing) * 14)}.h-20{height:calc(var(--spacing) * 20)}.h-64{height:calc(var(--spacing) * 64)}.h-96{height:calc(var(--spacing) * 96)}.h-\\[30px\\]{height:30px}.h-full{height:100%}.h-screen{height:100vh}.min-h-screen{min-height:100vh}.w-3{width:calc(var(--spacing) * 3)}.w-4{width:calc(var(--spacing) * 4)}.w-7{width:calc(var(--spacing) * 7)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-11{width:calc(var(--spacing) * 11)}.w-16{width:calc(var(--spacing) * 16)}.w-40{width:calc(var(--spacing) * 40)}.w-48{width:calc(var(--spacing) * 48)}.w-64{width:calc(var(--spacing) * 64)}.w-72{width:calc(var(--spacing) * 72)}.w-80{width:calc(var(--spacing) * 80)}.w-96{width:calc(var(--spacing) * 96)}.w-\\[4px\\]{width:4px}.w-\\[8px\\]{width:8px}.w-\\[16px\\]{width:16px}.w-\\[24px\\]{width:24px}.w-\\[32px\\]{width:32px}.w-\\[48px\\]{width:48px}.w-auto{width:auto}.w-full{width:100%}.max-w-6xl{max-width:var(--container-6xl)}.max-w-\\[24rem\\]{max-width:24rem}.max-w-\\[32rem\\]{max-width:32rem}.max-w-\\[42rem\\]{max-width:42rem}.max-w-\\[600px\\]{max-width:600px}.max-w-\\[var\\(--container-6xl\\)\\]{max-width:var(--container-6xl)}.max-w-\\[var\\(--container-md\\)\\]{max-width:var(--container-md)}.max-w-\\[var\\(--container-xl\\)\\]{max-width:var(--container-xl)}.max-w-\\[var\\(--container-xs\\)\\]{max-width:var(--container-xs)}.max-w-full{max-width:100%}.max-w-md{max-width:var(--spacing-md)}.max-w-screen{max-width:100vw}.max-w-sm{max-width:var(--spacing-sm)}.max-w-xl{max-width:var(--spacing-xl)}.max-w-xs{max-width:var(--spacing-xs)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-7{min-width:calc(var(--spacing) * 7)}.min-w-9{min-width:calc(var(--spacing) * 9)}.min-w-11{min-width:calc(var(--spacing) * 11)}.min-w-\\[10rem\\]{min-width:10rem}.min-w-\\[280px\\]{min-width:280px}.min-w-\\[500px\\]{min-width:500px}.flex-1{flex:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.-translate-x-full{--tw-translate-x:-100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-0{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.-rotate-90{rotate:-90deg}.rotate-45{rotate:45deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-dialog-in{animation:.2s ease-out dialog-in}.animate-floating-in{animation:.15s ease-out floating-in}.animate-slide-in{animation:.25s ease-out slide-in}.animate-spin{animation:var(--animate-spin)}.cursor-help{cursor:help}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize{resize:both}.resize-none{resize:none}.resize-y{resize:vertical}.list-none{list-style-type:none}.appearance-none{appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2xl{gap:var(--spacing-2xl)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-lg{gap:var(--spacing-lg)}.gap-md{gap:var(--spacing-md)}.gap-px{gap:1px}.gap-sm{gap:var(--spacing-sm)}.gap-xl{gap:var(--spacing-xl)}.gap-xs{gap:var(--spacing-xs)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-border>:not(:last-child)){border-color:var(--color-border)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.\\!rounded-lg{border-radius:var(--radius-lg)!important}.\\!rounded-md{border-radius:var(--radius-md)!important}.\\!rounded-sm{border-radius:var(--radius-sm)!important}.rounded{border-radius:.25rem}.rounded-full{border-radius:var(--radius-full)}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.\\!border{border-style:var(--tw-border-style)!important;border-width:1px!important}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-r-2{border-right-style:var(--tw-border-style);border-right-width:2px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-none{--tw-border-style:none;border-style:none}.\\!border-border{border-color:var(--color-border)!important}.\\!border-epfl-canard{border-color:var(--color-epfl-canard)!important}.\\!border-error{border-color:var(--color-error)!important}.\\!border-primary{border-color:var(--color-primary)!important}.border-border{border-color:var(--color-border)}.border-border-strong{border-color:var(--color-border-strong)}.border-error,.border-error\\/30{border-color:var(--color-error)}@supports (color:color-mix(in lab, red, red)){.border-error\\/30{border-color:color-mix(in oklab, var(--color-error) 30%, transparent)}}.border-info\\/30{border-color:var(--color-info)}@supports (color:color-mix(in lab, red, red)){.border-info\\/30{border-color:color-mix(in oklab, var(--color-info) 30%, transparent)}}.border-primary{border-color:var(--color-primary)}.border-red-600{border-color:var(--color-red-600)}.border-success\\/30{border-color:var(--color-success)}@supports (color:color-mix(in lab, red, red)){.border-success\\/30{border-color:color-mix(in oklab, var(--color-success) 30%, transparent)}}.border-transparent{border-color:#0000}.border-warning\\/30{border-color:var(--color-warning)}@supports (color:color-mix(in lab, red, red)){.border-warning\\/30{border-color:color-mix(in oklab, var(--color-warning) 30%, transparent)}}.\\!bg-bg-tertiary{background-color:var(--color-bg-tertiary)!important}.\\!bg-epfl-canard{background-color:var(--color-epfl-canard)!important}.\\!bg-primary{background-color:var(--color-primary)!important}.bg-bg-primary{background-color:var(--color-bg-primary)}.bg-bg-secondary{background-color:var(--color-bg-secondary)}.bg-bg-tertiary,.bg-bg-tertiary\\/50{background-color:var(--color-bg-tertiary)}@supports (color:color-mix(in lab, red, red)){.bg-bg-tertiary\\/50{background-color:color-mix(in oklab, var(--color-bg-tertiary) 50%, transparent)}}.bg-black\\/40{background-color:#0006}@supports (color:color-mix(in lab, red, red)){.bg-black\\/40{background-color:color-mix(in oklab, var(--color-black) 40%, transparent)}}.bg-black\\/50{background-color:#00000080}@supports (color:color-mix(in lab, red, red)){.bg-black\\/50{background-color:color-mix(in oklab, var(--color-black) 50%, transparent)}}.bg-border{background-color:var(--color-border)}.bg-border-strong{background-color:var(--color-border-strong)}.bg-epfl-canard{background-color:var(--color-epfl-canard)}.bg-epfl-canard-dark{background-color:var(--color-epfl-canard-dark)}.bg-epfl-leman{background-color:var(--color-epfl-leman)}.bg-epfl-red{background-color:var(--color-epfl-red)}.bg-epfl-red-dark{background-color:var(--color-epfl-red-dark)}.bg-error{background-color:var(--color-error)}.bg-error-bg{background-color:var(--color-error-bg)}.bg-info{background-color:var(--color-info)}.bg-info-bg{background-color:var(--color-info-bg)}.bg-primary,.bg-primary\\/5{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\\/5{background-color:color-mix(in oklab, var(--color-primary) 5%, transparent)}}.bg-primary\\/10{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\\/10{background-color:color-mix(in oklab, var(--color-primary) 10%, transparent)}}.bg-success{background-color:var(--color-success)}.bg-success-bg{background-color:var(--color-success-bg)}.bg-text-muted{background-color:var(--color-text-muted)}.bg-text-primary{background-color:var(--color-text-primary)}.bg-transparent{background-color:#0000}.bg-warning{background-color:var(--color-warning)}.bg-warning-bg{background-color:var(--color-warning-bg)}.object-cover{object-fit:cover}.p-0{padding:calc(var(--spacing) * 0)}.p-0\\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:calc(var(--spacing) * 1)}.p-2{padding:calc(var(--spacing) * 2)}.p-2xl{padding:var(--spacing-2xl)}.p-16{padding:calc(var(--spacing) * 16)}.p-lg{padding:var(--spacing-lg)}.p-md{padding:var(--spacing-md)}.p-sm{padding:var(--spacing-sm)}.p-xl{padding:var(--spacing-xl)}.p-xs{padding:var(--spacing-xs)}.px-1\\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-lg{padding-inline:var(--spacing-lg)}.px-md{padding-inline:var(--spacing-md)}.px-sm{padding-inline:var(--spacing-sm)}.px-xs{padding-inline:var(--spacing-xs)}.py-0\\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\\.5{padding-block:calc(var(--spacing) * 2.5)}.py-2xl{padding-block:var(--spacing-2xl)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-3\\.5{padding-block:calc(var(--spacing) * 3.5)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-lg{padding-block:var(--spacing-lg)}.py-md{padding-block:var(--spacing-md)}.py-sm{padding-block:var(--spacing-sm)}.py-xl{padding-block:var(--spacing-xl)}.py-xs{padding-block:var(--spacing-xs)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-14{padding-top:calc(var(--spacing) * 14)}.pt-md{padding-top:var(--spacing-md)}.pt-sm{padding-top:var(--spacing-sm)}.pt-xl{padding-top:var(--spacing-xl)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pr-11{padding-right:calc(var(--spacing) * 11)}.pb-1{padding-bottom:calc(var(--spacing) * 1)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-6{padding-left:calc(var(--spacing) * 6)}.pl-8{padding-left:calc(var(--spacing) * 8)}.pl-10{padding-left:calc(var(--spacing) * 10)}.pl-11{padding-left:calc(var(--spacing) * 11)}.pl-14{padding-left:calc(var(--spacing) * 14)}.text-center{text-align:center}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.text-body{font-size:var(--text-body);line-height:var(--tw-leading,var(--text-body--line-height))}.text-caption{font-size:var(--text-caption);line-height:var(--tw-leading,var(--text-caption--line-height))}.text-h1{font-size:var(--text-h1);line-height:var(--tw-leading,var(--text-h1--line-height))}.text-h2{font-size:var(--text-h2);line-height:var(--tw-leading,var(--text-h2--line-height))}.text-h3{font-size:var(--text-h3);line-height:var(--tw-leading,var(--text-h3--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-small{font-size:var(--text-small);line-height:var(--tw-leading,var(--text-small--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-\\[1\\.2\\]{--tw-leading:1.2;line-height:1.2}.leading-\\[1\\.3\\]{--tw-leading:1.3;line-height:1.3}.leading-\\[1\\.4\\]{--tw-leading:1.4;line-height:1.4}.leading-\\[1\\.5\\]{--tw-leading:1.5;line-height:1.5}.leading-none{--tw-leading:1;line-height:1}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.whitespace-nowrap{white-space:nowrap}.\\!text-white{color:var(--color-white)!important}.text-bg-primary{color:var(--color-bg-primary)}.text-epfl-canard{color:var(--color-epfl-canard)}.text-epfl-leman{color:var(--color-epfl-leman)}.text-epfl-red{color:var(--color-epfl-red)}.text-error{color:var(--color-error)}.text-info{color:var(--color-info)}.text-primary{color:var(--color-primary)}.text-success{color:var(--color-success)}.text-text-muted{color:var(--color-text-muted)}.text-text-primary{color:var(--color-text-primary)}.text-text-secondary{color:var(--color-text-secondary)}.text-warning{color:var(--color-warning)}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.no-underline{text-decoration-line:none}.underline{text-decoration-line:underline}.decoration-dotted{text-decoration-style:dotted}.opacity-0{opacity:0}.opacity-25{opacity:.25}.opacity-30{opacity:.3}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.opacity-100{opacity:1}.\\!shadow-lg{--tw-shadow:0 4px 16px var(--tw-shadow-color,#0000001a)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}.\\!shadow-sm{--tw-shadow:0 1px 2px var(--tw-shadow-color,#0000000f)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}.shadow-lg{--tw-shadow:0 4px 16px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 2px 8px var(--tw-shadow-color,#00000014);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px var(--tw-shadow-color,#0000000f);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 8px 32px var(--tw-shadow-color,#0000001f);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.\\!ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}.\\!ring-epfl-canard{--tw-ring-color:var(--color-epfl-canard)!important}.\\!ring-primary{--tw-ring-color:var(--color-primary)!important}.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,)}.transition-\\[width\\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-none{transition-property:none}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.peer-checked\\:bg-primary:is(:where(.peer):checked~*){background-color:var(--color-primary)}.peer-focus-visible\\:ring-2:is(:where(.peer):focus-visible~*){--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.peer-focus-visible\\:ring-primary:is(:where(.peer):focus-visible~*){--tw-ring-color:var(--color-primary)}.peer-focus-visible\\:ring-offset-2:is(:where(.peer):focus-visible~*){--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.peer-focus-visible\\:ring-offset-bg-primary:is(:where(.peer):focus-visible~*){--tw-ring-offset-color:var(--color-bg-primary)}.peer-disabled\\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\\:opacity-50:is(:where(.peer):disabled~*){opacity:.5}.placeholder\\:text-text-muted::placeholder{color:var(--color-text-muted)}.after\\:absolute:after{content:var(--tw-content);position:absolute}.after\\:top-0\\.5:after{content:var(--tw-content);top:calc(var(--spacing) * .5)}.after\\:left-0\\.5:after{content:var(--tw-content);left:calc(var(--spacing) * .5)}.after\\:size-5:after{content:var(--tw-content);width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.after\\:rounded-full:after{content:var(--tw-content);border-radius:var(--radius-full)}.after\\:bg-white:after{content:var(--tw-content);background-color:var(--color-white)}.after\\:shadow-sm:after{content:var(--tw-content);--tw-shadow:0 1px 2px var(--tw-shadow-color,#0000000f);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.after\\:transition-transform:after{content:var(--tw-content);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.after\\:content-\\[\\'\\'\\]:after{--tw-content:"";content:var(--tw-content)}.peer-checked\\:after\\:translate-x-5:is(:where(.peer):checked~*):after{content:var(--tw-content);--tw-translate-x:calc(var(--spacing) * 5);translate:var(--tw-translate-x) var(--tw-translate-y)}.last\\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.checked\\:border-\\[5px\\]:checked{border-style:var(--tw-border-style);border-width:5px}.checked\\:border-primary:checked{border-color:var(--color-primary)}.checked\\:bg-primary:checked{background-color:var(--color-primary)}.checked\\:bg-\\[url\\(\\'data\\:image\\/svg\\+xml\\,\\%3Csvg\\%20viewBox\\%3D\\%220\\%200\\%2016\\%2016\\%22\\%20fill\\%3D\\%22white\\%22\\%20xmlns\\%3D\\%22http\\%3A\\%2F\\%2Fwww\\.w3\\.org\\%2F2000\\%2Fsvg\\%22\\%3E\\%3Cpath\\%20d\\%3D\\%22M12\\.207\\%204\\.793a1\\%201\\%200\\%20010\\%201\\.414l-5\\%205a1\\%201\\%200\\%2001-1\\.414\\%200l-2-2a1\\%201\\%200\\%20011\\.414-1\\.414L6\\.5\\%209\\.086l4\\.293-4\\.293a1\\%201\\%200\\%20011\\.414\\%200z\\%22\\%2F\\%3E\\%3C\\%2Fsvg\\%3E\\'\\)\\]:checked{background-image:url(data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%2016%2016%22%20fill%3D%22white%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12.207%204.793a1%201%200%20010%201.414l-5%205a1%201%200%2001-1.414%200l-2-2a1%201%200%20011.414-1.414L6.5%209.086l4.293-4.293a1%201%200%20011.414%200z%22%2F%3E%3C%2Fsvg%3E)}.checked\\:bg-center:checked{background-position:50%}.checked\\:bg-no-repeat:checked{background-repeat:no-repeat}.indeterminate\\:border-primary:indeterminate{border-color:var(--color-primary)}.indeterminate\\:bg-primary:indeterminate{background-color:var(--color-primary)}.indeterminate\\:bg-\\[url\\(\\'data\\:image\\/svg\\+xml\\,\\%3Csvg\\%20viewBox\\%3D\\%220\\%200\\%2016\\%2016\\%22\\%20fill\\%3D\\%22white\\%22\\%20xmlns\\%3D\\%22http\\%3A\\%2F\\%2Fwww\\.w3\\.org\\%2F2000\\%2Fsvg\\%22\\%3E\\%3Crect\\%20x\\%3D\\%223\\%22\\%20y\\%3D\\%227\\%22\\%20width\\%3D\\%2210\\%22\\%20height\\%3D\\%222\\%22\\%20rx\\%3D\\%221\\%22\\%2F\\%3E\\%3C\\%2Fsvg\\%3E\\'\\)\\]:indeterminate{background-image:url(data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%2016%2016%22%20fill%3D%22white%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20x%3D%223%22%20y%3D%227%22%20width%3D%2210%22%20height%3D%222%22%20rx%3D%221%22%2F%3E%3C%2Fsvg%3E)}.indeterminate\\:bg-center:indeterminate{background-position:50%}.indeterminate\\:bg-no-repeat:indeterminate{background-repeat:no-repeat}@media (hover:hover){.hover\\:border-border-strong:hover{border-color:var(--color-border-strong)}.hover\\:border-error:hover{border-color:var(--color-error)}.hover\\:border-primary:hover{border-color:var(--color-primary)}.hover\\:bg-bg-secondary:hover{background-color:var(--color-bg-secondary)}.hover\\:bg-bg-tertiary:hover,.hover\\:bg-bg-tertiary\\/70:hover{background-color:var(--color-bg-tertiary)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-bg-tertiary\\/70:hover{background-color:color-mix(in oklab, var(--color-bg-tertiary) 70%, transparent)}}.hover\\:bg-error-bg:hover{background-color:var(--color-error-bg)}.hover\\:bg-error\\/80:hover{background-color:var(--color-error)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-error\\/80:hover{background-color:color-mix(in oklab, var(--color-error) 80%, transparent)}}.hover\\:bg-primary-hover:hover{background-color:var(--color-primary-hover)}.hover\\:text-primary:hover{color:var(--color-primary)}.hover\\:text-text-primary:hover{color:var(--color-text-primary)}.hover\\:text-text-secondary:hover{color:var(--color-text-secondary)}.hover\\:opacity-90:hover{opacity:.9}}.focus\\:border-error:focus{border-color:var(--color-error)}.focus\\:border-primary:focus{border-color:var(--color-primary)}.focus\\:bg-bg-tertiary:focus{background-color:var(--color-bg-tertiary)}.focus\\:bg-error-bg:focus{background-color:var(--color-error-bg)}.focus\\:ring-1:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\\:ring-error:focus{--tw-ring-color:var(--color-error)}.focus\\:ring-primary:focus{--tw-ring-color:var(--color-primary)}.focus-visible\\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\\:ring-epfl-canard:focus-visible{--tw-ring-color:var(--color-epfl-canard)}.focus-visible\\:ring-error:focus-visible{--tw-ring-color:var(--color-error)}.focus-visible\\:ring-primary:focus-visible{--tw-ring-color:var(--color-primary)}.focus-visible\\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\\:ring-offset-bg-primary:focus-visible{--tw-ring-offset-color:var(--color-bg-primary)}.focus-visible\\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:bg-bg-secondary:disabled{background-color:var(--color-bg-secondary)}.disabled\\:opacity-50:disabled{opacity:.5}@media (width>=40rem){.sm\\:col-span-2{grid-column:span 2/span 2}.sm\\:w-1\\/3{width:33.3333%}.sm\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\\:flex-row{flex-direction:row}.sm\\:gap-lg{gap:var(--spacing-lg)}}@media (width>=48rem){.md\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=64rem){.lg\\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\\:px-lg{padding-inline:var(--spacing-lg)}}.\\[\\&\\>svg\\]\\:size-4>svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\\[\\&\\>svg\\]\\:size-5>svg{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}}:root{--bg-primary:#fff;--bg-secondary:#f5f5f5;--bg-tertiary:#e6e6e6;--border-default:#d5d5d5;--border-strong:#c1c1c1;--text-primary:#212121;--text-secondary:#707070;--text-muted:#8e8e8e;--semantic-success:#1b874b;--semantic-success-bg:#e8f5e9;--semantic-warning:#d4860a;--semantic-warning-bg:#fff3e0;--semantic-error:#d32f2f;--semantic-error-bg:#ffebee;--semantic-info:#1976d2;--semantic-info-bg:#e3f2fd;--action-primary:#007480;--action-primary-hover:#004248;--logo-filter:brightness(0);--logo-opacity:.5}.dark{--bg-primary:#1a1a1a;--bg-secondary:#242424;--bg-tertiary:#2e2e2e;--border-default:#3a3a3a;--border-strong:#505050;--text-primary:#f0f0f0;--text-secondary:#a0a0a0;--text-muted:#707070;--semantic-success:#34d37a;--semantic-success-bg:#1a2e1a;--semantic-warning:#ffad33;--semantic-warning-bg:#2e2410;--semantic-error:#ff6b6b;--semantic-error-bg:#2e1515;--semantic-info:#64b5f6;--semantic-info-bg:#152538;--action-primary:#009ba6;--action-primary-hover:#007480;--logo-filter:brightness(0) invert(1);--logo-opacity:1;--shadow-sm:0 1px 2px #0000004d;--shadow-md:0 2px 8px #0006;--shadow-lg:0 4px 16px #00000080;--shadow-xl:0 8px 32px #0009}@keyframes slide-in{0%{opacity:0;transform:translate(1rem)}to{opacity:1;transform:translate(0)}}@keyframes dialog-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes floating-in{0%{opacity:0}to{opacity:1}}body{font-family:var(--font-sans);font-size:var(--text-body);line-height:var(--text-body--line-height);color:var(--color-text-primary);background-color:var(--color-bg-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.poesis-desktop-flex{display:none}.poesis-mobile-only{display:flex}@media (width>=1024px){.poesis-desktop-flex{display:flex}.poesis-mobile-only{display:none}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(360deg)}}
3
3
  /*$vite$:1*/`)),document.head.appendChild(e)}}catch(e){console.error(`vite-plugin-css-injected-by-js`,e)}})();import { createContext as e, forwardRef as t, useCallback as n, useContext as r, useEffect as i, useId as a, useMemo as o, useRef as s, useState as c, useSyncExternalStore as l } from "react";
4
4
  import { Fragment as u, jsx as d, jsxs as f } from "react/jsx-runtime";
5
- import { BoxArrowInRight as p, BoxArrowRight as m, CheckCircleFill as h, ChevronBarLeft as g, ChevronBarRight as _, ChevronDown as v, ChevronLeft as y, ChevronRight as b, CloudArrowUp as x, ExclamationTriangleFill as S, InfoCircleFill as C, List as w, MoonFill as T, SortAlphaDown as E, SortAlphaDownAlt as D, SortDown as O, SortNumericDown as k, SortNumericDownAlt as A, SunFill as j, X as M, XCircleFill as ee, XLg as te } from "react-bootstrap-icons";
6
- import { useTranslation as N } from "react-i18next";
7
- import ne from "react-select";
8
- import { FloatingFocusManager as re, FloatingPortal as P, arrow as ie, autoUpdate as F, flip as I, offset as L, shift as R, useClick as ae, useDismiss as z, useFloating as B, useFocus as oe, useHover as se, useInteractions as V, useListNavigation as ce, useRole as H } from "@floating-ui/react";
9
- import { createPortal as le } from "react-dom";
5
+ import { BoxArrowInRight as p, BoxArrowRight as m, CheckCircleFill as h, ChevronBarLeft as g, ChevronBarRight as _, ChevronDown as v, ChevronLeft as y, ChevronRight as b, CloudArrowUp as x, ExclamationTriangleFill as S, InfoCircleFill as C, List as w, MoonFill as T, SortAlphaDown as E, SortAlphaDownAlt as D, SortDown as O, SortNumericDown as k, SortNumericDownAlt as A, SunFill as ee, X as j, XCircleFill as te, XLg as ne } from "react-bootstrap-icons";
6
+ import { useTranslation as M } from "react-i18next";
7
+ import re from "react-select";
8
+ import { FloatingFocusManager as ie, FloatingPortal as N, arrow as ae, autoUpdate as P, flip as F, offset as I, shift as L, useClick as oe, useDismiss as R, useFloating as z, useFocus as se, useHover as ce, useInteractions as B, useListNavigation as le, useRole as V } from "@floating-ui/react";
9
+ import { createPortal as ue } from "react-dom";
10
10
  //#region src/components/ui/Avatar.tsx
11
- var ue = {
11
+ var de = {
12
12
  sm: "size-8 text-caption",
13
13
  md: "size-10 text-small",
14
14
  lg: "size-14 text-body"
15
15
  };
16
- function de(e) {
16
+ function fe(e) {
17
17
  let t = e.trim().split(/\s+/);
18
18
  return t.length === 0 ? "?" : t.length === 1 ? t[0][0].toUpperCase() : (t[0][0] + t[t.length - 1][0]).toUpperCase();
19
19
  }
20
- function fe({ src: e, name: t, size: n = "md", alt: r, className: i = "", ...a }) {
20
+ function pe({ src: e, name: t, size: n = "md", alt: r, className: i = "", ...a }) {
21
21
  let [o, s] = c(!1), l = !!e && !o;
22
22
  return /* @__PURE__ */ d("span", {
23
23
  role: "img",
@@ -25,7 +25,7 @@ function fe({ src: e, name: t, size: n = "md", alt: r, className: i = "", ...a }
25
25
  className: [
26
26
  "inline-flex items-center justify-center rounded-full overflow-hidden",
27
27
  "bg-primary text-white font-semibold select-none shrink-0",
28
- ue[n],
28
+ de[n],
29
29
  i
30
30
  ].join(" "),
31
31
  ...a,
@@ -36,35 +36,35 @@ function fe({ src: e, name: t, size: n = "md", alt: r, className: i = "", ...a }
36
36
  onError: () => s(!0)
37
37
  }) : /* @__PURE__ */ d("span", {
38
38
  "aria-hidden": "true",
39
- children: de(t)
39
+ children: fe(t)
40
40
  })
41
41
  });
42
42
  }
43
43
  //#endregion
44
44
  //#region src/components/ui/Badge.tsx
45
- var pe = {
45
+ var me = {
46
46
  default: "bg-bg-tertiary text-text-primary",
47
47
  success: "bg-success-bg text-success",
48
48
  warning: "bg-warning-bg text-warning",
49
49
  error: "bg-error-bg text-error",
50
50
  info: "bg-info-bg text-info"
51
- }, me = {
51
+ }, he = {
52
52
  default: "bg-text-muted",
53
53
  success: "bg-success",
54
54
  warning: "bg-warning",
55
55
  error: "bg-error",
56
56
  info: "bg-info"
57
57
  };
58
- function he({ color: e = "default", dot: t, className: n = "", children: r, ...i }) {
58
+ function H({ color: e = "default", dot: t, className: n = "", children: r, ...i }) {
59
59
  return t ? /* @__PURE__ */ d("span", {
60
60
  role: "status",
61
- className: `inline-block size-2.5 rounded-full ${me[e]} ${n}`,
61
+ className: `inline-block size-2.5 rounded-full ${he[e]} ${n}`,
62
62
  ...i
63
63
  }) : /* @__PURE__ */ d("span", {
64
64
  className: [
65
65
  "inline-flex items-center rounded-sm px-2 py-0.5",
66
66
  "text-caption font-medium leading-none",
67
- pe[e],
67
+ me[e],
68
68
  n
69
69
  ].join(" "),
70
70
  ...i,
@@ -193,7 +193,7 @@ function Te(e, t, n, r) {
193
193
  return u.push(...a), u;
194
194
  }
195
195
  var Ee = t(function({ totalPages: e, page: t, defaultPage: r = 1, onChange: i, siblingCount: a = 1, boundaryCount: o = 1, showFirstLast: s = !1, size: l = "md", disabled: u = !1, className: p = "", ...m }, h) {
196
- let { t: v } = N(), x = t !== void 0, [S, C] = c(r), w = Math.min(Math.max(x ? t : S, 1), e), T = n((t) => {
196
+ let { t: v } = M(), x = t !== void 0, [S, C] = c(r), w = Math.min(Math.max(x ? t : S, 1), e), T = n((t) => {
197
197
  let n = Math.min(Math.max(t, 1), e);
198
198
  x || C(n), i?.(n);
199
199
  }, [
@@ -205,7 +205,7 @@ var Ee = t(function({ totalPages: e, page: t, defaultPage: r = 1, onChange: i, s
205
205
  "transition-colors duration-150 cursor-pointer",
206
206
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-epfl-canard",
207
207
  W[l]
208
- ].join(" "), j = (e) => [A, e ? "bg-epfl-canard text-white" : "text-text-primary hover:bg-bg-tertiary"].filter(Boolean).join(" "), M = (e) => [
208
+ ].join(" "), ee = (e) => [A, e ? "bg-epfl-canard text-white" : "text-text-primary hover:bg-bg-tertiary"].filter(Boolean).join(" "), j = (e) => [
209
209
  A,
210
210
  "text-text-secondary hover:bg-bg-tertiary",
211
211
  (u || e) && "opacity-40 pointer-events-none"
@@ -220,7 +220,7 @@ var Ee = t(function({ totalPages: e, page: t, defaultPage: r = 1, onChange: i, s
220
220
  type: "button",
221
221
  "aria-label": v("common.first"),
222
222
  disabled: u || O,
223
- className: M(O),
223
+ className: j(O),
224
224
  onClick: () => T(1),
225
225
  children: /* @__PURE__ */ d(g, {
226
226
  size: D,
@@ -231,7 +231,7 @@ var Ee = t(function({ totalPages: e, page: t, defaultPage: r = 1, onChange: i, s
231
231
  type: "button",
232
232
  "aria-label": v("common.previous"),
233
233
  disabled: u || O,
234
- className: M(O),
234
+ className: j(O),
235
235
  onClick: () => T(w - 1),
236
236
  children: /* @__PURE__ */ d(y, {
237
237
  size: D,
@@ -250,7 +250,7 @@ var Ee = t(function({ totalPages: e, page: t, defaultPage: r = 1, onChange: i, s
250
250
  "aria-current": t ? "page" : void 0,
251
251
  "aria-label": v("common.goToPage", { page: e }),
252
252
  disabled: u,
253
- className: [j(t), u && "opacity-40 pointer-events-none"].filter(Boolean).join(" "),
253
+ className: [ee(t), u && "opacity-40 pointer-events-none"].filter(Boolean).join(" "),
254
254
  onClick: () => T(e),
255
255
  children: e
256
256
  }, e);
@@ -259,7 +259,7 @@ var Ee = t(function({ totalPages: e, page: t, defaultPage: r = 1, onChange: i, s
259
259
  type: "button",
260
260
  "aria-label": v("common.next"),
261
261
  disabled: u || k,
262
- className: M(k),
262
+ className: j(k),
263
263
  onClick: () => T(w + 1),
264
264
  children: /* @__PURE__ */ d(b, {
265
265
  size: D,
@@ -270,7 +270,7 @@ var Ee = t(function({ totalPages: e, page: t, defaultPage: r = 1, onChange: i, s
270
270
  type: "button",
271
271
  "aria-label": v("common.last"),
272
272
  disabled: u || k,
273
- className: M(k),
273
+ className: j(k),
274
274
  onClick: () => T(e),
275
275
  children: /* @__PURE__ */ d(_, {
276
276
  size: D,
@@ -384,7 +384,7 @@ function Oe({ accept: e, multiple: t = !1, maxSize: r, onFilesSelected: i, onRej
384
384
  },
385
385
  className: "shrink-0 p-0.5 rounded-sm text-text-secondary hover:text-text-primary hover:bg-bg-tertiary transition-colors cursor-pointer",
386
386
  "aria-label": `Remove ${e.name}`,
387
- children: /* @__PURE__ */ d(M, { size: 14 })
387
+ children: /* @__PURE__ */ d(j, { size: 14 })
388
388
  })
389
389
  ]
390
390
  }, `${e.name}-${e.size}-${t}`))
@@ -606,7 +606,7 @@ function Re({ value: e, label: t, description: n, disabled: r }) {
606
606
  q.Item = Re;
607
607
  //#endregion
608
608
  //#region src/theme/reactSelectStyles.ts
609
- var J = (e) => ({
609
+ var ze = (e) => ({
610
610
  ...e,
611
611
  borderRadius: 8,
612
612
  colors: {
@@ -629,7 +629,7 @@ var J = (e) => ({
629
629
  danger: "var(--color-error)",
630
630
  dangerLight: "var(--color-error-bg)"
631
631
  }
632
- }), Y = {
632
+ }), J = {
633
633
  control: ({ isFocused: e }) => `!shadow-sm !rounded-md !border-border ${e ? "!border-primary !ring-1 !ring-primary" : ""}`,
634
634
  menu: () => "!rounded-lg !shadow-lg !border !border-border",
635
635
  option: ({ isFocused: e, isSelected: t }) => `${t ? "!bg-primary !text-white" : e ? "!bg-bg-tertiary" : ""}`,
@@ -637,7 +637,7 @@ var J = (e) => ({
637
637
  };
638
638
  //#endregion
639
639
  //#region src/components/ui/Select.tsx
640
- function ze({ label: e, helperText: t, error: n, className: r = "", ...i }) {
640
+ function Be({ label: e, helperText: t, error: n, className: r = "", ...i }) {
641
641
  let o = a(), s = i.inputId ?? o, c = `${s}-helper`, l = !!n;
642
642
  return /* @__PURE__ */ f("div", {
643
643
  className: `flex flex-col gap-1.5 ${r}`,
@@ -647,9 +647,9 @@ function ze({ label: e, helperText: t, error: n, className: r = "", ...i }) {
647
647
  className: "text-small font-medium text-text-primary",
648
648
  children: e
649
649
  }),
650
- /* @__PURE__ */ d(ne, {
650
+ /* @__PURE__ */ d(re, {
651
651
  inputId: s,
652
- theme: J,
652
+ theme: ze,
653
653
  menuPortalTarget: document.body,
654
654
  styles: {
655
655
  menuPortal: (e) => ({
@@ -659,9 +659,9 @@ function ze({ label: e, helperText: t, error: n, className: r = "", ...i }) {
659
659
  ...i.styles
660
660
  },
661
661
  classNames: {
662
- ...Y,
662
+ ...J,
663
663
  control: (e) => {
664
- let t = Y.control?.(e) ?? "";
664
+ let t = J.control?.(e) ?? "";
665
665
  return l ? `${t} !border-error !focus:ring-error` : t;
666
666
  }
667
667
  },
@@ -679,7 +679,7 @@ function ze({ label: e, helperText: t, error: n, className: r = "", ...i }) {
679
679
  }
680
680
  //#endregion
681
681
  //#region src/components/ui/Switch.tsx
682
- var Be = t(function({ label: e, helperText: t, className: n = "", id: r, disabled: i, ...o }, s) {
682
+ var Ve = t(function({ label: e, helperText: t, className: n = "", id: r, disabled: i, ...o }, s) {
683
683
  let c = a(), l = r ?? c, u = `${l}-helper`;
684
684
  return /* @__PURE__ */ f("div", {
685
685
  className: `flex flex-col gap-1 ${n}`,
@@ -722,7 +722,7 @@ var Be = t(function({ label: e, helperText: t, className: n = "", id: r, disable
722
722
  children: t
723
723
  })]
724
724
  });
725
- }), Ve = t(function({ label: e, helperText: t, error: r, autoGrow: o = !1, minRows: c = 3, className: l = "", id: u, disabled: p, onChange: m, ...h }, g) {
725
+ }), He = t(function({ label: e, helperText: t, error: r, autoGrow: o = !1, minRows: c = 3, className: l = "", id: u, disabled: p, onChange: m, ...h }, g) {
726
726
  let _ = a(), v = u ?? _, y = `${v}-helper`, b = !!r, x = s(null), S = n(() => {
727
727
  let e = x.current;
728
728
  !e || !o || (e.style.height = "auto", e.style.height = `${e.scrollHeight}px`);
@@ -772,20 +772,20 @@ var Be = t(function({ label: e, helperText: t, className: n = "", id: r, disable
772
772
  })
773
773
  ]
774
774
  });
775
- }), He = e({
775
+ }), Ue = e({
776
776
  close: () => {},
777
777
  getItemProps: () => ({}),
778
778
  activeIndex: null,
779
779
  setActiveIndex: () => {}
780
780
  });
781
- function Ue() {
781
+ function We() {
782
782
  return /* @__PURE__ */ d("div", {
783
783
  role: "separator",
784
784
  className: "my-1 border-t border-border"
785
785
  });
786
786
  }
787
- var We = t(function({ children: e, icon: t, danger: n = !1, disabled: i = !1, onClick: a, className: o = "", ...s }, c) {
788
- let { close: l } = r(He);
787
+ var Ge = t(function({ children: e, icon: t, danger: n = !1, disabled: i = !1, onClick: a, className: o = "", ...s }, c) {
788
+ let { close: l } = r(Ue);
789
789
  return /* @__PURE__ */ f("button", {
790
790
  ref: c,
791
791
  type: "button",
@@ -808,22 +808,22 @@ var We = t(function({ children: e, icon: t, danger: n = !1, disabled: i = !1, on
808
808
  }), e]
809
809
  });
810
810
  });
811
- function Ge({ trigger: e, children: t, placement: r = "bottom-start", className: i = "" }) {
812
- let [a, o] = c(!1), [l, p] = c(null), m = s([]), { refs: h, floatingStyles: g, context: _ } = B({
811
+ function Ke({ trigger: e, children: t, placement: r = "bottom-start", className: i = "" }) {
812
+ let [a, o] = c(!1), [l, p] = c(null), m = s([]), { refs: h, floatingStyles: g, context: _ } = z({
813
813
  open: a,
814
814
  onOpenChange: o,
815
815
  placement: r,
816
816
  middleware: [
817
- L(4),
818
- I(),
819
- R({ padding: 8 })
817
+ I(4),
818
+ F(),
819
+ L({ padding: 8 })
820
820
  ],
821
- whileElementsMounted: F
822
- }), { getReferenceProps: v, getFloatingProps: y, getItemProps: b } = V([
823
- ae(_),
824
- z(_),
825
- H(_, { role: "menu" }),
826
- ce(_, {
821
+ whileElementsMounted: P
822
+ }), { getReferenceProps: v, getFloatingProps: y, getItemProps: b } = B([
823
+ oe(_),
824
+ R(_),
825
+ V(_, { role: "menu" }),
826
+ le(_, {
827
827
  listRef: m,
828
828
  activeIndex: l,
829
829
  onNavigate: p,
@@ -835,7 +835,7 @@ function Ge({ trigger: e, children: t, placement: r = "bottom-start", className:
835
835
  className: "inline-flex",
836
836
  ...v(),
837
837
  children: e
838
- }), a && /* @__PURE__ */ d(P, { children: /* @__PURE__ */ d(re, {
838
+ }), a && /* @__PURE__ */ d(N, { children: /* @__PURE__ */ d(ie, {
839
839
  context: _,
840
840
  modal: !1,
841
841
  children: /* @__PURE__ */ d("div", {
@@ -847,7 +847,7 @@ function Ge({ trigger: e, children: t, placement: r = "bottom-start", className:
847
847
  i
848
848
  ].join(" "),
849
849
  ...y(),
850
- children: /* @__PURE__ */ d(He.Provider, {
850
+ children: /* @__PURE__ */ d(Ue.Provider, {
851
851
  value: {
852
852
  close: x,
853
853
  getItemProps: b,
@@ -861,28 +861,28 @@ function Ge({ trigger: e, children: t, placement: r = "bottom-start", className:
861
861
  }
862
862
  //#endregion
863
863
  //#region src/components/ui/Popover.tsx
864
- function Ke({ trigger: e, children: t, placement: n = "bottom", open: r, onOpenChange: i, className: a = "" }) {
865
- let [o, s] = c(!1), l = r !== void 0, p = l ? r : o, { refs: m, floatingStyles: h, context: g } = B({
864
+ function qe({ trigger: e, children: t, placement: n = "bottom", open: r, onOpenChange: i, className: a = "" }) {
865
+ let [o, s] = c(!1), l = r !== void 0, p = l ? r : o, { refs: m, floatingStyles: h, context: g } = z({
866
866
  open: p,
867
867
  onOpenChange: l ? (e) => i?.(e) : s,
868
868
  placement: n,
869
869
  middleware: [
870
- L(8),
871
- I(),
872
- R({ padding: 8 })
870
+ I(8),
871
+ F(),
872
+ L({ padding: 8 })
873
873
  ],
874
- whileElementsMounted: F
875
- }), { getReferenceProps: _, getFloatingProps: v } = V([
876
- ae(g),
877
- z(g),
878
- H(g)
874
+ whileElementsMounted: P
875
+ }), { getReferenceProps: _, getFloatingProps: v } = B([
876
+ oe(g),
877
+ R(g),
878
+ V(g)
879
879
  ]);
880
880
  return /* @__PURE__ */ f(u, { children: [/* @__PURE__ */ d("span", {
881
881
  ref: m.setReference,
882
882
  className: "inline-flex",
883
883
  ..._(),
884
884
  children: e
885
- }), p && /* @__PURE__ */ d(P, { children: /* @__PURE__ */ d(re, {
885
+ }), p && /* @__PURE__ */ d(N, { children: /* @__PURE__ */ d(ie, {
886
886
  context: g,
887
887
  modal: !1,
888
888
  children: /* @__PURE__ */ d("div", {
@@ -900,12 +900,12 @@ function Ke({ trigger: e, children: t, placement: n = "bottom", open: r, onOpenC
900
900
  }
901
901
  //#endregion
902
902
  //#region src/components/ui/Tabs.tsx
903
- var qe = e({
903
+ var Je = e({
904
904
  activeValue: "",
905
905
  idPrefix: ""
906
906
  });
907
- function Je({ value: e, children: t, className: n = "" }) {
908
- let { activeValue: i, idPrefix: a } = r(qe), o = i === e;
907
+ function Ye({ value: e, children: t, className: n = "" }) {
908
+ let { activeValue: i, idPrefix: a } = r(Je), o = i === e;
909
909
  return /* @__PURE__ */ d("div", {
910
910
  id: `${a}-panel-${e}`,
911
911
  role: "tabpanel",
@@ -916,7 +916,7 @@ function Je({ value: e, children: t, className: n = "" }) {
916
916
  children: o && t
917
917
  });
918
918
  }
919
- function Ye({ items: e, value: t, defaultValue: r, onChange: i, children: o, className: l = "" }) {
919
+ function Xe({ items: e, value: t, defaultValue: r, onChange: i, children: o, className: l = "" }) {
920
920
  let u = a().replace(/:/g, ""), p = s(null), m = t !== void 0, [h, g] = c(() => r ?? e.find((e) => !e.disabled)?.value ?? e[0]?.value ?? ""), _ = m ? t : h, v = n((e) => {
921
921
  m || g(e), i?.(e);
922
922
  }, [m, i]), y = e.filter((e) => !e.disabled), b = (e) => {
@@ -941,7 +941,7 @@ function Ye({ items: e, value: t, defaultValue: r, onChange: i, children: o, cla
941
941
  let r = y[n];
942
942
  r && (v(r.value), (p.current?.querySelector(`[data-tab-value="${r.value}"]`))?.focus());
943
943
  };
944
- return /* @__PURE__ */ d(qe.Provider, {
944
+ return /* @__PURE__ */ d(Je.Provider, {
945
945
  value: {
946
946
  activeValue: _,
947
947
  idPrefix: u
@@ -985,39 +985,39 @@ function Ye({ items: e, value: t, defaultValue: r, onChange: i, children: o, cla
985
985
  }
986
986
  //#endregion
987
987
  //#region src/components/ui/Tooltip.tsx
988
- var Xe = {
988
+ var Ze = {
989
989
  top: "bottom",
990
990
  bottom: "top",
991
991
  left: "right",
992
992
  right: "left"
993
993
  };
994
- function Ze({ children: e, content: t, placement: n = "top", delay: r = 200, className: i = "" }) {
995
- let [a, o] = c(!1), l = s(null), { refs: p, floatingStyles: m, context: h, middlewareData: g, placement: _ } = B({
994
+ function Y({ children: e, content: t, placement: n = "top", delay: r = 200, className: i = "" }) {
995
+ let [a, o] = c(!1), l = s(null), { refs: p, floatingStyles: m, context: h, middlewareData: g, placement: _ } = z({
996
996
  open: a,
997
997
  onOpenChange: o,
998
998
  placement: n,
999
999
  middleware: [
1000
- L(8),
1001
- I(),
1002
- R({ padding: 8 }),
1003
- ie({ element: l })
1000
+ I(8),
1001
+ F(),
1002
+ L({ padding: 8 }),
1003
+ ae({ element: l })
1004
1004
  ],
1005
- whileElementsMounted: F
1006
- }), { getReferenceProps: v, getFloatingProps: y } = V([
1007
- se(h, {
1005
+ whileElementsMounted: P
1006
+ }), { getReferenceProps: v, getFloatingProps: y } = B([
1007
+ ce(h, {
1008
1008
  delay: r,
1009
1009
  move: !1
1010
1010
  }),
1011
- oe(h),
1012
- z(h),
1013
- H(h, { role: "tooltip" })
1011
+ se(h),
1012
+ R(h),
1013
+ V(h, { role: "tooltip" })
1014
1014
  ]), b = _.split("-")[0], x = g.arrow?.x, S = g.arrow?.y;
1015
1015
  return /* @__PURE__ */ f(u, { children: [/* @__PURE__ */ d("span", {
1016
1016
  ref: p.setReference,
1017
1017
  className: "inline-flex",
1018
1018
  ...v(),
1019
1019
  children: e
1020
- }), a && t && /* @__PURE__ */ d(P, { children: /* @__PURE__ */ f("div", {
1020
+ }), a && t && /* @__PURE__ */ d(N, { children: /* @__PURE__ */ f("div", {
1021
1021
  ref: p.setFloating,
1022
1022
  style: m,
1023
1023
  role: "tooltip",
@@ -1034,7 +1034,7 @@ function Ze({ children: e, content: t, placement: n = "top", delay: r = 200, cla
1034
1034
  style: {
1035
1035
  left: x == null ? "" : `${x}px`,
1036
1036
  top: S == null ? "" : `${S}px`,
1037
- [Xe[b]]: "-4px"
1037
+ [Ze[b]]: "-4px"
1038
1038
  }
1039
1039
  })]
1040
1040
  }) })] });
@@ -1042,7 +1042,7 @@ function Ze({ children: e, content: t, placement: n = "top", delay: r = 200, cla
1042
1042
  //#endregion
1043
1043
  //#region src/hooks/useLanguage.ts
1044
1044
  function Qe() {
1045
- let { i18n: e } = N(), t = e.language ?? "en", r = n((t) => {
1045
+ let { i18n: e } = M(), t = e.language ?? "en", r = n((t) => {
1046
1046
  e.changeLanguage(t);
1047
1047
  }, [e]);
1048
1048
  return {
@@ -1129,11 +1129,11 @@ function ot() {
1129
1129
  //#endregion
1130
1130
  //#region src/components/ui/ThemeToggle.tsx
1131
1131
  function st({ variant: e = "ghost", size: t = "md", className: n }) {
1132
- let { isDark: r, toggleTheme: i } = ot(), { t: a } = N();
1132
+ let { isDark: r, toggleTheme: i } = ot(), { t: a } = M();
1133
1133
  return /* @__PURE__ */ d(Ce, {
1134
1134
  variant: e,
1135
1135
  size: t,
1136
- icon: d(r ? j : T, { size: 16 }),
1136
+ icon: d(r ? ee : T, { size: 16 }),
1137
1137
  "aria-label": a("theme.toggleTheme"),
1138
1138
  onClick: i,
1139
1139
  className: n
@@ -1149,7 +1149,7 @@ function lt({ logo: e, logoUrl: t, categories: n = [], activeCategoryId: r, onCa
1149
1149
  /* @__PURE__ */ d("button", {
1150
1150
  type: "button",
1151
1151
  onClick: o,
1152
- className: "mr-sm flex size-9 items-center justify-center rounded-md text-text-secondary hover:bg-bg-tertiary hover:text-text-primary lg:hidden",
1152
+ className: "mr-sm flex size-9 items-center justify-center rounded-md text-text-secondary hover:bg-bg-tertiary hover:text-text-primary poesis-mobile-only",
1153
1153
  "aria-label": "Open menu",
1154
1154
  children: /* @__PURE__ */ d(w, { size: 22 })
1155
1155
  }),
@@ -1162,7 +1162,7 @@ function lt({ logo: e, logoUrl: t, categories: n = [], activeCategoryId: r, onCa
1162
1162
  })
1163
1163
  }),
1164
1164
  /* @__PURE__ */ d("nav", {
1165
- className: "hidden flex-1 items-center gap-xs lg:flex",
1165
+ className: "poesis-desktop-flex flex-1 items-center gap-xs",
1166
1166
  "aria-label": "Main categories",
1167
1167
  children: n.map((e) => {
1168
1168
  let t = e.id === r;
@@ -1175,7 +1175,7 @@ function lt({ logo: e, logoUrl: t, categories: n = [], activeCategoryId: r, onCa
1175
1175
  }, e.id);
1176
1176
  })
1177
1177
  }),
1178
- /* @__PURE__ */ d("div", { className: "flex-1 lg:hidden" }),
1178
+ /* @__PURE__ */ d("div", { className: "flex-1 poesis-mobile-only" }),
1179
1179
  a && /* @__PURE__ */ d("div", {
1180
1180
  className: "flex items-center gap-xs",
1181
1181
  children: a
@@ -1210,7 +1210,7 @@ function pt(e, t) {
1210
1210
  }
1211
1211
  function mt({ sections: e = [], activeLinkId: t, onLinkClick: n, collapsed: r = !1, foldable: i = !1, homeLink: a }) {
1212
1212
  return /* @__PURE__ */ d("aside", {
1213
- className: ["hidden lg:flex flex-col border-r border-border bg-bg-secondary overflow-y-auto transition-[width] duration-200", r ? "w-16" : "w-64"].join(" "),
1213
+ className: ["poesis-desktop-flex flex-col border-r border-border bg-bg-secondary overflow-y-auto transition-[width] duration-200", r ? "w-16" : "w-64"].join(" "),
1214
1214
  children: /* @__PURE__ */ d("nav", {
1215
1215
  "aria-label": "Page navigation",
1216
1216
  children: /* @__PURE__ */ f("ul", {
@@ -1220,7 +1220,7 @@ function mt({ sections: e = [], activeLinkId: t, onLinkClick: n, collapsed: r =
1220
1220
  children: /* @__PURE__ */ f("button", {
1221
1221
  type: "button",
1222
1222
  onClick: () => n?.(a.href),
1223
- title: r ? a.label : void 0,
1223
+ title: r && typeof a.label == "string" ? a.label : void 0,
1224
1224
  className: [
1225
1225
  "flex w-full items-center gap-3 px-4 py-3.5 text-sm no-underline font-medium transition-colors",
1226
1226
  r ? "justify-center" : "",
@@ -1232,7 +1232,7 @@ function mt({ sections: e = [], activeLinkId: t, onLinkClick: n, collapsed: r =
1232
1232
  className: "shrink-0"
1233
1233
  }), !r && /* @__PURE__ */ d("span", { children: a.label })]
1234
1234
  })
1235
- }), e.map((e) => /* @__PURE__ */ d(ht, {
1235
+ }), e.map((e) => /* @__PURE__ */ d(gt, {
1236
1236
  section: e,
1237
1237
  activeLinkId: t,
1238
1238
  onLinkClick: n,
@@ -1243,7 +1243,21 @@ function mt({ sections: e = [], activeLinkId: t, onLinkClick: n, collapsed: r =
1243
1243
  })
1244
1244
  });
1245
1245
  }
1246
- function ht({ section: e, activeLinkId: t, onLinkClick: n, collapsed: r, foldable: i }) {
1246
+ function ht({ counters: e }) {
1247
+ let t = e?.filter((e) => e.count > 0);
1248
+ return t?.length ? /* @__PURE__ */ d("span", {
1249
+ className: "ml-auto flex items-center gap-1",
1250
+ children: t.map((e, t) => /* @__PURE__ */ d(Y, {
1251
+ content: e.tooltip,
1252
+ placement: "top",
1253
+ children: /* @__PURE__ */ d(H, {
1254
+ color: e.color,
1255
+ children: e.count > 99 ? "99+" : e.count
1256
+ })
1257
+ }, t))
1258
+ }) : null;
1259
+ }
1260
+ function gt({ section: e, activeLinkId: t, onLinkClick: n, collapsed: r, foldable: i }) {
1247
1261
  let { isOpen: a, toggle: o } = pt(e.title, i);
1248
1262
  return /* @__PURE__ */ f("li", {
1249
1263
  className: "border-b border-border last:border-b-0",
@@ -1262,14 +1276,18 @@ function ht({ section: e, activeLinkId: t, onLinkClick: n, collapsed: r, foldabl
1262
1276
  return /* @__PURE__ */ d("li", { children: /* @__PURE__ */ f("button", {
1263
1277
  type: "button",
1264
1278
  onClick: () => n?.(e.href),
1265
- title: r ? e.label : void 0,
1279
+ title: r ? e.titleText ?? (typeof e.label == "string" ? e.label : void 0) : void 0,
1266
1280
  className: [
1267
1281
  "flex w-full items-center gap-sm px-4 py-3 text-sm no-underline transition-colors",
1268
1282
  r ? "justify-center" : "",
1269
1283
  i ? "bg-bg-tertiary text-text-primary font-medium border-r-2 border-red-600" : "text-text-secondary hover:bg-bg-secondary hover:text-text-primary"
1270
1284
  ].join(" "),
1271
1285
  "aria-current": i ? "page" : void 0,
1272
- children: [e.icon && /* @__PURE__ */ d(e.icon, { size: 18 }), !r && /* @__PURE__ */ d("span", { children: e.label })]
1286
+ children: [
1287
+ e.icon && /* @__PURE__ */ d(e.icon, { size: 18 }),
1288
+ !r && /* @__PURE__ */ d("span", { children: e.label }),
1289
+ !r && /* @__PURE__ */ d(ht, { counters: e.counters })
1290
+ ]
1273
1291
  }) }, e.id);
1274
1292
  })
1275
1293
  })]
@@ -1277,7 +1295,7 @@ function ht({ section: e, activeLinkId: t, onLinkClick: n, collapsed: r, foldabl
1277
1295
  }
1278
1296
  //#endregion
1279
1297
  //#region src/components/layout/BurgerDrawer.tsx
1280
- function gt({ open: e, onClose: t, categories: n = [], activeCategoryId: r, onCategoryChange: a, sections: o = [], activeLinkId: c, onLinkClick: l }) {
1298
+ function _t({ open: e, onClose: t, categories: n = [], activeCategoryId: r, onCategoryChange: a, sections: o = [], activeLinkId: c, onLinkClick: l }) {
1281
1299
  let p = s(null);
1282
1300
  return i(() => {
1283
1301
  if (!e) return;
@@ -1290,7 +1308,7 @@ function gt({ open: e, onClose: t, categories: n = [], activeCategoryId: r, onCa
1290
1308
  }, [e]), i(() => (e ? document.body.style.overflow = "hidden" : document.body.style.overflow = "", () => {
1291
1309
  document.body.style.overflow = "";
1292
1310
  }), [e]), /* @__PURE__ */ f(u, { children: [/* @__PURE__ */ d("div", {
1293
- className: ["fixed inset-0 z-50 bg-black/40 transition-opacity lg:hidden", e ? "opacity-100" : "pointer-events-none opacity-0"].join(" "),
1311
+ className: ["fixed inset-0 z-50 bg-black/40 transition-opacity poesis-mobile-only", e ? "opacity-100" : "pointer-events-none opacity-0"].join(" "),
1294
1312
  onClick: t,
1295
1313
  "aria-hidden": "true"
1296
1314
  }), /* @__PURE__ */ f("div", {
@@ -1299,7 +1317,7 @@ function gt({ open: e, onClose: t, categories: n = [], activeCategoryId: r, onCa
1299
1317
  role: "dialog",
1300
1318
  "aria-modal": "true",
1301
1319
  "aria-label": "Navigation menu",
1302
- className: ["fixed inset-y-0 left-0 z-50 flex w-72 flex-col bg-bg-primary shadow-xl transition-transform duration-200 lg:hidden", e ? "translate-x-0" : "-translate-x-full"].join(" "),
1320
+ className: ["fixed inset-y-0 left-0 z-50 flex w-72 flex-col bg-bg-primary shadow-xl transition-transform duration-200 poesis-mobile-only", e ? "translate-x-0" : "-translate-x-full"].join(" "),
1303
1321
  children: [/* @__PURE__ */ f("div", {
1304
1322
  className: "flex h-14 items-center justify-between border-b border-border px-md",
1305
1323
  children: [/* @__PURE__ */ d("span", {
@@ -1310,7 +1328,7 @@ function gt({ open: e, onClose: t, categories: n = [], activeCategoryId: r, onCa
1310
1328
  onClick: t,
1311
1329
  className: "flex size-9 items-center justify-center rounded-md text-text-secondary hover:bg-bg-tertiary hover:text-text-primary",
1312
1330
  "aria-label": "Close menu",
1313
- children: /* @__PURE__ */ d(te, { size: 18 })
1331
+ children: /* @__PURE__ */ d(ne, { size: 18 })
1314
1332
  })]
1315
1333
  }), /* @__PURE__ */ f("div", {
1316
1334
  className: "flex-1 overflow-y-auto p-sm",
@@ -1327,7 +1345,7 @@ function gt({ open: e, onClose: t, categories: n = [], activeCategoryId: r, onCa
1327
1345
  className: ["flex items-center gap-sm rounded-md px-sm py-xs text-small font-medium transition-colors", e.id === r ? "bg-primary/10 text-primary" : "text-text-secondary hover:bg-bg-tertiary hover:text-text-primary"].join(" "),
1328
1346
  children: [e.icon && /* @__PURE__ */ d(e.icon, { size: 16 }), e.label]
1329
1347
  }, e.id))]
1330
- }), o.map((e) => /* @__PURE__ */ d(_t, {
1348
+ }), o.map((e) => /* @__PURE__ */ d(yt, {
1331
1349
  section: e,
1332
1350
  activeLinkId: c,
1333
1351
  onLinkClick: (e) => {
@@ -1337,7 +1355,21 @@ function gt({ open: e, onClose: t, categories: n = [], activeCategoryId: r, onCa
1337
1355
  })]
1338
1356
  })] });
1339
1357
  }
1340
- function _t({ section: e, activeLinkId: t, onLinkClick: n }) {
1358
+ function vt({ counters: e }) {
1359
+ let t = e?.filter((e) => e.count > 0);
1360
+ return t?.length ? /* @__PURE__ */ d("span", {
1361
+ className: "ml-auto flex items-center gap-1",
1362
+ children: t.map((e, t) => /* @__PURE__ */ d(Y, {
1363
+ content: e.tooltip,
1364
+ placement: "top",
1365
+ children: /* @__PURE__ */ d(H, {
1366
+ color: e.color,
1367
+ children: e.count > 99 ? "99+" : e.count
1368
+ })
1369
+ }, t))
1370
+ }) : null;
1371
+ }
1372
+ function yt({ section: e, activeLinkId: t, onLinkClick: n }) {
1341
1373
  let [r, i] = c(!0);
1342
1374
  return /* @__PURE__ */ f("div", {
1343
1375
  className: "mb-xs flex flex-col",
@@ -1358,7 +1390,11 @@ function _t({ section: e, activeLinkId: t, onLinkClick: n }) {
1358
1390
  onClick: () => n?.(e.href),
1359
1391
  className: ["flex w-full items-center gap-sm rounded-md px-sm py-xs text-small transition-colors", r ? "bg-primary/10 font-medium text-primary" : "text-text-secondary hover:bg-bg-tertiary hover:text-text-primary"].join(" "),
1360
1392
  "aria-current": r ? "page" : void 0,
1361
- children: [e.icon && /* @__PURE__ */ d(e.icon, { size: 18 }), /* @__PURE__ */ d("span", { children: e.label })]
1393
+ children: [
1394
+ e.icon && /* @__PURE__ */ d(e.icon, { size: 18 }),
1395
+ /* @__PURE__ */ d("span", { children: e.label }),
1396
+ /* @__PURE__ */ d(vt, { counters: e.counters })
1397
+ ]
1362
1398
  }) }, e.id);
1363
1399
  })
1364
1400
  })]
@@ -1366,8 +1402,8 @@ function _t({ section: e, activeLinkId: t, onLinkClick: n }) {
1366
1402
  }
1367
1403
  //#endregion
1368
1404
  //#region src/components/layout/Footer.tsx
1369
- var vt = "https://www.epfl.ch/campus/services/website//wp-content/themes/wp-theme-2018/assets/svg/epfl-logo.svg?refresh=now", yt = () => (/* @__PURE__ */ new Date()).getFullYear();
1370
- function bt() {
1405
+ var bt = "https://www.epfl.ch/campus/services/website//wp-content/themes/wp-theme-2018/assets/svg/epfl-logo.svg?refresh=now", xt = () => (/* @__PURE__ */ new Date()).getFullYear();
1406
+ function St() {
1371
1407
  return /* @__PURE__ */ d("footer", {
1372
1408
  role: "contentinfo",
1373
1409
  className: "bg-bg-secondary border-t border-border mt-auto",
@@ -1380,7 +1416,7 @@ function bt() {
1380
1416
  children: /* @__PURE__ */ d("a", {
1381
1417
  href: "https://www.epfl.ch/en/",
1382
1418
  children: /* @__PURE__ */ d("img", {
1383
- src: vt,
1419
+ src: bt,
1384
1420
  alt: "Logo EPFL",
1385
1421
  className: "h-8 w-auto",
1386
1422
  style: {
@@ -1432,7 +1468,7 @@ function bt() {
1432
1468
  className: "m-0 text-text-muted text-small",
1433
1469
  children: [
1434
1470
  "© ",
1435
- yt(),
1471
+ xt(),
1436
1472
  " EPFL, all rights reserved"
1437
1473
  ]
1438
1474
  })]
@@ -1471,8 +1507,8 @@ function bt() {
1471
1507
  }
1472
1508
  //#endregion
1473
1509
  //#region src/components/layout/UserMenu.tsx
1474
- function xt({ onLogin: e }) {
1475
- let { t } = N();
1510
+ function Ct({ onLogin: e }) {
1511
+ let { t } = M();
1476
1512
  return /* @__PURE__ */ d(be, {
1477
1513
  variant: "primary",
1478
1514
  size: "sm",
@@ -1481,10 +1517,10 @@ function xt({ onLogin: e }) {
1481
1517
  children: t("auth.login")
1482
1518
  });
1483
1519
  }
1484
- function St({ user: e, onLogout: t }) {
1485
- let { t: n } = N();
1486
- return /* @__PURE__ */ f(Ge, {
1487
- trigger: /* @__PURE__ */ d(fe, {
1520
+ function wt({ user: e, onLogout: t }) {
1521
+ let { t: n } = M();
1522
+ return /* @__PURE__ */ f(Ke, {
1523
+ trigger: /* @__PURE__ */ d(pe, {
1488
1524
  src: e.avatarUrl,
1489
1525
  name: e.name,
1490
1526
  size: "sm",
@@ -1502,8 +1538,8 @@ function St({ user: e, onLogout: t }) {
1502
1538
  children: e.email
1503
1539
  })]
1504
1540
  }),
1505
- /* @__PURE__ */ d(Ue, {}),
1506
- /* @__PURE__ */ d(We, {
1541
+ /* @__PURE__ */ d(We, {}),
1542
+ /* @__PURE__ */ d(Ge, {
1507
1543
  icon: /* @__PURE__ */ d(m, { size: 14 }),
1508
1544
  onClick: t,
1509
1545
  children: n("auth.logout")
@@ -1513,7 +1549,7 @@ function St({ user: e, onLogout: t }) {
1513
1549
  }
1514
1550
  //#endregion
1515
1551
  //#region src/components/layout/PageShell.tsx
1516
- function Ct({ children: e, logo: t, logoUrl: n, categories: r = [], activeCategoryId: i, onCategoryChange: a, sections: o = [], activeLinkId: s, onLinkClick: l, actions: u, sideNavCollapsed: p = !1, sideNavFoldable: m = !1, sideNavHomeLink: h, showFooter: g = !0 }) {
1552
+ function Tt({ children: e, logo: t, logoUrl: n, categories: r = [], activeCategoryId: i, onCategoryChange: a, sections: o = [], activeLinkId: s, onLinkClick: l, actions: u, sideNavCollapsed: p = !1, sideNavFoldable: m = !1, sideNavHomeLink: h, showFooter: g = !0 }) {
1517
1553
  let [_, v] = c(!1);
1518
1554
  return /* @__PURE__ */ f("div", {
1519
1555
  className: "flex h-screen flex-col bg-bg-primary",
@@ -1545,10 +1581,10 @@ function Ct({ children: e, logo: t, logoUrl: n, categories: r = [], activeCatego
1545
1581
  className: "mx-auto max-w-[var(--container-6xl)]",
1546
1582
  children: e
1547
1583
  })
1548
- }), g && /* @__PURE__ */ d(bt, {})]
1584
+ }), g && /* @__PURE__ */ d(St, {})]
1549
1585
  })]
1550
1586
  }),
1551
- /* @__PURE__ */ d(gt, {
1587
+ /* @__PURE__ */ d(_t, {
1552
1588
  open: _,
1553
1589
  onClose: () => v(!1),
1554
1590
  categories: r,
@@ -1567,7 +1603,7 @@ function Ct({ children: e, logo: t, logoUrl: n, categories: r = [], activeCatego
1567
1603
  }
1568
1604
  //#endregion
1569
1605
  //#region src/components/data-display/Card.tsx
1570
- var wt = t(function({ header: e, footer: t, actions: n, noPadding: r = !1, className: i = "", children: a, ...o }, s) {
1606
+ var Et = t(function({ header: e, footer: t, actions: n, noPadding: r = !1, className: i = "", children: a, ...o }, s) {
1571
1607
  let c = t || n;
1572
1608
  return /* @__PURE__ */ f("div", {
1573
1609
  ref: s,
@@ -1601,7 +1637,7 @@ var wt = t(function({ header: e, footer: t, actions: n, noPadding: r = !1, class
1601
1637
  })
1602
1638
  ]
1603
1639
  });
1604
- }), Tt = t(function({ items: e, layout: t = "horizontal", dividers: n = !0, className: r = "", ...i }, a) {
1640
+ }), Dt = t(function({ items: e, layout: t = "horizontal", dividers: n = !0, className: r = "", ...i }, a) {
1605
1641
  let o = t === "horizontal";
1606
1642
  return /* @__PURE__ */ d("dl", {
1607
1643
  ref: a,
@@ -1622,7 +1658,7 @@ var wt = t(function({ header: e, footer: t, actions: n, noPadding: r = !1, class
1622
1658
  })]
1623
1659
  }, t))
1624
1660
  });
1625
- }), Et = t(function({ illustration: e, title: t, description: n, action: r, className: i = "", ...a }, o) {
1661
+ }), Ot = t(function({ illustration: e, title: t, description: n, action: r, className: i = "", ...a }, o) {
1626
1662
  return /* @__PURE__ */ f("div", {
1627
1663
  ref: o,
1628
1664
  className: ["flex flex-col items-center justify-center text-center py-2xl px-lg", i].filter(Boolean).join(" "),
@@ -1649,7 +1685,7 @@ var wt = t(function({ header: e, footer: t, actions: n, noPadding: r = !1, class
1649
1685
  });
1650
1686
  //#endregion
1651
1687
  //#region src/components/data-display/Table.tsx
1652
- function Dt(e, t) {
1688
+ function kt(e, t) {
1653
1689
  if (!e.sortValue || t.length === 0) return "text";
1654
1690
  for (let n of t) {
1655
1691
  let t = e.sortValue(n);
@@ -1657,7 +1693,7 @@ function Dt(e, t) {
1657
1693
  }
1658
1694
  return "text";
1659
1695
  }
1660
- function Ot({ active: e, direction: t, columnType: n }) {
1696
+ function At({ active: e, direction: t, columnType: n }) {
1661
1697
  return e ? d(n === "numeric" ? t === "asc" ? k : A : t === "asc" ? E : D, {
1662
1698
  size: 14,
1663
1699
  className: "ml-1 inline",
@@ -1668,7 +1704,7 @@ function Ot({ active: e, direction: t, columnType: n }) {
1668
1704
  "aria-hidden": !0
1669
1705
  });
1670
1706
  }
1671
- var kt = t(function({ columns: e, data: t, rowKey: r, striped: i = !1, sort: a, onSortChange: s, emptyContent: l, className: u = "", ...p }, m) {
1707
+ var jt = t(function({ columns: e, data: t, rowKey: r, striped: i = !1, sort: a, onSortChange: s, emptyContent: l, className: u = "", ...p }, m) {
1672
1708
  let [h, g] = c(), _ = a ?? h, v = n((e) => {
1673
1709
  let t = _?.column === e && _.direction === "asc" ? {
1674
1710
  column: e,
@@ -1698,7 +1734,7 @@ var kt = t(function({ columns: e, data: t, rowKey: r, striped: i = !1, sort: a,
1698
1734
  s
1699
1735
  ]), b = o(() => {
1700
1736
  let n = /* @__PURE__ */ new Map();
1701
- for (let r of e) r.sortable && n.set(r.key, Dt(r, t));
1737
+ for (let r of e) r.sortable && n.set(r.key, kt(r, t));
1702
1738
  return n;
1703
1739
  }, [e, t]), x = y.length === 0;
1704
1740
  return /* @__PURE__ */ d("div", {
@@ -1721,7 +1757,7 @@ var kt = t(function({ columns: e, data: t, rowKey: r, striped: i = !1, sort: a,
1721
1757
  "aria-sort": t ? _.direction === "asc" ? "ascending" : "descending" : e.sortable ? "none" : void 0,
1722
1758
  children: /* @__PURE__ */ f("span", {
1723
1759
  className: "inline-flex items-center",
1724
- children: [e.header, e.sortable && /* @__PURE__ */ d(Ot, {
1760
+ children: [e.header, e.sortable && /* @__PURE__ */ d(At, {
1725
1761
  active: t,
1726
1762
  direction: t ? _.direction : void 0,
1727
1763
  columnType: b.get(e.key) ?? "text"
@@ -1746,7 +1782,7 @@ var kt = t(function({ columns: e, data: t, rowKey: r, striped: i = !1, sort: a,
1746
1782
  }, r(t, n))) })]
1747
1783
  })
1748
1784
  });
1749
- }), At = {
1785
+ }), Mt = {
1750
1786
  success: {
1751
1787
  bg: "bg-success-bg",
1752
1788
  border: "border-success/30",
@@ -1763,7 +1799,7 @@ var kt = t(function({ columns: e, data: t, rowKey: r, striped: i = !1, sort: a,
1763
1799
  bg: "bg-error-bg",
1764
1800
  border: "border-error/30",
1765
1801
  text: "text-error",
1766
- icon: ee
1802
+ icon: te
1767
1803
  },
1768
1804
  info: {
1769
1805
  bg: "bg-info-bg",
@@ -1772,8 +1808,8 @@ var kt = t(function({ columns: e, data: t, rowKey: r, striped: i = !1, sort: a,
1772
1808
  icon: C
1773
1809
  }
1774
1810
  };
1775
- function jt({ variant: e, title: t, children: n, dismissible: r = !1, onDismiss: i, className: a = "" }) {
1776
- let [o, s] = c(!0), { bg: l, border: u, text: p, icon: m } = At[e];
1811
+ function Nt({ variant: e, title: t, children: n, dismissible: r = !1, onDismiss: i, className: a = "" }) {
1812
+ let [o, s] = c(!0), { bg: l, border: u, text: p, icon: m } = Mt[e];
1777
1813
  if (!o) return null;
1778
1814
  let h = () => {
1779
1815
  s(!1), i?.();
@@ -1802,19 +1838,19 @@ function jt({ variant: e, title: t, children: n, dismissible: r = !1, onDismiss:
1802
1838
  onClick: h,
1803
1839
  className: "shrink-0 p-1 rounded-sm text-text-secondary hover:text-text-primary hover:bg-bg-tertiary transition-colors cursor-pointer",
1804
1840
  "aria-label": "Dismiss alert",
1805
- children: /* @__PURE__ */ d(M, { size: 16 })
1841
+ children: /* @__PURE__ */ d(j, { size: 16 })
1806
1842
  })
1807
1843
  ]
1808
1844
  });
1809
1845
  }
1810
1846
  //#endregion
1811
1847
  //#region src/components/feedback/Dialog.tsx
1812
- var Mt = {
1848
+ var Pt = {
1813
1849
  sm: "max-w-[24rem]",
1814
1850
  md: "max-w-[32rem]",
1815
1851
  lg: "max-w-[42rem]"
1816
1852
  };
1817
- function Nt({ open: e, onClose: t, title: n, size: r = "md", children: a, footer: o, className: c = "" }) {
1853
+ function Ft({ open: e, onClose: t, title: n, size: r = "md", children: a, footer: o, className: c = "" }) {
1818
1854
  let l = s(null);
1819
1855
  i(() => {
1820
1856
  if (!e) return;
@@ -1841,7 +1877,7 @@ function Nt({ open: e, onClose: t, title: n, size: r = "md", children: a, footer
1841
1877
  e.shiftKey && document.activeElement === n ? (e.preventDefault(), r.focus()) : !e.shiftKey && document.activeElement === r && (e.preventDefault(), n.focus());
1842
1878
  }
1843
1879
  };
1844
- return e ? le(/* @__PURE__ */ f("div", {
1880
+ return e ? ue(/* @__PURE__ */ f("div", {
1845
1881
  style: {
1846
1882
  position: "fixed",
1847
1883
  inset: 0,
@@ -1873,7 +1909,7 @@ function Nt({ open: e, onClose: t, title: n, size: r = "md", children: a, footer
1873
1909
  children: /* @__PURE__ */ f("div", {
1874
1910
  ref: l,
1875
1911
  tabIndex: -1,
1876
- className: `relative z-10 flex flex-col w-full ${Mt[r]} rounded-lg border border-border bg-bg-primary shadow-xl outline-none animate-dialog-in ${c}`,
1912
+ className: `relative z-10 flex flex-col w-full ${Pt[r]} rounded-lg border border-border bg-bg-primary shadow-xl outline-none animate-dialog-in ${c}`,
1877
1913
  children: [
1878
1914
  n && /* @__PURE__ */ f("div", {
1879
1915
  className: "flex items-center justify-between px-lg py-md border-b border-border",
@@ -1886,7 +1922,7 @@ function Nt({ open: e, onClose: t, title: n, size: r = "md", children: a, footer
1886
1922
  onClick: t,
1887
1923
  className: "shrink-0 p-1 rounded-sm text-text-secondary hover:text-text-primary hover:bg-bg-tertiary transition-colors cursor-pointer",
1888
1924
  "aria-label": "Close dialog",
1889
- children: /* @__PURE__ */ d(M, { size: 18 })
1925
+ children: /* @__PURE__ */ d(j, { size: 18 })
1890
1926
  })]
1891
1927
  }),
1892
1928
  /* @__PURE__ */ d("div", {
@@ -1904,8 +1940,8 @@ function Nt({ open: e, onClose: t, title: n, size: r = "md", children: a, footer
1904
1940
  }
1905
1941
  //#endregion
1906
1942
  //#region src/components/feedback/ConfirmDialog.tsx
1907
- function Pt({ open: e, onCancel: t, onConfirm: n, title: r, children: i, confirmLabel: a = "Confirm", cancelLabel: o = "Cancel", danger: s = !1, submitting: c = !1, size: l = "sm" }) {
1908
- return /* @__PURE__ */ f(Nt, {
1943
+ function It({ open: e, onCancel: t, onConfirm: n, title: r, children: i, confirmLabel: a = "Confirm", cancelLabel: o = "Cancel", danger: s = !1, submitting: c = !1, size: l = "sm" }) {
1944
+ return /* @__PURE__ */ f(Ft, {
1909
1945
  open: e,
1910
1946
  onClose: t,
1911
1947
  title: r,
@@ -1944,15 +1980,15 @@ function Pt({ open: e, onCancel: t, onConfirm: n, title: r, children: i, confirm
1944
1980
  }
1945
1981
  //#endregion
1946
1982
  //#region src/components/feedback/toastContext.ts
1947
- var Ft = e(null);
1948
- function It() {
1949
- let e = r(Ft);
1983
+ var Lt = e(null);
1984
+ function Rt() {
1985
+ let e = r(Lt);
1950
1986
  if (!e) throw Error("useToast must be used within a <ToastProvider>");
1951
1987
  return e;
1952
1988
  }
1953
1989
  //#endregion
1954
1990
  //#region src/components/feedback/Toast.tsx
1955
- var Lt = {
1991
+ var zt = {
1956
1992
  success: {
1957
1993
  bg: "bg-bg-primary",
1958
1994
  accent: "bg-success",
@@ -1969,7 +2005,7 @@ var Lt = {
1969
2005
  bg: "bg-bg-primary",
1970
2006
  accent: "bg-error",
1971
2007
  text: "text-error",
1972
- icon: ee
2008
+ icon: te
1973
2009
  },
1974
2010
  info: {
1975
2011
  bg: "bg-bg-primary",
@@ -1978,8 +2014,8 @@ var Lt = {
1978
2014
  icon: C
1979
2015
  }
1980
2016
  };
1981
- function Rt({ toast: e, onRemove: t }) {
1982
- let { variant: n, title: r, message: a, duration: o = 5e3 } = e, { bg: l, accent: u, text: p, icon: m } = Lt[n], [h, g] = c(100), _ = s(0), v = s(0);
2017
+ function Bt({ toast: e, onRemove: t }) {
2018
+ let { variant: n, title: r, message: a, duration: o = 5e3 } = e, { bg: l, accent: u, text: p, icon: m } = zt[n], [h, g] = c(100), _ = s(0), v = s(0);
1983
2019
  return i(() => {
1984
2020
  if (o <= 0) return;
1985
2021
  _.current = performance.now();
@@ -2023,7 +2059,7 @@ function Rt({ toast: e, onRemove: t }) {
2023
2059
  onClick: () => t(e.id),
2024
2060
  className: "shrink-0 p-1 rounded-sm text-text-secondary hover:text-text-primary hover:bg-bg-tertiary transition-colors cursor-pointer",
2025
2061
  "aria-label": "Dismiss notification",
2026
- children: /* @__PURE__ */ d(M, { size: 14 })
2062
+ children: /* @__PURE__ */ d(j, { size: 14 })
2027
2063
  })
2028
2064
  ]
2029
2065
  }), o > 0 && /* @__PURE__ */ d("div", {
@@ -2035,10 +2071,10 @@ function Rt({ toast: e, onRemove: t }) {
2035
2071
  })]
2036
2072
  });
2037
2073
  }
2038
- var zt = 0;
2039
- function Bt({ children: e }) {
2074
+ var Vt = 0;
2075
+ function Ht({ children: e }) {
2040
2076
  let [t, r] = c([]), i = n((e) => {
2041
- let t = `toast-${++zt}`;
2077
+ let t = `toast-${++Vt}`;
2042
2078
  return r((n) => [...n, {
2043
2079
  ...e,
2044
2080
  id: t
@@ -2046,7 +2082,7 @@ function Bt({ children: e }) {
2046
2082
  }, []), a = n((e) => {
2047
2083
  r((t) => t.filter((t) => t.id !== e));
2048
2084
  }, []);
2049
- return /* @__PURE__ */ f(Ft, {
2085
+ return /* @__PURE__ */ f(Lt, {
2050
2086
  value: {
2051
2087
  addToast: i,
2052
2088
  removeToast: a
@@ -2056,7 +2092,7 @@ function Bt({ children: e }) {
2056
2092
  className: "fixed bottom-lg right-lg z-50 flex flex-col-reverse gap-sm pointer-events-none",
2057
2093
  children: t.map((e) => /* @__PURE__ */ d("div", {
2058
2094
  className: "pointer-events-auto",
2059
- children: /* @__PURE__ */ d(Rt, {
2095
+ children: /* @__PURE__ */ d(Bt, {
2060
2096
  toast: e,
2061
2097
  onRemove: a
2062
2098
  })
@@ -2066,12 +2102,12 @@ function Bt({ children: e }) {
2066
2102
  }
2067
2103
  //#endregion
2068
2104
  //#region src/hooks/useAuth.tsx
2069
- var Vt = e(null), Ht = {
2105
+ var Ut = e(null), Wt = {
2070
2106
  name: "Alice Martin",
2071
2107
  email: "alice.martin@epfl.ch",
2072
2108
  role: "admin"
2073
2109
  };
2074
- function Ut({ initialUser: e = Ht, children: t }) {
2110
+ function Gt({ initialUser: e = Wt, children: t }) {
2075
2111
  let [n, r] = c(e), i = (e) => r((t) => ({
2076
2112
  ...t,
2077
2113
  role: e
@@ -2079,17 +2115,17 @@ function Ut({ initialUser: e = Ht, children: t }) {
2079
2115
  user: n,
2080
2116
  setRole: i
2081
2117
  }), [n]);
2082
- return /* @__PURE__ */ d(Vt.Provider, {
2118
+ return /* @__PURE__ */ d(Ut.Provider, {
2083
2119
  value: a,
2084
2120
  children: t
2085
2121
  });
2086
2122
  }
2087
- function Wt() {
2088
- let e = r(Vt);
2123
+ function Kt() {
2124
+ let e = r(Ut);
2089
2125
  if (!e) throw Error("useAuth must be used within an AuthProvider");
2090
2126
  return e;
2091
2127
  }
2092
2128
  //#endregion
2093
- export { jt as Alert, Ut as AuthProvider, fe as Avatar, he as Badge, gt as BurgerDrawer, be as Button, wt as Card, Me as Checkbox, Pt as ConfirmDialog, Tt as DescriptionList, Nt as Dialog, Ue as DropdownDivider, We as DropdownItem, Ge as DropdownMenu, Et as EmptyState, Oe as FileUpload, bt as Footer, Ce as IconButton, Ie as Input, et as LanguageSwitcher, xt as LoginButton, Ct as PageShell, Ee as Pagination, Ke as Popover, je as ProgressBar, q as RadioGroup, ze as Select, mt as SideNav, U as Spinner, Be as Switch, Je as TabPanel, kt as Table, Ye as Tabs, Ve as Textarea, st as ThemeToggle, Bt as ToastProvider, Ze as Tooltip, lt as TopNav, St as UserMenu, Y as epflSelectClassNames, J as epflSelectTheme, at as initTheme, Wt as useAuth, Qe as useLanguage, ot as useTheme, It as useToast };
2129
+ export { Nt as Alert, Gt as AuthProvider, pe as Avatar, H as Badge, _t as BurgerDrawer, be as Button, Et as Card, Me as Checkbox, It as ConfirmDialog, Dt as DescriptionList, Ft as Dialog, We as DropdownDivider, Ge as DropdownItem, Ke as DropdownMenu, Ot as EmptyState, Oe as FileUpload, St as Footer, Ce as IconButton, Ie as Input, et as LanguageSwitcher, Ct as LoginButton, Tt as PageShell, Ee as Pagination, qe as Popover, je as ProgressBar, q as RadioGroup, Be as Select, mt as SideNav, U as Spinner, Ve as Switch, Ye as TabPanel, jt as Table, Xe as Tabs, He as Textarea, st as ThemeToggle, Ht as ToastProvider, Y as Tooltip, lt as TopNav, wt as UserMenu, J as epflSelectClassNames, ze as epflSelectTheme, at as initTheme, Kt as useAuth, Qe as useLanguage, ot as useTheme, Rt as useToast };
2094
2130
 
2095
2131
  //# sourceMappingURL=poesis.js.map