@font-face{font-family:Roboto;font-display:swap;font-style:normal;font-weight:100 900;src:url(../assets/fonts/Roboto-VariableFont_wdth,wght.ttf)format("truetype")}@font-face{font-family:Material Icons;font-display:block;font-style:normal;font-weight:400;src:url(../assets/fonts/MaterialIcons-Regular.otf)format("opentype")}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--flutter-font-family:Roboto, Arial, sans-serif;--type-title-large-size:22px;--type-title-large-line-height:28px;--type-card-header-size:var(--type-title-large-size);--type-card-header-line-height:var(--type-title-large-line-height);--type-card-header-weight:400;--type-title-medium-size:16px;--type-title-medium-line-height:24px;--type-title-medium-weight:500;--type-body-large-size:16px;--type-body-large-line-height:24px;--type-body-large-weight:400;--type-body-medium-size:14px;--type-body-medium-line-height:20px;--type-body-medium-compact-line-height:var(--type-body-medium-line-height);--type-body-medium-weight:400;--type-body-small-size:12px;--type-body-small-line-height:16px;--type-body-small-weight:400;--type-label-large-size:14px;--type-label-large-line-height:20px;--type-label-large-weight:500;--type-label-medium-size:12px;--type-label-medium-line-height:16px;--type-label-medium-weight:500;--md-ref-typeface-brand:var(--flutter-font-family);--md-ref-typeface-plain:var(--flutter-font-family);--md-sys-color-primary:#455e91;--md-sys-color-on-primary:#fff;--md-sys-color-primary-container:#d8e2ff;--md-sys-color-on-primary-container:#001a42;--md-sys-color-secondary:#575e71;--md-sys-color-on-secondary:#fff;--md-sys-color-secondary-container:#dbe2f9;--md-sys-color-on-secondary-container:#141b2c;--md-sys-color-tertiary:#715573;--md-sys-color-on-tertiary:#fff;--md-sys-color-tertiary-container:#fcd7fb;--md-sys-color-on-tertiary-container:#29132d;--md-sys-color-error:#ba1a1a;--md-sys-color-on-error:#fff;--md-sys-color-error-container:#ffdad6;--md-sys-color-on-error-container:#410002;--md-sys-color-surface:#f9f9ff;--md-sys-color-background:#f9f9ff;--md-sys-color-surface-tint:#455e91;--md-sys-color-surface-dim:#dad9e0;--md-sys-color-surface-bright:#f9f9ff;--md-sys-color-surface-container-lowest:#fff;--md-sys-color-surface-container-low:#f3f3fa;--md-sys-color-surface-container:#eeedf4;--md-sys-color-surface-container-high:#e8e7ef;--md-sys-color-surface-container-highest:#e2e2e9;--md-sys-color-on-surface:#1a1b20;--md-sys-color-on-surface-variant:#44474f;--md-sys-color-outline:#75777f;--md-sys-color-outline-variant:#c5c6d0;--md-sys-color-shadow:#000;--md-sys-color-scrim:#000;--md-sys-color-inverse-surface:#2f3036;--md-sys-color-inverse-on-surface:#f1f0f7;--md-sys-color-inverse-primary:#aec6ff;--page-max-width:1200px;--card-margin:4px;--card-radius:12px;--container-radius:16px;--media-radius:20px;--card-padding-horizontal:16px;--card-padding-top:10px;--card-padding-bottom:14px;--section-gap:12px;--card-inner-horizontal:14px;--card-inner-vertical:12px;--section-inset-horizontal:12px;--section-inset-top:9px;--section-inset-bottom:11px;--list-item-gap:7px;--chip-padding-horizontal:9px;--chip-padding-vertical:5px;--chip-icon-gap:5px;--chip-label-horizontal:10px;--metadata-icon-size:13px;--motion-standard:cubic-bezier(.2, 0, 0, 1);font-family:var(--flutter-font-family)}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--md-sys-color-primary:#aec6ff;--md-sys-color-on-primary:#122f60;--md-sys-color-primary-container:#2c4678;--md-sys-color-on-primary-container:#d8e2ff;--md-sys-color-secondary:#bfc6dc;--md-sys-color-on-secondary:#293041;--md-sys-color-secondary-container:#3f4759;--md-sys-color-on-secondary-container:#dbe2f9;--md-sys-color-tertiary:#dfbcdf;--md-sys-color-on-tertiary:#402843;--md-sys-color-tertiary-container:#583e5a;--md-sys-color-on-tertiary-container:#fcd7fb;--md-sys-color-error:#ffb4ab;--md-sys-color-on-error:#690005;--md-sys-color-error-container:#93000a;--md-sys-color-on-error-container:#ffdad6;--md-sys-color-surface:#111318;--md-sys-color-background:#111318;--md-sys-color-surface-tint:#aec6ff;--md-sys-color-surface-dim:#111318;--md-sys-color-surface-bright:#37393e;--md-sys-color-surface-container-lowest:#0c0e13;--md-sys-color-surface-container-low:#1a1b20;--md-sys-color-surface-container:#1e1f25;--md-sys-color-surface-container-high:#282a2f;--md-sys-color-surface-container-highest:#33353a;--md-sys-color-on-surface:#e2e2e9;--md-sys-color-on-surface-variant:#c5c6d0;--md-sys-color-outline:#8e9099;--md-sys-color-outline-variant:#44474f;--md-sys-color-inverse-surface:#e2e2e9;--md-sys-color-inverse-on-surface:#2f3036;--md-sys-color-inverse-primary:#455e91}}*{box-sizing:border-box}html{scroll-behavior:smooth;touch-action:pan-x pan-y}body{touch-action:pan-x pan-y;background:var(--md-sys-color-surface);min-width:320px;color:var(--md-sys-color-on-surface);font-family:var(--flutter-font-family);font-size:var(--type-body-medium-size);font-weight:var(--type-body-medium-weight);line-height:var(--type-body-medium-line-height);letter-spacing:0;text-rendering:optimizelegibility;margin:0}a{color:var(--md-sys-color-primary);text-underline-offset:2px;text-decoration-thickness:1px}button,a{-webkit-tap-highlight-color:transparent}.top-app-bar,.section-header,.content-tile,.metadata-chip,.filter-panel,.section-summary,.gallery-panel,.gallery-tile,.site-footer,.gallery-viewer,.toast,md-filled-button,md-text-button,md-icon-button,md-menu-item,md-outlined-segmented-button,md-outlined-segmented-button-set{-webkit-user-select:none;user-select:none}md-icon,.material-symbols-outlined{--md-icon-font:"Material Icons";letter-spacing:0;text-transform:none;white-space:nowrap;font-feature-settings:"liga";-webkit-font-smoothing:antialiased;direction:ltr;justify-content:center;align-items:center;font-family:Material Icons;font-size:24px;font-style:normal;font-weight:400;line-height:1;display:inline-flex}.top-app-bar{z-index:10;background:var(--md-sys-color-surface);min-height:56px;box-shadow:none;color:var(--md-sys-color-on-surface);transition:background-color .18s var(--motion-standard), box-shadow .18s var(--motion-standard);align-items:center;padding:0 4px 0 16px;display:flex;position:sticky;top:0}.top-app-bar.scrolled-under{background:var(--md-sys-color-surface-container);box-shadow:0 2px 4px color-mix(in srgb, var(--md-sys-color-shadow) 22%, transparent), 0 4px 12px 3px color-mix(in srgb, var(--md-sys-color-shadow) 14%, transparent)}.app-title{min-width:0;font-size:var(--type-title-large-size);font-weight:var(--type-card-header-weight);line-height:var(--type-title-large-line-height);text-overflow:ellipsis;white-space:nowrap;flex:auto;padding-right:16px;overflow:hidden}.top-actions{align-items:center;gap:0;display:flex}md-filled-button{--md-filled-button-container-height:40px;--md-filled-button-container-shape:999px;--md-filled-button-label-text-font:var(--flutter-font-family);--md-filled-button-label-text-size:var(--type-label-large-size);--md-filled-button-label-text-line-height:var(--type-label-large-line-height);--md-filled-button-label-text-weight:var(--type-label-large-weight);--md-filled-button-label-text-tracking:0;font-family:var(--flutter-font-family);font-size:var(--type-label-large-size);font-weight:var(--type-label-large-weight);line-height:var(--type-label-large-line-height);letter-spacing:0}md-text-button{--md-text-button-container-height:40px;--md-text-button-container-shape:999px;--md-text-button-label-text-font:var(--flutter-font-family);--md-text-button-label-text-size:var(--type-label-large-size);--md-text-button-label-text-line-height:var(--type-label-large-line-height);--md-text-button-label-text-weight:var(--type-label-large-weight);--md-text-button-label-text-tracking:0;font-family:var(--flutter-font-family);font-size:var(--type-label-large-size);font-weight:var(--type-label-large-weight);line-height:var(--type-label-large-line-height);letter-spacing:0}md-menu-item{--md-menu-item-label-text-font:var(--flutter-font-family);--md-menu-item-label-text-size:var(--type-body-large-size);--md-menu-item-label-text-line-height:var(--type-body-large-line-height);--md-menu-item-label-text-weight:var(--type-body-large-weight);--md-menu-item-label-text-tracking:0;font-family:var(--flutter-font-family);font-size:var(--type-body-large-size);font-weight:var(--type-body-large-weight);line-height:var(--type-body-large-line-height);letter-spacing:0}#more-menu-button{display:none}.page-shell{width:min(100%, var(--page-max-width));margin:0 auto;padding:0}.surface-card{width:calc(100% - (var(--card-margin) * 2));margin:var(--card-margin) auto;border-radius:var(--card-radius);background:var(--md-sys-color-surface-container-low);box-shadow:0 1px 2px color-mix(in srgb, var(--md-sys-color-shadow) 30%, transparent), 0 1px 3px 1px color-mix(in srgb, var(--md-sys-color-shadow) 15%, transparent);overflow:hidden}.section-header{grid-template-columns:24px minmax(0,1fr);align-items:center;column-gap:12px;min-height:56px;padding:0 16px;display:grid}.section-header md-icon{width:24px;color:var(--md-sys-color-on-surface-variant)}h1,h2{font-size:var(--type-card-header-size);font-weight:var(--type-card-header-weight);line-height:var(--type-card-header-line-height);text-overflow:ellipsis;white-space:nowrap;margin:0;overflow:hidden}md-divider{--md-divider-color:var(--md-sys-color-outline-variant);margin:7.5px 0 7.5px 16px;display:block}.section-body{gap:var(--card-padding-top);padding:var(--card-padding-top) var(--card-padding-horizontal) var(--card-padding-bottom);flex-direction:column;display:flex}.bio-body{gap:var(--section-gap)}.section-panel,.gallery-panel{border:1px solid color-mix(in srgb, var(--md-sys-color-outline-variant) 55%, transparent);border-radius:var(--container-radius);background:var(--md-sys-color-surface-container-low)}.section-panel{padding:var(--card-inner-horizontal)}.section-panel p,.gallery-note{font-size:var(--type-body-large-size);font-weight:var(--type-body-large-weight);line-height:var(--type-body-large-line-height);margin:0}.content-tile{width:100%;padding:var(--card-inner-vertical) var(--card-inner-horizontal);border-radius:var(--container-radius);background:var(--md-sys-color-surface-container-low);color:var(--md-sys-color-on-surface);font-family:var(--flutter-font-family);font-size:var(--type-body-medium-size);font-weight:var(--type-body-medium-weight);line-height:var(--type-body-medium-line-height);text-align:left;cursor:pointer;border:0;flex-direction:column;text-decoration:none;display:flex;position:relative;overflow:hidden}.content-tile:hover{background:color-mix(in srgb, var(--md-sys-color-on-surface) 8%, var(--md-sys-color-surface-container-low))}.content-tile:focus-visible{outline:3px solid var(--md-sys-color-primary);outline-offset:2px}.tile-title{font-size:var(--type-title-medium-size);font-weight:var(--type-title-medium-weight);line-height:var(--type-title-medium-line-height);-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.contrib-tile .tile-title,.thesis-tile .tile-title{-webkit-line-clamp:2}.tile-support{color:var(--md-sys-color-on-surface-variant);font-size:var(--type-body-medium-size);font-weight:var(--type-body-medium-weight);line-height:var(--type-body-medium-compact-line-height);-webkit-line-clamp:3;-webkit-box-orient:vertical;margin-top:6px;display:-webkit-box;overflow:hidden}.contrib-tile .tile-support{display:block;overflow:visible}.metadata-row{margin-top:var(--card-padding-top);flex-wrap:wrap;gap:8px;display:flex}.metadata-chip{align-items:center;gap:var(--chip-icon-gap);padding:var(--chip-padding-vertical) var(--chip-padding-horizontal);background:color-mix(in srgb, var(--md-sys-color-secondary-container) 55%, transparent);color:var(--md-sys-color-on-secondary-container);font-size:var(--type-label-medium-size);font-weight:var(--type-label-medium-weight);line-height:var(--type-label-medium-line-height);border-radius:999px;display:inline-flex}.metadata-chip md-icon{width:var(--metadata-icon-size);height:var(--metadata-icon-size);font-size:var(--metadata-icon-size);color:currentColor}.email-tile{column-gap:var(--card-padding-top);grid-template-columns:18px minmax(0,1fr) 16px;align-items:center;display:grid}.email-leading{width:18px;height:18px;color:var(--md-sys-color-on-surface-variant);font-size:18px}.email-trailing{width:16px;height:16px;color:var(--md-sys-color-on-surface-variant);font-size:16px}.email-copy{flex-direction:column;min-width:0;display:flex}.email-address{font-size:var(--type-body-large-size);font-weight:var(--type-body-large-weight);line-height:var(--type-body-large-line-height);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.email-hint{color:var(--md-sys-color-on-surface-variant);font-size:var(--type-body-small-size);font-weight:var(--type-body-small-weight);line-height:var(--type-body-small-line-height);margin-top:4px}.filter-panel{justify-content:center;display:flex}.theme-segmented-button-set{width:min(100%,420px)}md-outlined-segmented-button{--md-outlined-segmented-button-container-height:36px;--md-outlined-segmented-button-label-text-font:var(--flutter-font-family);--md-outlined-segmented-button-label-text-size:var(--type-label-large-size);--md-outlined-segmented-button-label-text-weight:var(--type-label-large-weight);--md-outlined-segmented-button-label-text-line-height:var(--type-label-large-line-height);font-family:var(--flutter-font-family);font-size:var(--type-label-large-size);font-weight:var(--type-label-large-weight);line-height:var(--type-label-large-line-height);letter-spacing:0}.section-summary{color:var(--md-sys-color-on-surface-variant);font-size:var(--type-body-small-size);font-weight:var(--type-body-small-weight);line-height:var(--type-body-small-line-height);margin:0}.tile-stack{gap:var(--card-padding-top);flex-direction:column;display:flex}#publication-list{gap:var(--list-item-gap)}.tile-stack md-circular-progress{align-self:center;margin:8px 0}.gallery-panel{padding:var(--card-padding-top) var(--section-inset-horizontal) var(--section-inset-horizontal)}.gallery-grid{gap:var(--list-item-gap);margin-top:var(--card-padding-top);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.gallery-tile{aspect-ratio:1;border-radius:var(--media-radius);background:var(--md-sys-color-surface-container-highest);cursor:pointer;border:0;width:100%;min-width:0;padding:0;display:block;position:relative;overflow:hidden}.gallery-tile-featured{grid-area:span 2/span 2}.gallery-tile img{object-fit:cover;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;width:100%;height:100%;display:block}.gallery-tile:after{content:"";background:linear-gradient(to top, color-mix(in srgb, var(--md-sys-color-scrim) 48%, transparent), transparent 44%);opacity:0;transition:opacity .18s var(--motion-standard);position:absolute;inset:0}.gallery-tile:hover:after,.gallery-tile:focus-visible:after{opacity:1}.gallery-tile-label{z-index:1;background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container);font-size:var(--type-label-medium-size);font-weight:var(--type-label-medium-weight);line-height:var(--type-label-medium-line-height);opacity:0;transition:opacity .18s var(--motion-standard), transform .18s var(--motion-standard);border-radius:999px;padding:4px 10px;position:absolute;bottom:8px;right:8px;transform:translateY(4px)}.gallery-tile:hover .gallery-tile-label,.gallery-tile:focus-visible .gallery-tile-label{opacity:1;transform:translateY(0)}.gallery-note{margin-top:var(--section-gap)}.site-footer{color:var(--md-sys-color-on-surface);font-size:var(--type-body-small-size);font-weight:var(--type-body-small-weight);line-height:var(--type-body-small-line-height);text-align:center;padding:24px 16px}.gallery-viewer{--md-dialog-container-color:var(--md-sys-color-surface-container-high);--md-dialog-container-shape:28px;--md-dialog-headline-font:var(--flutter-font-family);--md-dialog-headline-size:var(--type-card-header-size);--md-dialog-headline-line-height:var(--type-card-header-line-height);--md-dialog-headline-weight:var(--type-card-header-weight);--md-dialog-supporting-text-font:var(--flutter-font-family);--md-dialog-supporting-text-size:var(--type-body-medium-size);--md-dialog-supporting-text-line-height:var(--type-body-medium-line-height);--md-dialog-supporting-text-weight:var(--type-body-medium-weight);--md-dialog-supporting-text-tracking:0;width:min(920px,100vw - 48px);max-width:min(920px,100vw - 48px);max-height:calc(100vh - 48px)}.gallery-viewer *,.viewer-canvas,#viewer-image{-webkit-user-select:none;user-select:none}.viewer-canvas{justify-content:center;align-items:center;width:100%;padding:0;display:flex}#viewer-image{border-radius:var(--media-radius);object-fit:contain;-webkit-user-drag:none;max-width:100%;max-height:min(68vh,720px);display:block}.toast{left:50%;bottom:max(24px, env(safe-area-inset-bottom));z-index:40;background:var(--md-sys-color-inverse-surface);max-width:min(420px,100vw - 32px);color:var(--md-sys-color-inverse-on-surface);box-shadow:0 3px 8px color-mix(in srgb, var(--md-sys-color-shadow) 26%, transparent);opacity:0;pointer-events:none;transition:opacity .18s var(--motion-standard), transform .18s var(--motion-standard);border-radius:4px;padding:14px 16px;position:fixed;transform:translate(-50%,16px)}.toast.visible{opacity:1;transform:translate(-50%)}.reveal{opacity:0;transform:translateY(18px)}.reveal.is-visible{opacity:1;transition:opacity .32s ease-out,transform .32s ease-out;transform:translateY(0)}@media (width<=1100px){.wide-action{display:none}#more-menu-button{display:inline-flex}}@media (width<=700px){:root{--container-radius:14px;--card-padding-horizontal:12px;--card-padding-top:8px;--card-padding-bottom:12px;--section-gap:10px;--card-inner-horizontal:12px;--card-inner-vertical:10px;--section-inset-horizontal:10px;--section-inset-top:8px;--section-inset-bottom:10px;--list-item-gap:6px;--chip-padding-horizontal:8px;--chip-padding-vertical:4px;--chip-icon-gap:4px;--chip-label-horizontal:8px;--metadata-icon-size:12px}.top-app-bar{min-height:56px}.tile-title{line-height:var(--type-title-medium-line-height);-webkit-line-clamp:2}.tile-support{line-height:var(--type-body-medium-compact-line-height);-webkit-line-clamp:2}.gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.gallery-tile-featured{aspect-ratio:16/10;grid-area:span 1/span 2}}@media (width<=430px){.app-title{font-size:var(--type-title-large-size)}.top-actions md-filled-button{--md-filled-button-container-height:40px;--md-filled-button-label-text-size:var(--type-label-large-size)}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto!important;transition-duration:1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important}.reveal,.reveal.is-visible{opacity:1;transform:none}}
