body { font-family: "Noto Sans", sans-serif; }

.site-nav { position: sticky; top: 0; z-index: 100; background: rgba(255, 255, 255, 0.92); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); border-bottom: 1px solid rgba(0, 0, 0, 0.07); }

.site-nav-inner { display: flex; align-items: center; justify-content: space-between; padding: 0.7rem 1.25rem; }

.site-nav-brand { font-family: 'Google Sans', 'Noto Sans', sans-serif; font-weight: 700; font-size: 1.05rem; color: #1a1a1a; text-decoration: none; transition: color 0.2s ease; }
.site-nav-brand:hover { color: #1e3a5f; }

.site-nav-links { display: flex; gap: 1.5rem; }

.site-nav-links a { font-family: 'Google Sans', 'Noto Sans', sans-serif; font-size: 0.95rem; font-weight: 600; color: #444; text-decoration: none; padding: 0.15em 0; border-bottom: 2px solid transparent; transition: color 0.2s ease, border-color 0.2s ease; }
.site-nav-links a:hover { color: #1e3a5f; }
.site-nav-links a.is-active { color: #1e3a5f; border-bottom-color: #1e3a5f; }

@media (max-width: 520px) { .site-nav-inner { flex-direction: column; gap: 0.45rem; padding: 0.6rem 1rem; }
  .site-nav-links { gap: 1.1rem; } }
.title { font-family: 'Google Sans'; font-weight: 700; }

.hero .buttons .ai-google-scholar { color: #4285f4; }

.hero .buttons .fa-github { color: #24292f; }

.hero .buttons .fa-researchgate { color: #00ccbb; }

.hero .buttons .fa-linkedin { color: #0a66c2; }

.hero .buttons .fa-file { color: #1e3a5f; }

.hero .buttons .fa-book { color: #ff2442; }

.portrait { overflow: hidden; border-radius: 8px; box-shadow: 0 10px 28px rgba(0, 0, 0, 0.14); border: 1px solid rgba(0, 0, 0, 0.05); transition: transform 0.4s ease, box-shadow 0.4s ease; }

.portrait img { display: block; width: 100%; transition: transform 0.5s ease; }

.portrait:hover { box-shadow: 0 14px 32px rgba(0, 0, 0, 0.18); }

.portrait:hover img { transform: scale(1.03); }

.interests-section { padding-top: 2rem; padding-bottom: 2rem; }

.interests-list { display: flex; flex-wrap: wrap; gap: 0.75em 1em; margin-top: 0.75em; }

.interests-list + .interests-list { margin-top: 0.85em; }

.emoji-icon { font-size: 1.15em; line-height: 1; font-family: 'Apple Color Emoji', 'Segoe UI Emoji', 'Noto Color Emoji', sans-serif; }

.interest-chip { display: inline-flex; align-items: center; gap: 0.55em; padding: 0.55em 1em; background: #f5f7fa; border: 1px solid #e2e8f0; border-radius: 999px; font-size: 95%; font-weight: 500; color: #1f2937; transition: transform 0.2s ease, box-shadow 0.2s ease, background 0.2s ease; }

.interest-chip:hover { transform: translateY(-1px); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.06); background: #fff; }

.interest-chip i { color: #1e3a5f; font-size: 110%; }

.news-list .news-extra { display: none; }

.news-list.is-expanded .news-extra { display: list-item; }

.news-toggle, .preprint-toggle { margin-top: 0.4em; padding: 0.35em 1em; font-family: 'Google Sans', 'Noto Sans', sans-serif; font-size: 85%; font-weight: 600; color: #1e3a5f; background: #f5f7fa; border: 1px solid #e2e8f0; border-radius: 999px; cursor: pointer; transition: background 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease; }

.news-toggle:hover, .preprint-toggle:hover { background: #fff; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.06); transform: translateY(-1px); }

.preprint-extra { display: none; }

.preprint-extra.is-expanded { display: block; }

.talks-section, .service-section { padding-top: 2rem; padding-bottom: 2rem; }

.service-list { list-style: none; margin: 0.75em 0 0; padding: 0; }

.service-item { display: flex; align-items: baseline; gap: 0.9em; padding: 0.7em 0; border-bottom: 1px solid #eef0f3; }

.service-item:last-child { border-bottom: none; }

.service-role { flex: 0 0 auto; min-width: 9.5em; text-align: center; font-family: 'Google Sans', 'Noto Sans', sans-serif; font-size: 70%; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; color: #fff; background: #1e3a5f; border-radius: 0.35em; padding: 0.3em 0.6em; position: relative; top: -0.1em; }

.service-role-associate-editor { background: #c0392b; }

.service-venue { flex: 1 1 auto; color: #333; min-width: 0; }

@media (max-width: 600px) { .service-item { flex-direction: column; gap: 0.35em; } }
.talks-list { list-style: none; margin: 0.75em 0 0; padding: 0; }

.talk-item { display: flex; align-items: baseline; gap: 0.9em; padding: 0.7em 0; border-bottom: 1px solid #eef0f3; }

.talk-item:last-child { border-bottom: none; }

.talk-type { flex: 0 0 auto; display: inline-block; min-width: 6.2em; text-align: center; font-family: 'Google Sans', 'Noto Sans', sans-serif; font-size: 70%; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; color: #fff; background: #1e3a5f; border-radius: 0.35em; padding: 0.3em 0.6em; position: relative; top: -0.1em; }

.talk-type-interview { background: #0e7490; }

.talk-type-invited-talk { background: #1e3a5f; }

.talk-body { flex: 1 1 auto; display: flex; flex-direction: column; gap: 0.15em; min-width: 0; }

.talk-title { font-weight: 600; color: #1a1a1a; }

a.talk-title:hover { color: #1e3a5f; text-decoration: underline; }

.talk-host { color: #666; font-size: 90%; }

.talk-date { flex: 0 0 auto; color: #888; font-size: 88%; white-space: nowrap; }

@media (max-width: 600px) { .talk-item { flex-wrap: wrap; gap: 0.4em 0.7em; }
  .talk-body { flex-basis: 100%; order: 3; }
  .talk-date { margin-left: auto; } }
.platforms-section { padding-top: 2rem; padding-bottom: 4.5rem; }

.platforms-subtitle { color: #555; margin-top: -0.25em; margin-bottom: 1.25em; font-size: 95%; }

.platforms-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 1.6rem 1.2rem; padding: 0.75rem 0.25rem 1rem; }

@media (max-width: 900px) { .platforms-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.4rem 1rem; } }
@media (max-width: 600px) { .platforms-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.2rem 0.85rem; } }
.platform-card { display: flex; flex-direction: column; align-items: center; text-align: center; min-width: 0; }

.platform-image { width: 100%; aspect-ratio: 1 / 1; border-radius: 10px; background: #fafbfc; border: 1px solid rgba(0, 0, 0, 0.05); box-shadow: 0 6px 16px rgba(0, 0, 0, 0.08); display: flex; align-items: center; justify-content: center; overflow: hidden; transition: transform 0.35s cubic-bezier(0.2, 0.8, 0.2, 1), box-shadow 0.35s ease; }

.platform-image img { max-width: 82%; max-height: 82%; object-fit: contain; transition: transform 0.4s ease; }

.platforms-grid .platform-card:nth-child(13n+1) .platform-image { transform: rotate(-2.5deg) translateY(-7px); }

.platforms-grid .platform-card:nth-child(13n+2) .platform-image { transform: rotate(2.4deg) translateY(6px); }

.platforms-grid .platform-card:nth-child(13n+3) .platform-image { transform: rotate(-1deg) translateY(8px); }

.platforms-grid .platform-card:nth-child(13n+4) .platform-image { transform: rotate(1.6deg) translateY(-4px); }

.platforms-grid .platform-card:nth-child(13n+5) .platform-image { transform: rotate(2deg) translateY(5px); }

.platforms-grid .platform-card:nth-child(13n+6) .platform-image { transform: rotate(1.2deg) translateY(-7px); }

.platforms-grid .platform-card:nth-child(13n+7) .platform-image { transform: rotate(-1.8deg) translateY(-5px); }

.platforms-grid .platform-card:nth-child(13n+8) .platform-image { transform: rotate(2.7deg) translateY(3px); }

.platforms-grid .platform-card:nth-child(13n+9) .platform-image { transform: rotate(-1.4deg) translateY(6px); }

.platforms-grid .platform-card:nth-child(13n+10) .platform-image { transform: rotate(-2.2deg) translateY(-3px); }

.platforms-grid .platform-card:nth-child(13n+11) .platform-image { transform: rotate(-0.8deg) translateY(4px); }

.platforms-grid .platform-card:nth-child(13n+12) .platform-image { transform: rotate(0.9deg) translateY(-6px); }

.platforms-grid .platform-card:nth-child(13n) .platform-image { transform: rotate(-2.6deg) translateY(-2px); }

.platform-card:hover .platform-image { transform: rotate(0deg) translateY(-8px) !important; box-shadow: 0 16px 32px rgba(0, 0, 0, 0.16); z-index: 2; }

.platform-card:hover .platform-image img { transform: scale(1.04); }

.platform-card-next { display: flex; align-items: center; justify-content: center; aspect-ratio: 1 / 1; }

.platform-next-text { color: #888; font-family: 'Google Sans', 'Noto Sans', sans-serif; font-style: italic; font-size: 105%; letter-spacing: 0.01em; user-select: none; }

.platform-next-arrow { display: inline-block; margin-left: 0.35em; transition: transform 0.3s ease; }

.platform-card-next:hover .platform-next-text { color: #1e3a5f; }

.platform-card-next:hover .platform-next-arrow { transform: translateX(5px); }

.platform-venues a.venue-badge { text-decoration: none; cursor: pointer; transition: transform 0.2s ease, box-shadow 0.2s ease, background 0.2s ease; }

.platform-venues a.venue-badge:hover { transform: translateY(-1px); box-shadow: 0 4px 10px rgba(0, 0, 0, 0.15); background: #15263f; }

html { scroll-behavior: smooth; }

.publication-block { scroll-margin-top: 24px; }

.platform-venues { margin-top: 0.65em; display: flex; flex-wrap: wrap; justify-content: center; gap: 0.35em; }

.platform-venues .venue-badge { margin-bottom: 0; font-size: 72%; padding: 0.25em 0.65em; }

.footer .footer-links a { font-size: 25px; color: #000; }

.footer .footer-links { margin-bottom: 0.5rem !important; }

.footer .footer-bottom-row { margin-top: 0.25rem; margin-bottom: 0 !important; }

.visitor-map { display: inline-block; width: 290px; max-width: 100%; }

.visitor-globe-wrap { margin-top: 1.25rem; padding-top: 1rem; border-top: 1px solid rgba(0, 0, 0, 0.06); }

.globe-toggle { padding: 0.4em 1.1em; font-family: 'Google Sans', 'Noto Sans', sans-serif; font-size: 88%; font-weight: 600; color: #0e7490; background: #cffafe; border: none; border-radius: 999px; cursor: pointer; transition: background 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease; }

.globe-toggle:hover { background: #a5f3fc; box-shadow: 0 4px 12px rgba(14, 116, 144, 0.18); transform: translateY(-1px); }

.globe-stats { margin: 0.75rem auto 0; max-width: 520px; color: #555; font-family: 'Google Sans', 'Noto Sans', sans-serif; }

.vstat-summary { font-size: 95%; font-weight: 600; margin-bottom: 0.9em; }

.vstat-cols { display: flex; flex-wrap: wrap; gap: 1rem; justify-content: center; text-align: left; }

.vstat-col { flex: 1 1 140px; min-width: 130px; }
.vstat-col h4 { margin: 0 0 0.4em; font-size: 72%; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; color: #1e3a5f; }
.vstat-col ul { list-style: none; margin: 0; padding: 0; }
.vstat-col li { display: flex; justify-content: space-between; gap: 0.6em; font-size: 84%; font-weight: 400; color: #444; padding: 0.15em 0; border-bottom: 1px solid #f0f2f5; }
.vstat-col li span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.vstat-col li b { color: #1e3a5f; }
.vstat-col .vstat-empty { justify-content: center; color: #aaa; }

.globe-box { width: 100%; max-width: 520px; height: 420px; margin: 0.75rem auto 0; }
.globe-box canvas { display: block; margin: 0 auto; }

.globe-box-lg { max-width: 620px; height: 520px; }

.visitors-intro { color: #666; font-size: 95%; margin-top: -0.25em; margin-bottom: 1em; }

.visitor-globe-page .globe-stats { margin-top: 1.25rem; }

.globe-loading { color: #888; font-size: 90%; text-align: center; padding-top: 2.5rem; }

.owner-panel { padding: 1.25rem 0; background: #f4f7fb; border-bottom: 1px solid #e2e8f0; }

.owner-card { background: #fff; border: 1px solid #e6eaef; border-radius: 10px; box-shadow: 0 6px 18px rgba(0, 0, 0, 0.06); overflow: hidden; }

.owner-head { display: flex; align-items: center; gap: 0.5em; padding: 0.8rem 1rem; border-bottom: 1px solid #eee; font-family: 'Google Sans', 'Noto Sans', sans-serif; }
.owner-head span { color: #888; font-weight: 400; font-size: 88%; }
.owner-head .owner-refresh, .owner-head .owner-close { border: 1px solid #e2e8f0; background: #f7f9fb; border-radius: 999px; padding: 0.28em 0.95em; font-family: 'Google Sans', 'Noto Sans', sans-serif; font-size: 0.8rem; font-weight: 600; color: #444; cursor: pointer; transition: background 0.2s ease, box-shadow 0.2s ease; }
.owner-head .owner-refresh { margin-left: auto; }
.owner-head .owner-refresh:hover, .owner-head .owner-close:hover { background: #fff; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08); }

.owner-table-wrap { overflow: auto; max-height: 60vh; }

.owner-table { width: 100%; border-collapse: collapse; font-size: 0.85rem; }
.owner-table th, .owner-table td { text-align: left; padding: 0.45em 0.8em; border-bottom: 1px solid #f0f0f0; white-space: nowrap; }
.owner-table th { position: sticky; top: 0; background: #f7f9fb; font-family: 'Google Sans', 'Noto Sans', sans-serif; font-weight: 600; color: #444; }
.owner-table td:nth-child(3) { max-width: 240px; overflow: hidden; text-overflow: ellipsis; }
.owner-table tbody tr:hover { background: #fafbfc; }

.visitor-counter { display: inline-block; margin-bottom: 0.5rem; max-width: 100%; }
.visitor-counter a { display: inline-block; text-decoration: none; transition: opacity 0.2s ease; }
.visitor-counter a:hover { opacity: 0.75; }
.visitor-counter img { display: block; max-width: 100%; height: auto; }

.year-heading { margin-top: 1.5em !important; margin-bottom: 0.75em !important; color: #555; border-bottom: 1px solid #ddd; padding-bottom: 0.25em; }

.author-legend { color: #777; font-size: 88%; margin-top: -0.5em; margin-bottom: 0.5em; font-style: italic; }
.author-legend sup { font-style: normal; color: #1e3a5f; font-weight: 600; }

.publications-intro { color: #555; font-size: 95%; margin-top: -0.25em; margin-bottom: 1.4em; line-height: 1.75; }
.publications-intro sup { color: #1e3a5f; font-weight: 600; }

.pub-filters { display: flex; flex-wrap: wrap; gap: 0.55em; margin-top: 0.25em; margin-bottom: 1.5em; }

.pub-filter { display: inline-flex; align-items: center; gap: 0.35em; padding: 0.4em 0.95em; background: #f5f7fa; border: 1px solid #e2e8f0; border-radius: 999px; font-family: 'Google Sans', 'Noto Sans', sans-serif; font-size: 90%; font-weight: 600; color: #1f2937; cursor: pointer; transition: transform 0.15s ease, box-shadow 0.15s ease, background 0.15s ease, color 0.15s ease, border-color 0.15s ease; }
.pub-filter:hover { transform: translateY(-1px); box-shadow: 0 4px 10px rgba(0, 0, 0, 0.06); background: #fff; }
.pub-filter.is-active { background: #1e3a5f; color: #fff; border-color: #1e3a5f; box-shadow: 0 4px 10px rgba(30, 58, 95, 0.18); }
.pub-filter.is-active .pub-filter-count { color: rgba(255, 255, 255, 0.75); }

.pub-filter-count { font-weight: 500; color: #6b7280; font-size: 92%; }

.publications-full-link { color: #1e3a5f; font-weight: 600; text-decoration: none; margin-left: 0.45em; white-space: nowrap; transition: color 0.2s ease; }
.publications-full-link i { margin: 0 0.18em; }
.publications-full-link:hover { text-decoration: underline; color: #15263f; }

.venue-badge { display: inline-block; background: #1e3a5f; color: #fff !important; font-family: 'Google Sans', 'Noto Sans', sans-serif; font-size: 80%; font-weight: 700; letter-spacing: 0.04em; padding: 0.3em 0.85em; border-radius: 0.35em; margin-bottom: 0.6em; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08); }

.venue-badge-preprint { background: #6b7280; }

.featured-badge { display: inline-block; background: #c0392b; color: #fff !important; font-family: 'Google Sans', 'Noto Sans', sans-serif; font-size: 78%; font-weight: 700; letter-spacing: 0.05em; padding: 0.28em 0.8em; border-radius: 0.35em; margin-bottom: 0.5em; margin-right: 0.4em; box-shadow: 0 1px 3px rgba(192, 57, 43, 0.25); }

.pub-badge-row { display: flex; align-items: center; flex-wrap: wrap; gap: 0.45em; margin-bottom: 0.6em; }
.pub-badge-row .featured-badge, .pub-badge-row .venue-badge { margin-bottom: 0; margin-right: 0; }

.media-toggle { margin-left: auto; display: inline-flex; align-items: center; gap: 0.35em; padding: 0.28em 0.8em; font-family: 'Google Sans', 'Noto Sans', sans-serif; font-size: 78%; font-weight: 700; letter-spacing: 0.03em; line-height: 1.6; color: #0e7490; background: #cffafe; border: none; border-radius: 0.35em; cursor: pointer; box-shadow: 0 1px 2px rgba(14, 116, 144, 0.12); transition: background 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease; }
.media-toggle i { font-size: 0.9em; }
.media-toggle:hover { background: #a5f3fc; transform: translateY(-1px); box-shadow: 0 3px 8px rgba(14, 116, 144, 0.2); }

.publication-block { transition: transform 0.25s ease; border-radius: 8px; }
.publication-block:hover { transform: translateY(-3px); }
.publication-block:hover .publication-image { box-shadow: 0 10px 24px rgba(0, 0, 0, 0.12); }
.publication-block .publication-image { transition: box-shadow 0.25s ease; }
.publication-block .publication-title { width: fit-content; margin: 0 !important; font-weight: 600; font-size: 110% !important; }
.publication-block .publication-title a { color: #000; }
.publication-block .publication-venue { color: #555; width: fit-content; margin-top: 0; }
.publication-block .publication-awards-row { margin-top: 0.35em; line-height: 1.6; }
.publication-block .award-badge { display: inline-block; font-size: 82%; font-weight: 700 !important; color: #fff !important; background: #c0392b !important; border-radius: 0.3em; padding: 0.15em 0.65em; margin-right: 0.4em; letter-spacing: 0.01em; line-height: 1.5; }
.publication-block .publication-authors .author-me { color: #000; font-weight: 600; }
.publication-block .publication-authors a { color: #000 !important; }
.publication-block .publication-authors a:hover { text-decoration: underline; }
.publication-block .publication-image { border-radius: 2%; width: 100%; overflow: hidden; font-size: 0; }
.publication-block .publication-image img, .publication-block .publication-image video { display: block; width: 100%; height: auto; }
.publication-block .publication-mediacell { position: relative; width: 100%; overflow: hidden; font-size: 0; }
.publication-block .publication-mediacell video { display: none; }
.publication-block .publication-image.publication-zoom { transition: transform 0.3s cubic-bezier(0.2, 0.8, 0.2, 1), box-shadow 0.3s ease; cursor: zoom-in; transform-origin: center center; }
.publication-block .publication-image.publication-zoom:hover { transform: scale(1.7); position: relative; z-index: 50; box-shadow: 0 20px 40px rgba(0, 0, 0, 0.25); }
.publication-block .publication-description { color: #333; margin: 0.5em 0; }
.publication-block .publication-links { margin: 0 !important; margin-top: 0.5em !important; }
