:root{--bg: #f7f8fb;--card: #ffffff;--accent: #2563eb;--text: #111827}*{box-sizing:border-box}body{margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial;color:var(--text);-webkit-font-smoothing:antialiased;background:url(/bg.png) no-repeat center center fixed;background-size:cover}.app-container{max-width:1100px;margin:24px auto;padding:20px}.site-header{background:var(--card);padding:12px 16px;border-radius:10px;box-shadow:0 2px 6px #1018280a;margin-bottom:16px}.header-inner{display:flex;align-items:center;justify-content:space-between;gap:12px}.brand{display:flex;align-items:center;gap:12px}.avatar{width:56px;height:56px;border-radius:999px;background:#e5e7eb;object-fit:cover}.brand-name{margin:0;font-size:18px}.brand-title{font-size:13px;color:#6b7280}.nav a{margin-left:12px;text-decoration:none;color:var(--accent)}.nav a.active{font-weight:700}.main-content{margin-top:16px}.hero{background:var(--card);padding:20px;border-radius:10px}.lead{color:#374151}.skill-list{margin-top:10px}.skill{display:inline-block;background:#eef2ff;color:#1e40af;padding:6px 10px;border-radius:999px;margin-right:8px;font-size:13px}.cards{display:flex;flex-wrap:wrap;gap:12px;margin-top:12px}.card{flex:1 1 240px;min-width:220px;background:linear-gradient(180deg,#fff,#f8fafc);padding:14px;border-radius:8px;border:1px solid #e6eef8}.project-card h3{margin:0 0 8px}.hero{margin-bottom:24px}.preview-projects{margin-top:8px;padding-top:8px}@media(max-width:720px){.hero{margin-bottom:16px}.preview-projects{margin-top:6px;padding-top:6px}}.preview-projects{background:var(--card);padding:16px;border-radius:10px;box-shadow:0 2px 6px #1018280a;margin-bottom:16px}.preview-projects>h3{margin-top:0;margin-bottom:8px;font-size:1.1rem}.preview-projects .cards{margin-top:12px}.projects-page .cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.projects-page .card{width:100%;display:flex;flex-direction:column}@media(max-width:720px){.projects-page .cards{grid-template-columns:1fr}}.about-page,.projects-page,.contact-page{background:var(--card);padding:16px;border-radius:10px;margin-bottom:12px}.contact-form label{display:block;margin-bottom:8px}.contact-form input,.contact-form textarea{width:100%;padding:8px;border-radius:6px;border:1px solid #e5e7eb}.site-footer{text-align:center;margin-top:12px;color:#6b7280}.about-page{background:transparent;padding:0}.about-card{background:var(--card);padding:16px;border-radius:10px;box-shadow:0 2px 6px #1018280a;margin-bottom:16px}.about-card h2,.about-card h3{margin-top:0}.skill-badge{display:inline-block;background:#eef2ff;color:#0f172a;padding:6px 10px;border-radius:999px;margin-right:8px;margin-bottom:8px;font-size:13px}.skill-category{margin-bottom:12px}.skill-category-title{display:block;margin-bottom:8px;font-weight:600}.thesis-link{color:var(--accent);text-decoration:none}.thesis-link:hover{text-decoration:underline}.thesis-title{font-weight:600;margin-bottom:6px}.muted{color:#6b7280}@media(max-width:720px){.about-card{padding:12px}.skill-badge{font-size:12px;padding:5px 8px}}@media(max-width:720px){.header-inner{flex-direction:column;align-items:flex-start}.cards{flex-direction:column}}.paper-block{background:var(--card);border:1px solid #e9eef8;border-radius:10px;padding:12px 14px;margin-bottom:12px;box-shadow:0 1px 2px #10182808;line-height:1.6}.paper-block--title .paper-title{font-size:1rem;font-weight:600;word-break:break-word;white-space:pre-wrap}.paper-block--links{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.paper-block--links a.thesis-link{text-decoration:none;padding:7px 12px;border-radius:8px;border:1px solid transparent;font-size:.95rem;color:var(--accent);background:linear-gradient(180deg,#2563eb0a,#2563eb05)}.paper-block--links a.thesis-link:hover{text-decoration:underline;box-shadow:0 1px 3px #2563eb14}.paper-block--links a[download]{color:#0f172a;background:transparent;border:1px solid rgba(15,23,42,.06)}.paper-block--heading{font-size:1.125rem;background:transparent;border:none;box-shadow:none;padding:0 12px;margin-bottom:6px;font-weight:700;color:inherit}.paper-block--para{background:linear-gradient(180deg,#fff,#fafbff);border-radius:8px;padding:10px 12px;margin-bottom:10px;border:1px solid #f0f4fb}.paper-block--para p{margin:0;font-size:.96rem;white-space:pre-wrap;color:var(--text)}.paper-block.muted{color:#6b7280;background:transparent;border:none;box-shadow:none;padding:0;margin-bottom:0}@media(max-width:720px){.paper-block{padding:10px;margin-bottom:10px}.paper-block--para{padding:8px 10px}.paper-block--links a.thesis-link{padding:6px 10px;font-size:.9rem}}.interactive-guide{display:block;max-width:100%}.interactive-image-wrapper{width:100%;max-width:900px;margin:0 auto;cursor:pointer;border-radius:10px;overflow:hidden;border:1px solid rgba(0,0,0,.04);box-shadow:0 2px 6px #1018280a}.interactive-image{display:block;width:100%;height:auto;object-fit:cover}.chat-modal{position:fixed;right:18px;bottom:18px;width:340px;max-width:calc(100% - 36px);background:var(--card);border-radius:12px;box-shadow:0 6px 28px #10182833;border:1px solid rgba(14,20,40,.04);overflow:hidden;z-index:2000;display:flex;flex-direction:column}.chat-header{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid rgba(14,20,40,.04)}.chat-title{font-weight:700}.chat-close{background:transparent;border:none;font-size:20px;line-height:1;cursor:pointer}.chat-body{padding:12px;display:flex;flex-direction:column;gap:8px;max-height:300px;overflow:auto}.chat-bubble{max-width:100%;padding:8px 10px;border-radius:10px;font-size:.95rem;line-height:1.3}.chat-bubble.guide{align-self:flex-start;background:linear-gradient(180deg,#eef6ff,#f8fbff);border:1px solid rgba(37,99,235,.08)}.chat-bubble.system{align-self:center;background:transparent;color:#555;font-style:italic}.chat-bubble.user{align-self:flex-end;background:#edf7ec;border:1px solid rgba(34,197,94,.08)}.chat-footer{display:flex;gap:8px;padding:10px;border-top:1px solid rgba(14,20,40,.04);justify-content:flex-end}.chat-btn{padding:8px 10px;border-radius:8px;border:1px solid rgba(14,20,40,.06);background:transparent;cursor:pointer;font-size:.95rem}.chat-btn--primary{background:linear-gradient(180deg,#2563eb1a,#2563eb0f);border-color:#2563eb1f;color:var(--accent)}@media(max-width:720px){.chat-modal{width:calc(100% - 36px);right:18px;left:18px;bottom:18px}}.rpg-wrap{width:100%;box-sizing:border-box}.rpg-inner{display:flex;align-items:center;gap:14px;width:100%}.rpg-avatar{width:160px;height:160px;object-fit:cover;border-radius:10px;box-shadow:0 6px 18px #0000002e;flex-shrink:0}.rpg-right{flex:1;display:flex;align-items:center}.rpg-box{position:relative;width:100%;min-height:96px;max-width:100%;padding:12px 14px 60px;border-radius:12px;background:#0a0a0aeb;border:2px solid rgba(255,255,255,.95);box-shadow:0 8px 24px #00000052;display:flex;flex-direction:column;justify-content:flex-start;align-items:stretch}.rpg-text{margin:0;color:#fff;font-size:15px;line-height:1.45;white-space:pre-wrap;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial}.rpg-controls{position:absolute;right:12px;bottom:10px;display:flex;gap:8px;align-items:center;z-index:6}.rpg-small-placeholder{display:inline-block;width:36px;height:34px}.rpg-small-btn{background:transparent;border:1px solid rgba(255,255,255,.08);color:#fff;padding:6px 8px;border-radius:8px;cursor:pointer;font-size:14px;line-height:1}.rpg-small-btn:disabled{opacity:.35;cursor:not-allowed}.rpg-start-inline{padding:8px 12px;background:#ffffff0a;color:#fff;border:none;border-radius:8px;cursor:pointer;font-size:14px}.rpg-prev-arrow,.rpg-next-arrow{position:absolute;bottom:14px;background:#ffffff0a;border:1px solid rgba(255,255,255,.08);color:#fff;padding:6px 10px;border-radius:10px;cursor:pointer;font-size:16px;line-height:1;z-index:9;opacity:.95}.rpg-prev-arrow{right:60px}.rpg-next-arrow{right:14px}.rpg-prev-arrow.float,.rpg-next-arrow.float{animation:rpg-float 1.1s infinite ease-in-out}.rpg-prev-arrow:active,.rpg-next-arrow:active{transform:translateY(2px) scale(.98)}@keyframes rpg-float{0%{transform:translateY(0)}50%{transform:translateY(6px)}to{transform:translateY(0)}}@media(max-width:480px){.rpg-prev-arrow{right:46px;padding:5px 8px;font-size:15px}.rpg-next-arrow{right:10px;padding:5px 8px;font-size:15px}}.rpg-tail{position:absolute;left:-10px;bottom:28px;width:0;height:0;border-top:8px solid transparent;border-bottom:8px solid transparent;border-right:12px solid rgba(10,10,10,.92)}.rpg-end-actions{position:absolute;right:12px;bottom:10px;display:flex;gap:8px;z-index:6}.rpg-btn{padding:6px 10px;border-radius:8px;border:1px solid rgba(255,255,255,.06);background:#ffffff08;color:#fff;cursor:pointer;font-size:13px}.rpg-btn.primary{background:#ffffff0a;color:#fff;border-color:#ffffff0a}@media(max-width:480px){.rpg-avatar{width:128px;height:128px}.rpg-start-inline,.rpg-small-btn{font-size:13px;padding:6px 10px}.rpg-box{min-height:84px;padding:10px 12px 52px}.rpg-text{font-size:13px}.rpg-btn{font-size:12px;padding:5px 8px}}@media(max-width:360px){.rpg-inner{flex-direction:column;align-items:flex-start;gap:10px}.rpg-avatar{width:96px;height:96px}.rpg-right{width:100%}.rpg-box{width:100%;min-height:88px;padding:10px 12px 48px;align-self:stretch}.rpg-start-inline{width:100%}}@media(max-width:480px){.rpg-prev-arrow,.rpg-next-arrow{padding:4px 6px;font-size:14px;border-radius:8px;opacity:.98}.rpg-prev-arrow{right:44px}.rpg-next-arrow{right:8px}.rpg-small-btn,.rpg-start-inline,.rpg-btn{padding:6px 8px;font-size:13px;border-radius:8px}.rpg-end-actions .rpg-btn{padding:6px 8px;font-size:13px}}@media(max-width:360px){.rpg-prev-arrow,.rpg-next-arrow{padding:3px 6px;font-size:13px;border-radius:7px}.rpg-prev-arrow{right:40px}.rpg-next-arrow{right:6px}.rpg-small-btn,.rpg-start-inline,.rpg-btn{padding:5px 7px;font-size:12px;border-radius:7px}.rpg-end-actions .rpg-btn{padding:5px 7px;font-size:12px}}
