:root{
  --bg: #060606;
  --ink: #f1f1f0;
  --mute: #9a9a9a;
  --dim: #6a6a6a;
  --font: "Archivo", Helvetica, Arial, sans-serif;
}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}}
html,body{margin:0;padding:0;background:var(--bg);color:var(--ink);font-family:var(--font);-webkit-font-smoothing:antialiased}
body{min-height:100vh;min-height:100dvh}
a{color:inherit;text-decoration:none}
button{font-family:var(--font);background:none;border:none;color:inherit;cursor:pointer;padding:0}

/* ---------- Hero ---------- */
.hero{
  position:relative;
  height:100vh;
  height:100svh;
  overflow:hidden;
}

.corner{position:absolute;z-index:2}
.top-left{top:32px;left:40px}
.top-right{top:32px;right:40px;display:flex;align-items:center}
.bottom-left{bottom:32px;left:40px;display:flex;flex-direction:column;gap:14px}
.bottom-right{top:50%;left:40px;transform:translateY(-55%);text-align:left;display:flex;flex-direction:column;gap:6px}

.name-label{
  font-size:13px;
  font-weight:400;
  letter-spacing:.28em;
  text-transform:uppercase;
}

/* Nav */
.nav{display:flex;align-items:center;gap:26px;font-size:13px;font-weight:300;letter-spacing:.06em}
.nav a{color:var(--mute);transition:color .2s ease}
.nav a:hover{color:var(--ink)}
.divider{color:var(--dim);font-weight:200}
.lang-switch{display:flex;align-items:center;gap:8px}
.lang{font-size:13px;font-weight:300;letter-spacing:.06em;color:var(--mute);transition:color .2s ease}
.lang:hover{color:var(--ink)}
.lang.active{color:var(--ink);text-decoration:underline;text-underline-offset:4px}
.lang-sep{color:var(--dim);font-weight:200}
.menu-toggle{display:none}

/* Portrait: cutout grounded on dark bg with radial glow */
.portrait{
  /* position knobs — override per breakpoint below */
  --portrait-left:75%;
  --portrait-bottom:15%;
  --portrait-width:min(72vh, 92vw);
  position:absolute;
  left:var(--portrait-left);
  bottom:var(--portrait-bottom);
  transform:translateX(-50%);
  margin:0;
  width:var(--portrait-width);
  z-index:1;
}
.portrait::before{
  content:"";
  position:absolute;
  inset:-18%;
  /* centered on the head: the cutout has straight cut edges in the dark
     hair lower right, glow must fade out before reaching them */
  background:radial-gradient(ellipse 46% 40% at 50% 36%, rgba(255,255,255,.13), rgba(255,255,255,.045) 48%, transparent 70%);
  z-index:-1;
}
.portrait img{
  display:block;
  width:100%;
  filter:grayscale(1);
  /* fade the straight cut edges (top + bottom + sides) into the background:
     the hair is clipped at the top of the PNG, the fade hides the cut */
  -webkit-mask-image:linear-gradient(to bottom, transparent 0, #000 14%, #000 85%, transparent 100%),
    linear-gradient(to right, transparent 0, #000 10%, #000 74%, transparent 95%);
  -webkit-mask-composite:source-in;
  mask-image:linear-gradient(to bottom, transparent 0, #000 14%, #000 85%, transparent 100%),
    linear-gradient(to right, transparent 0, #000 10%, #000 74%, transparent 95%);
  mask-composite:intersect;
}

/* Bottom corners */
.location{
  font-size:12px;
  font-weight:300;
  letter-spacing:.24em;
  text-transform:uppercase;
  color:var(--mute);
}
.monogram{
  font-size:14px;
  font-weight:200;
  letter-spacing:.3em;
  color:var(--dim);
}
.role{font-size:clamp(34px,5.5vw,104px);font-weight:300;line-height:1.08;letter-spacing:.01em}
.role-sub{font-size:clamp(34px,5.5vw,104px);font-weight:200;line-height:1.08;letter-spacing:.01em;color:var(--mute)}

/* ---------- Contact ---------- */
.contact{max-width:620px;margin:0 auto;padding:110px 28px 120px}
.contact h2{
  font-size:clamp(26px,4vw,40px);
  font-weight:300;
  letter-spacing:.04em;
  text-transform:uppercase;
  margin:0 0 10px;
}
.contact-sub{font-size:14px;font-weight:300;color:var(--mute);margin:0 0 48px;line-height:1.6}

.contact-form{display:flex;flex-direction:column;gap:28px}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.field{display:flex;flex-direction:column;gap:8px}
.field label{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--dim)}
.field input,.field textarea{
  background:transparent;
  border:none;
  border-bottom:1px solid rgba(255,255,255,.15);
  color:var(--ink);
  font-family:var(--font);
  font-size:15px;
  font-weight:300;
  padding:10px 0;
  outline:none;
  transition:border-color .2s ease;
  width:100%;
  resize:none;
}
.field input:focus,.field textarea:focus{border-bottom-color:rgba(255,255,255,.5)}
.field textarea{min-height:130px;line-height:1.6}

.submit-btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  align-self:flex-start;
  background:var(--ink);
  color:var(--bg);
  font-size:12px;
  font-weight:500;
  letter-spacing:.12em;
  text-transform:uppercase;
  border-radius:999px;
  padding:14px 34px;
  transition:opacity .2s ease;
}
.submit-btn:hover{opacity:.85}
.submit-btn:disabled{opacity:.4;cursor:not-allowed}
.submit-btn .spinner{
  width:14px;height:14px;
  border:2px solid rgba(6,6,6,.3);
  border-top-color:var(--bg);
  border-radius:50%;
  animation:spin .6s linear infinite;
  display:none;
}
.submit-btn.loading .spinner{display:block}
.submit-btn.loading .btn-label{display:none}
@keyframes spin{to{transform:rotate(360deg)}}

.form-feedback{display:none;border:1px solid rgba(255,255,255,.2);padding:16px 20px;font-size:14px;font-weight:300;line-height:1.5}
.form-feedback.success,.form-feedback.error{display:block}
.form-feedback.error{border-color:rgba(255,255,255,.45)}

/* ---------- Mobile ---------- */
@media (max-width: 760px){
  .top-left{top:22px;left:20px}
  .top-right{top:16px;right:14px}
  .bottom-left{bottom:22px;left:20px;gap:8px}
  .bottom-right{top:auto;left:20px;right:auto;bottom:88px;transform:none}
  .role,.role-sub{font-size:26px}

  .menu-toggle{
    display:flex;flex-direction:column;justify-content:center;gap:5px;
    width:38px;height:38px;padding:8px;z-index:4;
  }
  .menu-toggle span{display:block;height:1.5px;background:var(--ink);transition:transform .2s ease,opacity .2s ease}
  .menu-toggle.open span:nth-child(1){transform:translateY(6.5px) rotate(45deg)}
  .menu-toggle.open span:nth-child(2){opacity:0}
  .menu-toggle.open span:nth-child(3){transform:translateY(-6.5px) rotate(-45deg)}

  .nav{
    display:none;
    position:fixed;inset:0;
    background:rgba(6,6,6,.97);
    flex-direction:column;justify-content:center;align-items:center;
    gap:30px;font-size:20px;z-index:3;
  }
  .nav.open{display:flex}
  .divider{display:none}
  .lang-switch{gap:12px}
  .lang{font-size:16px}

  .portrait{
    --portrait-left:50%;
    --portrait-bottom:4%;
    --portrait-width:min(62vh,110vw);
  }
  .contact{padding:80px 20px 90px}
  .form-row{grid-template-columns:1fr}
  .submit-btn{align-self:stretch}
}

/* ---------- Subpage bar ---------- */
.bar{display:flex;justify-content:space-between;align-items:center;padding:32px 40px}
.bar .name-label{transition:color .2s ease}
.bar .name-label:hover{color:var(--mute)}
.nav a.current{color:var(--ink);text-decoration:underline;text-underline-offset:5px;text-decoration-thickness:1px}

/* ---------- Publications ---------- */
.pubs{max-width:860px;margin:0 auto;padding:56px 28px 120px}
.pubs-eyebrow{
  font-size:11px;font-weight:300;letter-spacing:.24em;text-transform:uppercase;
  color:var(--dim);margin:0 0 14px;
}
.pubs-head h1{
  font-size:clamp(30px,5vw,52px);font-weight:200;letter-spacing:.06em;
  text-transform:uppercase;margin:0 0 56px;
}
.pubs-empty{color:var(--mute);font-weight:300;font-size:15px}

.pub{
  border:1px solid rgba(255,255,255,.12);
  padding:34px 38px 38px;
  margin-bottom:26px;
  transition:border-color .25s ease;
}
.pub:hover{border-color:rgba(255,255,255,.32)}
.pub-meta{display:flex;align-items:center;gap:18px;margin-bottom:22px}
.pub-label{
  border:1px solid rgba(255,255,255,.28);
  padding:6px 13px;
  font-size:10px;font-weight:400;letter-spacing:.2em;text-transform:uppercase;
  white-space:nowrap;
}
.pub-date{font-size:11px;font-weight:300;letter-spacing:.16em;text-transform:uppercase;color:var(--dim)}
.pub h2{
  font-size:clamp(20px,2.8vw,29px);font-weight:300;letter-spacing:.01em;
  line-height:1.3;margin:0 0 14px;
}
.pub-abstract{
  color:var(--mute);font-weight:300;font-size:14px;line-height:1.75;
  max-width:62ch;margin:0 0 28px;
}
.pub-action{
  display:inline-flex;align-items:center;gap:9px;
  border:1px solid rgba(255,255,255,.35);
  border-radius:999px;
  padding:11px 24px;
  font-size:11px;font-weight:400;letter-spacing:.16em;text-transform:uppercase;
  transition:background .2s ease,color .2s ease;
}
.pub-action:hover{background:var(--ink);color:var(--bg)}
.pub-action span{font-size:13px}

/* ---------- Work tiles ---------- */
.work-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:26px}
.work-tile{
  border:1px solid rgba(255,255,255,.12);
  display:flex;flex-direction:column;overflow:hidden;
  transition:border-color .25s ease;
}
.work-tile:hover{border-color:rgba(255,255,255,.32)}
.work-img{width:100%;aspect-ratio:16/10;object-fit:cover;filter:grayscale(1);display:block}
.work-body{padding:26px 26px 30px}
.work-date{
  font-size:11px;font-weight:300;letter-spacing:.16em;text-transform:uppercase;
  color:var(--dim);margin:0 0 14px;
}
.work-tile h2{
  font-size:clamp(18px,2.4vw,23px);font-weight:300;letter-spacing:.01em;
  line-height:1.3;margin:0 0 12px;
}
.work-text{color:var(--mute);font-weight:300;font-size:14px;line-height:1.75;margin:0}
.work-action{margin-top:22px}

@media (max-width: 760px){
  .bar{padding:22px 20px}
  .pubs{padding:36px 20px 90px}
  .pubs-head h1{margin-bottom:38px}
  .pub{padding:26px 22px 30px}
  .pub-meta{flex-wrap:wrap;gap:12px;margin-bottom:18px}
}

/* ---------- About ---------- */
.about{max-width:860px;margin:0 auto;padding:120px 28px 40px}
.about h2{
  font-size:clamp(26px,4vw,40px);font-weight:300;letter-spacing:.04em;
  text-transform:uppercase;margin:0 0 26px;
}
.about-intro{color:var(--mute);font-weight:300;font-size:15px;line-height:1.8;max-width:62ch;margin:0 0 10px}
.about-mail{margin:0 0 64px}
.about-mail a{
  font-size:13px;font-weight:300;letter-spacing:.08em;color:var(--dim);
  border-bottom:1px solid rgba(255,255,255,.2);padding-bottom:2px;
  transition:color .2s ease;
}
.about-mail a:hover{color:var(--ink)}

.about-grid{display:grid;grid-template-columns:1fr 1.4fr;gap:60px;margin-bottom:80px}
.about-grid h3{
  font-size:11px;font-weight:400;letter-spacing:.24em;text-transform:uppercase;
  color:var(--dim);margin:0 0 24px;
}
.interests{list-style:none;margin:0;padding:0}
.interests li{
  font-size:15px;font-weight:300;line-height:1.5;
  padding:11px 0;border-bottom:1px solid rgba(255,255,255,.08);
}
.interests li:first-child{padding-top:0}
.cv{margin:0;display:grid;grid-template-columns:auto 1fr;column-gap:26px;row-gap:0}
.cv dt{
  font-size:11px;font-weight:300;letter-spacing:.1em;text-transform:uppercase;
  color:var(--dim);padding:12px 0;white-space:nowrap;
  border-bottom:1px solid rgba(255,255,255,.08);
}
.cv dd{
  margin:0;font-size:14px;font-weight:300;line-height:1.6;color:var(--mute);
  padding:12px 0;border-bottom:1px solid rgba(255,255,255,.08);
}
.cv dt:first-of-type,.cv dd:first-of-type{padding-top:0}

.affiliations{
  display:flex;align-items:center;gap:56px;flex-wrap:wrap;
  padding-top:40px;border-top:1px solid rgba(255,255,255,.08);
}
.affil{display:inline-flex;align-items:center;gap:14px;opacity:.55;transition:opacity .2s ease}
.affil:hover{opacity:.9}
.affil span{
  font-size:10px;font-weight:300;letter-spacing:.18em;text-transform:uppercase;
  line-height:1.5;color:var(--mute);
}
.affil img{
  height:34px;width:auto;
  /* seals as uniform light monochrome marks */
  filter:brightness(0) invert(1);
}
/* RUB logo is a solid box with white letters: keep its form, just desaturate */
.affil img.logo-rub{filter:grayscale(1) brightness(1.7)}

@media (max-width: 760px){
  .about{padding:80px 20px 20px}
  .about-grid{grid-template-columns:1fr;gap:44px;margin-bottom:56px}
  .affiliations{gap:36px}
  .affiliations img{height:24px}
}
