:root{--awesome: #0a7e8c;--dark-awesome: #064b54;--bg: #ffffff;--surface: #e6f3f4;--text: #1f2933;--text-muted: #52606d;--accent: #0a7e8c;--accent-strong: #064b54;--border: #d9e2e8;--footer-bg: #064b54;--focus: #0a7e8c}:root[data-theme="dark"]{--bg: #0b1618;--surface: #12323a;--text: #e4edf0;--text-muted: #9fb3bd;--accent: #4cc3d3;--accent-strong: #9fd8e0;--border: #1e3a42;--footer-bg: #064b54;--focus: #4cc3d3}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:"Source Sans Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;font-size:1.0625rem;line-height:1.7;color:var(--text);background:var(--bg);transition:background-color 0.25s ease, color 0.25s ease;text-align:justify;hyphens:auto;-webkit-hyphens:auto}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none !important;animation:none !important}}h1,h2,h3,h4,h5,h6{color:var(--accent-strong);line-height:1.25;font-weight:700}h1{font-size:clamp(1.75rem, 3vw, 2.5rem)}h2{font-size:clamp(1.4rem, 2.2vw, 1.9rem);margin-top:2.2rem;padding-bottom:0.3rem;border-bottom:2px solid var(--accent)}h3{font-size:clamp(1.15rem, 1.5vw, 1.4rem);margin-top:1.8rem}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}a:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:2px}img{max-width:100%;height:auto;display:block;border-radius:4px}figure{margin:1.5rem 0}figure.figure-medium{max-width:36rem;margin-left:auto;margin-right:auto}figcaption{font-size:0.9rem;color:var(--text-muted);text-align:center;margin-top:0.5rem;line-height:1.5}code{font-family:"SF Mono", "Fira Code", Consolas, monospace;font-size:0.9em;background:var(--surface);padding:0.1em 0.35em;border-radius:3px}blockquote{margin:1.5rem 0;padding:0.5rem 1.2rem;border-left:4px solid var(--accent);background:var(--surface);border-radius:0 4px 4px 0}.site-header,.site-footer,.pub-links,.pub-meta,.latest-pubs-more,figure,figcaption{text-align:left}table{border-collapse:collapse;width:100%;margin:1.5rem 0;display:block;overflow-x:auto}th,td{border:1px solid var(--border);padding:0.5rem 0.75rem;text-align:left}th{background:var(--surface)}.wrap{max-width:60rem;margin:0 auto;padding:0 1.25rem}main{min-height:60vh;padding:2.5rem 0 4rem}.site-header{background:var(--bg);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:10;transition:background-color 0.25s ease}.header-inner{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:3.25rem;flex-wrap:nowrap}.site-title{font-size:1.15rem;font-weight:700;color:var(--accent-strong);white-space:nowrap}.site-title:hover{text-decoration:none;color:var(--accent)}.nav-list{display:flex;align-items:center;gap:0.25rem;list-style:none;margin:0;padding:0;flex-wrap:nowrap}.nav-list a{padding:0.3rem 0.55rem;border-radius:4px;color:var(--text);font-weight:500;min-height:40px;display:flex;align-items:center}.nav-list a:hover{text-decoration:none;color:var(--accent)}.nav-list a.active{color:var(--accent);background:var(--surface)}.has-children{position:relative;display:flex;align-items:center}.nav-chevron{background:none;border:none;cursor:pointer;padding:0.3rem;margin-left:-0.5rem;color:var(--text);display:inline-flex;align-items:center;justify-content:center;min-width:28px;min-height:28px;border-radius:4px}.nav-chevron:hover{color:var(--accent);background:var(--surface)}.nav-chevron svg{transition:transform 0.2s ease}.has-children:hover .nav-chevron svg,.has-children:focus-within .nav-chevron svg{transform:rotate(180deg)}.nav-sublist{display:none;position:absolute;top:100%;left:0;z-index:20;min-width:16rem;margin:0.25rem 0 0;padding:0.5rem;list-style:none;background:var(--bg);border:1px solid var(--border);border-radius:8px;box-shadow:0 6px 24px rgba(0,0,0,0.18)}.has-children:hover .nav-sublist,.has-children:focus-within .nav-sublist,.has-children.open .nav-sublist{display:block}.nav-sublist a{display:block;padding:0.5rem 0.75rem;border-radius:6px;color:var(--text);font-weight:500;min-height:44px;display:flex;align-items:center;white-space:nowrap}.nav-sublist a:hover{background:var(--surface);color:var(--accent)}.nav-sublist a.active{color:var(--accent);box-shadow:none;background:var(--surface)}.nav-group-label{padding:0.5rem 0.75rem 0.2rem;font-size:0.72rem;font-weight:700;text-transform:uppercase;letter-spacing:0.08em;color:var(--text-muted)}.nav-group-label:not(:first-child){margin-top:0.35rem;border-top:1px solid var(--border)}.theme-toggle{background:none;border:1px solid var(--border);border-radius:50%;width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;color:var(--text);flex:0 0 auto}.theme-toggle:hover{border-color:var(--accent);color:var(--accent)}:root[data-theme="dark"] .icon-sun{display:block}:root[data-theme="dark"] .icon-moon{display:none}:root[data-theme="light"] .icon-sun{display:none}:root[data-theme="light"] .icon-moon{display:block}:root:not([data-theme="dark"]) .icon-sun{display:none}:root:not([data-theme="dark"]) .icon-moon{display:block}.about{display:flex;gap:2rem;align-items:flex-start}.about-photo{flex:0 0 220px;margin-top:calc(clamp(1.75rem, 3vw, 2.5rem) * 1.92)}.about-photo img{border-radius:6px;box-shadow:0 2px 10px rgba(0,0,0,0.15)}.about-text{flex:1;min-width:0}.about-text p{margin-top:0}.cv-button{display:inline-block;margin:0.75rem 0 1rem;padding:0.55rem 1.3rem;background:var(--accent);color:#fff;font-weight:600;border-radius:4px;transition:background-color 0.2s ease}.cv-button:hover{background:var(--accent-strong);color:#fff;text-decoration:none}.contact-card{margin-top:2.2rem;background:var(--surface);border-radius:8px;padding:1rem 1.5rem}.contact-card h2{margin-top:0;margin-bottom:0.4rem;padding-bottom:0.4rem}.contact-lead{margin:0}.contact-email{color:var(--accent-strong);font-weight:700}.contact-email:hover{color:var(--accent)}.contact-note{margin:0.35rem 0 0;font-size:0.92rem;color:var(--text-muted)}.contact-join{margin:0.75rem 0 0;padding-top:0.75rem;border-top:1px solid var(--border);display:flex;align-items:center;flex-wrap:wrap;gap:0.25rem 0.75rem}.contact-card .cv-button{margin:0;padding:0.45rem 1.1rem;font-size:0.95rem}.site-footer{background:var(--footer-bg);color:#fff;padding:1.75rem 0;margin-top:3rem}.footer-inner{display:flex;flex-direction:column;gap:0.5rem;align-items:center;text-align:center}.social-links{list-style:none;display:flex;flex-wrap:wrap;justify-content:center;gap:0.35rem 1.1rem;margin:0;padding:0}.social-links a{color:#fff;font-size:0.95rem}.social-links a:hover{color:#4cc3d3;text-decoration:underline}.footer-note{margin:0;font-size:0.85rem;opacity:0.85}.footer-note a{color:#fff;text-decoration:underline}.page-header{margin-bottom:1.5rem}.subtitle{color:var(--text-muted);font-size:1.1rem;margin:0.25rem 0 0}.page img{margin:1.5rem auto}.figure-caption,figcaption{color:var(--text-muted)}.latest-pubs{margin-top:3rem;background:var(--surface);border-radius:8px;padding:1.5rem 1.75rem 1.25rem}.latest-pubs h2{margin-top:0;border-bottom:none;padding-bottom:0.4rem;border-bottom:2px solid var(--accent)}.latest-pubs-list{margin:0;padding-left:1.25rem}.latest-pubs-list li+li{margin-top:0.35rem}.latest-pubs-list li::marker{color:var(--accent)}.latest-pubs-list a{color:var(--text);font-size:0.95rem;font-weight:400;line-height:1.45}.latest-pubs-list a:hover{color:var(--accent);text-decoration:underline}.latest-pubs-more{margin:1rem 0 0;text-align:right}.pub{padding:0.9rem 0;border-bottom:1px solid var(--border)}.pub:last-child{border-bottom:none}.pub-title{margin:0 0 0.2rem;font-size:1.05rem;font-weight:600;line-height:1.4}.pub-title a{color:var(--accent-strong)}.pub-title a:hover{color:var(--accent);text-decoration:underline}.pub-authors{margin:0 0 0.3rem;font-size:0.95rem}.pub-meta{margin:0;font-size:0.92rem;color:var(--text-muted);font-style:italic;display:flex;align-items:center;gap:0.6rem;flex-wrap:wrap}.pub-badge{font-style:normal;font-size:0.78rem;font-weight:700;color:#fff;background:var(--accent);border-radius:999px;padding:0.08rem 0.6rem}.pub-links{margin:0.4rem 0 0;display:flex;gap:0.75rem;flex-wrap:wrap}.pub-link{font-size:0.82rem;font-weight:700;text-transform:uppercase;letter-spacing:0.04em;color:var(--accent);border:1px solid var(--accent);border-radius:4px;padding:0.15rem 0.7rem;min-height:32px;display:inline-flex;align-items:center}.pub-link:hover{background:var(--accent);color:#fff;text-decoration:none}details.pub-group,details.software-group{margin:0 0 1.25rem;border:1px solid var(--border);border-radius:8px;overflow:hidden}details.pub-group>summary,details.software-group>summary{list-style:none;display:flex;align-items:baseline;justify-content:space-between;gap:1rem;cursor:pointer;padding:0.85rem 1.25rem;background:var(--surface);transition:background-color 0.2s ease;min-height:44px;box-sizing:border-box}details.pub-group>summary::-webkit-details-marker,details.software-group>summary::-webkit-details-marker{display:none}details.pub-group>summary:hover,details.software-group>summary:hover{background:var(--accent);color:#fff}details.pub-group>summary:hover .pub-count,details.software-group>summary:hover .pub-count{color:#fff}.pub-type-title,.software-title{font-size:1.25rem;font-weight:700;color:inherit;display:flex;align-items:baseline;gap:0.6rem}.pub-type-title::before,.software-title::before{content:"";width:0;height:0;border-left:6px solid currentColor;border-top:5px solid transparent;border-bottom:5px solid transparent;flex:none;transform:translateY(-1px);transition:transform 0.2s ease}details[open]>summary .pub-type-title::before,details[open]>summary .software-title::before{transform:rotate(90deg) translateX(2px)}.pub-count{font-size:0.85rem;font-weight:400;color:var(--text-muted);white-space:nowrap}.pub-list{padding:0 1.25rem 0.75rem}.software-body,details.software-group>p,details.software-group>ul{padding:0 1.25rem}.software-summary{font-size:0.9rem;font-weight:400;font-style:italic;color:var(--text-muted);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}details.software-group>summary:hover .software-summary{color:#fff;opacity:0.9}@media (max-width: 767px){.software-summary{white-space:normal;overflow:visible;text-overflow:clip;flex-basis:100%;order:2;margin-top:0.15rem}}details.software-group>ul{font-size:0.92rem;padding-left:2.1rem}details.software-group>ul ul{font-size:0.92rem}.software-links{margin:0.85rem 0 0;display:flex;gap:0.75rem;flex-wrap:wrap}.year-filters{display:none}.js .year-filters{display:flex;flex-wrap:wrap;gap:0.4rem;padding:0.85rem 1.25rem 0}.js .pub-list{padding-top:0.85rem}.year-filter{font:inherit;font-size:0.82rem;font-weight:600;color:var(--accent);background:transparent;border:1px solid var(--accent);border-radius:999px;padding:0.18rem 0.7rem;min-height:32px;cursor:pointer;transition:background-color 0.15s ease, color 0.15s ease}.year-filter:hover{background:var(--accent);color:#fff}.year-filter.is-active{background:var(--accent);color:#fff}.year-filter:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.bibtex-note{font-size:0.9rem;color:var(--text-muted);margin-top:1.5rem;padding:0.75rem 1rem;background:var(--surface);border-radius:6px}.nav-toggle{display:none;background:none;border:none;cursor:pointer;padding:0.5rem;min-width:44px;min-height:44px;flex-direction:column;gap:5px;align-items:center;justify-content:center;color:var(--text)}.nav-toggle-bar{display:block;width:22px;height:2px;background:currentColor;border-radius:1px;transition:transform 0.2s ease, opacity 0.2s ease}.nav-toggle[aria-expanded="true"] .nav-toggle-bar:nth-child(1){transform:translateY(7px) rotate(45deg)}.nav-toggle[aria-expanded="true"] .nav-toggle-bar:nth-child(2){opacity:0}.nav-toggle[aria-expanded="true"] .nav-toggle-bar:nth-child(3){transform:translateY(-7px) rotate(-45deg)}@media (max-width: 900px){.header-inner{flex-wrap:nowrap}.site-title{flex:1}.theme-toggle{order:3}.nav-toggle{display:flex;order:2}.site-nav{order:4;width:100%;flex-basis:100%}.nav-list{flex-direction:column;align-items:stretch;gap:0;display:none;padding:0.25rem 0 0.5rem;width:100%}.nav-list.open{display:flex}.nav-list a{padding:0.7rem 0.5rem}.has-children{flex-wrap:wrap}.has-children>a{flex:1}.nav-chevron{margin-left:0;min-width:44px;min-height:44px}.nav-chevron svg{transition:transform 0.2s ease}.has-children.open .nav-chevron svg{transform:rotate(180deg)}.nav-sublist{position:static;display:none;width:100%;margin:0;padding:0 0 0.25rem 1.25rem;background:transparent;border:none;border-radius:0;box-shadow:none}.has-children.open .nav-sublist{display:block}.has-children:hover .nav-sublist,.has-children:focus-within .nav-sublist{display:none}.has-children.open:hover .nav-sublist,.has-children.open:focus-within .nav-sublist{display:block}.nav-sublist a{color:var(--accent);font-size:0.95rem;min-height:44px}.nav-sublist a.active{background:var(--surface)}.nav-group-label{color:var(--text-muted);padding-top:0.4rem}.nav-group-label:not(:first-child){border-top:none;margin-top:0.15rem}}@media (max-width: 767px){.about{flex-direction:column;align-items:center;text-align:left}.about-photo{flex:none;width:100%;max-width:280px;margin-top:0}.latest-pubs{padding:1.25rem 1rem 1rem}.contact-card{padding:0.9rem 1rem 1rem}}@media (max-width: 420px){.wrap{padding:0 1rem}h1{font-size:1.6rem}}
