:root{
  --bg-1:#0b1220; --bg-2:#0f1b2e; --ink:#e8eef7; --ink-dim:#9fb2c7; --ink-faint:#65788f;
  --accent:#00b4d8; --accent-2:#6fd424; --line:rgba(159,178,199,.16); --card:rgba(255,255,255,.04);
  --grad:linear-gradient(100deg,var(--accent),var(--accent-2));
  --font:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:var(--font);color:var(--ink);min-height:100vh;display:flex;flex-direction:column;
  background:linear-gradient(160deg,var(--bg-1),var(--bg-2));background-attachment:fixed;-webkit-font-smoothing:antialiased}
a{color:var(--accent)}

/* topbar */
.topbar{display:flex;align-items:center;justify-content:space-between;padding:14px 28px;
  border-bottom:1px solid var(--line);position:sticky;top:0;background:rgba(11,18,32,.85);backdrop-filter:blur(6px);z-index:10}
.brand{display:flex;align-items:center;gap:10px;font-weight:800;font-size:16px;color:var(--ink);text-decoration:none;letter-spacing:-.01em}
.brand-logo{height:22px;filter:drop-shadow(0 0 1px rgba(255,255,255,.9))}
.topnav{display:flex;align-items:center;gap:18px;font-weight:600;font-size:14px}
.topnav a{color:var(--ink-dim);text-decoration:none}
.topnav a:hover{color:var(--ink)}
.who{color:var(--ink-faint);font-weight:500}
.inline{display:inline}
.linkish{background:none;border:none;color:var(--ink-dim);font:inherit;font-weight:600;cursor:pointer;padding:0}
.linkish:hover{color:var(--ink)}

.wrap{flex:1;width:100%;max-width:1040px;margin:0 auto;padding:38px 28px}
.foot{padding:22px 28px;color:var(--ink-faint);font-size:13px;text-align:center;border-top:1px solid var(--line)}

/* profile */
.profile{display:grid;grid-template-columns:280px 1fr;gap:38px;align-items:start;margin-bottom:46px}
.avatar img{width:280px;height:340px;object-fit:cover;border-radius:18px;border:1px solid var(--line);box-shadow:0 18px 50px -24px rgba(0,0,0,.7)}
.profile-body h1{font-size:clamp(28px,4vw,42px);letter-spacing:-.02em;margin-bottom:8px}
.roles{color:var(--ink-dim);font-weight:600;margin-bottom:12px}
.roles a{text-decoration:none}
.tagline{font-size:16px;margin-bottom:12px}
.bio{color:var(--ink-dim);line-height:1.6;max-width:64ch;margin-bottom:16px;white-space:pre-line}
.links{display:flex;flex-wrap:wrap;gap:10px}
.links a{font-size:13px;font-weight:600;text-decoration:none;color:var(--ink);
  border:1px solid var(--line);border-radius:8px;padding:7px 12px;background:var(--card)}
.links a:hover{border-color:var(--accent)}

/* sections */
.section{margin-bottom:40px}
.section-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:16px}
.section h1,.section h2{letter-spacing:-.01em}
.section h2{font-size:22px}
.more{font-size:13px;font-weight:600;text-decoration:none}
.muted{color:var(--ink-faint)}

/* presentation cards */
.pgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}
.pcard{display:block;text-decoration:none;color:inherit;border:1px solid var(--line);border-radius:14px;
  padding:18px;background:var(--card);transition:.16s;position:relative;overflow:hidden}
.pcard::after{content:"";position:absolute;inset:0 0 auto 0;height:3px;background:var(--grad);opacity:.85}
.pcard:hover{transform:translateY(-3px);border-color:var(--accent)}
.pcard-top{display:flex;gap:8px;align-items:center;margin-bottom:10px}
.pcard h3{font-size:16px;line-height:1.25;margin-bottom:6px}
.pcard p{font-size:13px;color:var(--ink-dim);line-height:1.45}
.pcard-event{margin-top:10px;font-size:11.5px;color:var(--ink-faint)}
.fmt{font-size:10.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:3px 8px;border-radius:6px;
  background:rgba(0,180,216,.16);color:var(--accent);border:1px solid rgba(0,180,216,.3)}
.fmt-pdf{background:rgba(244,162,97,.16);color:#f4a261;border-color:rgba(244,162,97,.3)}
.fmt-latex{background:rgba(111,212,36,.16);color:var(--accent-2);border-color:rgba(111,212,36,.3)}
.badge{font-size:10.5px;font-weight:600;color:var(--ink-faint);border:1px solid var(--line);border-radius:6px;padding:3px 8px}
.badge.lock{color:#f4a261;border-color:rgba(244,162,97,.3)}

/* forms */
.auth{max-width:380px;margin:30px auto}
.form{display:flex;flex-direction:column;gap:14px;margin-top:14px}
.form label{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:600;color:var(--ink-dim)}
.form input,.form select,.form textarea{font:inherit;color:var(--ink);background:rgba(255,255,255,.05);
  border:1px solid var(--line);border-radius:9px;padding:10px 12px}
.form input:focus,.form select:focus,.form textarea:focus{outline:none;border-color:var(--accent)}
.btn{font-weight:700;color:#022;background:var(--grad);border:none;border-radius:10px;padding:11px 18px;cursor:pointer;width:max-content}
.btn:hover{filter:brightness(1.06)}
.error{color:#ff8a8a;font-size:14px}
.upload{max-width:640px}

/* table */
.tbl{width:100%;border-collapse:collapse;margin-top:10px;font-size:14px}
.tbl th,.tbl td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line)}
.tbl th{color:var(--ink-faint);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em}
.tbl a{text-decoration:none}

@media (max-width:680px){
  .profile{grid-template-columns:1fr;gap:18px}
  .avatar img{width:220px;height:268px}
}

/* publish status */
.status{font-size:11px;font-weight:700;letter-spacing:.03em;padding:3px 9px;border-radius:6px}
.status.pub{background:rgba(111,212,36,.16);color:var(--accent-2);border:1px solid rgba(111,212,36,.3)}
.status.priv{background:rgba(244,162,97,.16);color:#f4a261;border:1px solid rgba(244,162,97,.3)}

/* explicit contact block */
.contact{margin-top:18px}
.contact h3{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-faint);margin-bottom:8px}
.contact ul{list-style:none;display:flex;flex-direction:column;gap:6px}
.contact li{font-size:14px;color:var(--ink-dim);display:flex;gap:10px;align-items:baseline;flex-wrap:wrap}
.contact .ctx{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--ink-faint);min-width:104px;display:inline-block}
.contact a{color:var(--accent);text-decoration:none}
.contact a:hover{text-decoration:underline}

/* websites + papers sections */
.fmt-web{background:rgba(79,157,255,.16);color:#7db4ff;border-color:rgba(79,157,255,.3)}
.papers{list-style:none;display:flex;flex-direction:column;gap:16px}
.paper a{font-weight:600;color:var(--ink);text-decoration:none;font-size:15px;line-height:1.35}
.paper a:hover{color:var(--accent)}
.paper .pmeta{font-size:11px;font-weight:700;letter-spacing:.03em;color:var(--ink-faint);margin-left:8px;white-space:nowrap}
.paper p{font-size:13px;color:var(--ink-dim);margin-top:5px}

/* admin extras */
hr.sep{border:none;border-top:1px solid var(--line);margin:30px 0}
.linkish.danger{color:#ff8a8a}
.linkish.danger:hover{color:#ff5a5a}

/* share link */
.share-on{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.share-url{font-size:11px;width:240px;max-width:46vw;padding:5px 8px;background:rgba(255,255,255,.05);border:1px solid var(--line);border-radius:7px;color:var(--ink-dim)}

/* share UI extras */
.share-enable{display:flex;gap:6px;align-items:center}
.share-enable select{font-size:11px;padding:4px 6px;background:rgba(255,255,255,.05);border:1px solid var(--line);border-radius:7px;color:var(--ink)}
.share-on{flex-wrap:wrap}
.share-on .exp{font-size:10.5px;color:var(--ink-faint);white-space:nowrap}

/* education line */
.edu{color:var(--ink-dim);font-size:14px;margin-bottom:12px}
.edu a{color:var(--ink);text-decoration:none;font-weight:600}
.edu a:hover{color:var(--accent)}

/* github pages sync bar */
.syncbar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:8px 0 26px;padding:14px 16px;border:1px solid var(--line);border-radius:12px;background:var(--card)}
.syncbar .muted{font-size:13px}
