:root{
  --bg:#07090E;
  --card:rgba(12,18,30,0.85);
  --gold:#C9A84C;
  --gold2:#E2C06A;
  --goldf:rgba(201,168,76,0.13);
  --cyan:#3BA8C5;
  --white:#EEE9DF;
  --grey:#5A6470;
  --b1:rgba(255,255,255,0.06);
  --b2:rgba(201,168,76,0.14);
  --serif:"Playfair Display",Georgia,serif;
  --sans:"Inter",system-ui,sans-serif;
  --mono:"JetBrains Mono",monospace;
  --eco:"Economica",sans-serif;
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{font-size:16px}
body{background:var(--bg);color:var(--white);font-family:var(--sans);overflow-x:hidden;line-height:1.6}
a{text-decoration:none;color:inherit}
::selection{background:var(--gold);color:#07090E}

/* CANVAS */
#cvs{position:fixed;inset:0;z-index:0;pointer-events:none}

/* WRAPPER */
.wrap{position:relative;z-index:1;width:100%}

/* NAV */
.nav{
  position:fixed;top:16px;left:50%;transform:translateX(-50%);
  z-index:200;width:calc(100% - 32px);max-width:1120px;
  height:52px;display:flex;align-items:center;justify-content:space-between;
  padding:0 20px;
  background:rgba(7,9,14,0.8);backdrop-filter:blur(24px);
  border:1px solid var(--b1);border-radius:100px;
  transition:background .3s;
}
.nav.s{background:rgba(7,9,14,0.97);box-shadow:0 8px 32px rgba(0,0,0,.5)}
.nav-logo{display:flex;align-items:center;gap:9px}
.nav-m{width:28px;height:28px;border-radius:7px;border:1px solid var(--gold);display:flex;align-items:center;justify-content:center;font-family:var(--serif);font-size:14px;color:var(--gold)}
.nav-t{font-family:var(--mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--white)}
.nav-links{display:flex;gap:24px;align-items:center;font-family:var(--eco)}
.nav-links a{font-size:16px;text-transform:uppercase;color:white;transition:color .2s;font-weight:500}
.nav-links a:hover{color:var(--white)}
.nav-cta{padding:7px 18px;border:1px solid var(--gold);border-radius:100px;font-size:10px;letter-spacing:.13em;text-transform:uppercase;color:var(--gold);font-weight:600;transition:all .2s}
.nav-cta:hover{background:var(--gold);color:#07090E}

/* CENTERING SHELL */
.shell{width:100%;max-width:1120px;margin:0 auto;padding:0 16px}

/* HERO */
.hero-wrap{padding:84px 0 12px}
.hero{
  width:100%;
  display:grid;grid-template-columns:1fr 320px;
  border:1px solid var(--b2);border-radius:20px;overflow:hidden;
  background:var(--card);backdrop-filter:blur(40px);
  box-shadow:0 0 0 1px rgba(201,168,76,.06),0 48px 100px rgba(0,0,0,.7);
  min-height:500px;
}
.hero-left{padding:52px 48px;display:flex;flex-direction:column;justify-content:center;border-right:1px solid var(--b1)}
.hbadge{display:inline-flex;align-items:center;gap:9px;font-family:var(--mono);font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--cyan);margin-bottom:22px}
.hdot{width:6px;height:6px;border-radius:50%;background:var(--cyan);animation:glow 2.4s ease-in-out infinite}
@keyframes glow{0%,100%{opacity:1;box-shadow:0 0 0 0 rgba(59,168,197,.5)}50%{opacity:.4;box-shadow:0 0 0 8px rgba(59,168,197,0)}}
.hname{font-family:var(--serif);font-size:clamp(50px,5.5vw,84px);line-height:.93;letter-spacing:-.02em;margin-bottom:2px}
.hna{color:var(--white);display:block}
.hnb{color:var(--gold);display:block}
.hsep{width:52px;height:1px;background:rgba(201,168,76,.35);margin:24px 0}
.hrole{font-family:var(--eco);font-size:15px;letter-spacing:.12em;text-transform:uppercase;color:var(--grey);margin-bottom:18px}
.hbio{font-family:var(--eco);font-size:17px;line-height:1.8;color:rgba(238,233,223,.58);max-width:420px;margin-bottom:36px}
.hbio b{color:var(--white);font-weight:500}
.hbtns{display:flex;gap:10px;margin-bottom:40px;flex-wrap:wrap}
.btn{display:inline-flex;align-items:center;padding:11px 24px;border-radius:9px;font-size:11px;letter-spacing:.13em;text-transform:uppercase;font-weight:600;transition:all .22s;cursor:pointer;font-family:var(--sans);border:none}
.btn-f{background:var(--gold);color:#07090E}
.btn-f:hover{background:var(--gold2);transform:translateY(-2px);box-shadow:0 10px 28px rgba(201,168,76,.28)}
.btn-o{background:transparent;color:var(--white);border:1px solid var(--b1)}
.btn-o:hover{border-color:rgba(255,255,255,.2);transform:translateY(-2px)}
.hstats{display:flex;gap:32px;padding-top:28px;border-top:1px solid var(--b1)}
.hsv{font-family:var(--serif);font-size:34px;color:var(--white);line-height:1}
.hsv sup{font-size:16px;color:var(--gold)}
.hsl{font-family:var(--eco);font-size:13px;letter-spacing:.1em;text-transform:uppercase;color:var(--grey);margin-top:4px}
.hero-right{position:relative;overflow:hidden;background:linear-gradient(150deg,rgba(59,168,197,.1) 0%,var(--bg) 65%);min-height:520px;}
.hero-right::before{content:'';position:absolute;top:8%;bottom:8%;left:0;width:1px;background:linear-gradient(to bottom,transparent,var(--gold),transparent);z-index:2}
.hero-right::after{content:'';position:absolute;inset:0;z-index:3;background:repeating-linear-gradient(0deg,transparent 0,transparent 2px,rgba(0,0,0,.06) 2px,rgba(0,0,0,.06) 3px);pointer-events:none}
.hphoto{
  position:absolute;
  bottom:0;
  left:50%;
  transform:translateX(-50%);
  width:auto;
  height:100%;
  max-width:none;
  object-fit:cover;
  object-position:center top;
  filter:drop-shadow(0 0 40px rgba(59,168,197,.15));
  z-index:1;
}
.hcap{position:absolute;bottom:18px;right:14px;z-index:10;font-family:var(--mono);font-size:8px;letter-spacing:.22em;text-transform:uppercase;color:rgba(59,168,197,.35);writing-mode:vertical-rl}

/* TICKER */
.ticker{overflow:hidden;background:var(--gold);height:36px;display:flex;align-items:center}
.ticker-t{display:flex;animation:tk 26s linear infinite;white-space:nowrap}
.tki{display:inline-flex;align-items:center;gap:14px;padding:0 22px;font-family:var(--eco);font-size:14px;letter-spacing:.2em;text-transform:uppercase;color:#07090E;font-weight:700}
.tks{opacity:.3}
@keyframes tk{0%{transform:translateX(0)}100%{transform:translateX(-50%)}}

/* GRID */
.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;padding:12px 0 0}

/* BOX */
.box{
  background:var(--card);border:1px solid var(--b1);border-radius:16px;
  backdrop-filter:blur(28px);padding:28px 24px;
  position:relative;overflow:hidden;
  transition:border-color .25s,transform .25s,box-shadow .25s;
}
.box:hover{border-color:rgba(201,168,76,.2);box-shadow:0 16px 40px rgba(0,0,0,.4)}
.box-top{position:absolute;top:0;left:20px;right:20px;height:1px;background:linear-gradient(90deg,transparent,var(--gold),transparent);opacity:0;transition:opacity .3s}
.box:hover .box-top{opacity:1}

/* spans */
.span2{grid-column:span 2}
.span3{grid-column:span 3}

/* EYEBROW + HEADING */
.eye{font-family:var(--mono);font-size:9px;letter-spacing:.26em;text-transform:uppercase;color:var(--cyan);display:flex;align-items:center;gap:10px;margin-bottom:12px}
.eye::before{content:'';width:18px;height:1px;background:var(--cyan)}
.bh{font-family:var(--serif);font-size:clamp(20px,2vw,26px);line-height:1.1;margin-bottom:18px}
.bh em{color:var(--gold);font-style:italic}

/* ABOUT */
.about-text p{font-family:var(--eco);font-size:20px;line-height:1.85;color:rgba(238, 233, 223, .75);margin-bottom:12px;align-content:justify}
.about-text p b{color:var(--white);font-weight:500}
.alinks{display:flex;gap:14px;margin-top:16px}
.alink{font-size:16px;letter-spacing:.13em;text-transform:uppercase;color:var(--gold);border-bottom:1px solid rgba(201,168,76,.3);padding-bottom:1px;transition:border-color .2s}
.alink:hover{border-color:var(--gold)}

/* EXPERTISE LIST */
.explist{display:flex;flex-direction:column;gap:5px}
.expitem{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:8px;background:rgba(255,255,255,.02);border:1px solid transparent;transition:all .2s;font-family:var(--eco);font-size:20px;color:rgba(238,233,223,.75)}
.expitem:hover{background:rgba(201,168,76,.06);border-color:rgba(201,168,76,.12);color:var(--white)}
.expico{font-size:13px;width:20px;text-align:center}

/* ACADEMIC */
.acad-g{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}
.ac{background:rgba(255,255,255,.025);border:1px solid var(--b1);border-radius:10px;padding:20px 16px;position:relative;overflow:hidden;transition:border-color .25s,transform .2s;cursor:default}
.ac::after{content:'';position:absolute;bottom:0;left:0;right:0;height:2px;background:linear-gradient(90deg,var(--cyan),var(--gold));transform:scaleX(0);transform-origin:left;transition:transform .35s}
.ac:hover::after{transform:scaleX(1)}
.ac:hover{border-color:rgba(201,168,76,.2);transform:translateY(-2px)}
.acf{font-family:var(--mono);font-size:8px;letter-spacing:.2em;text-transform:uppercase;color:var(--cyan);margin-bottom:10px}
.acn{font-family:var(--serif);font-size:16px;color:var(--white);margin-bottom:7px;line-height:1.1}
.acd{font-family:var(--eco);font-size:16px;line-height:1.7;color:rgba(238,233,223,.75)}

/* PROJECTS */
.proj-g{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.pj{background:rgba(255,255,255,.025);border:1px solid var(--b1);border-radius:10px;padding:18px 16px;position:relative;overflow:hidden;transition:border-color .25s,transform .22s;cursor:pointer}
.pjline{position:absolute;top:0;left:12px;right:12px;height:1px;background:var(--gold);transform:scaleX(0);transform-origin:left;transition:transform .3s}
.pj:hover .pjline{transform:scaleX(1)}
.pj:hover{border-color:rgba(201,168,76,.2);transform:translateY(-2px)}
.pjtag{font-family:var(--eco);font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--cyan);margin-bottom:8px}
.pjn{font-family:var(--serif);font-size:17px;color:var(--white);margin-bottom:3px;line-height:1.1}
.pju{font-family:var(--eco);font-size:13px;color:rgba(201,168,76,.5)}
.pjarr{position:absolute;bottom:14px;right:14px;font-size:14px;color:var(--grey);opacity:0;transform:translateX(-4px);transition:all .2s}
.pj:hover .pjarr{opacity:1;transform:translateX(0)}

/* MEMBERSHIPS */
.pills{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:16px}
.pill{padding:5px 12px;border:1px solid var(--b1);border-radius:100px;font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--grey);transition:all .2s;cursor:default}
.pill:hover{border-color:var(--cyan);color:var(--cyan)}
.comlist{display:flex;flex-direction:column;gap:0}
.comi{display:flex;align-items:center;gap:10px;font-family:var(--eco);font-size:20px;color:rgba(238,233,223,.55);padding:7px 0;border-bottom:1px solid var(--b1);transition:color .2s}
.comi:last-child{border-bottom:none}
.comi::before{content:'';width:12px;height:1px;background:var(--gold);opacity:.4;flex-shrink:0;transition:opacity .2s}
.comi:hover{color:var(--white)}
.comi:hover::before{opacity:1}

/* CONTACT */
.contact-g{display:grid;grid-template-columns:1fr 1fr;gap:24px}
.cleft p{font-family:var(--eco);font-size:17px;line-height:1.8;color:rgba(238,233,223,.6);margin-bottom:20px}
.clinks{display:flex;flex-direction:column;gap:2px}
.clk{display:flex;align-items:center;gap:12px;padding:10px 14px;border-radius:8px;transition:background .2s}
.clk:hover{background:rgba(201,168,76,.06)}
.cll{font-family:var(--mono);font-size:8.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--grey);min-width:64px}
.clv{font-family:var(--eco);font-size:16px;color:var(--white)}
.cform{display:flex;flex-direction:column;gap:9px}
.crow{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.cinp{width:100%;padding:12px 14px;border-radius:8px;background:rgba(0,0,0,.3);border:1px solid var(--b1);color:var(--white);font-family:var(--sans);font-size:13px;outline:none;transition:border-color .2s}
.cinp::placeholder{color:var(--grey)}
.cinp:focus{border-color:rgba(201,168,76,.4)}
textarea.cinp{resize:vertical;min-height:85px}
.csub{padding:11px 22px;background:var(--gold);color:#07090E;border:none;border-radius:8px;font-family:var(--sans);font-size:10px;letter-spacing:.13em;text-transform:uppercase;font-weight:700;cursor:pointer;transition:all .2s;align-self:flex-start}
.csub:hover{background:var(--gold2);transform:translateY(-2px)}

/* FOOTER */
.footer{width:100%;padding:22px 0 28px;display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--b1);margin-top:12px}
.flogo{display:flex;align-items:center;gap:10px}
.fm{width:28px;height:28px;border-radius:7px;border:1px solid var(--gold);display:flex;align-items:center;justify-content:center;font-family:var(--serif);font-size:13px;color:var(--gold)}
.fnm{font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--white)}
.foab{font-family:var(--eco);font-size:13px;color:var(--grey)}
.flinks{display:flex;gap:18px}
.flinks a{font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--grey);transition:color .2s}
.flinks a:hover{color:var(--gold)}
.fsoc{display:flex;gap:6px}
.fs{width:30px;height:30px;border-radius:7px;border:1px solid var(--b1);display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;color:var(--grey);transition:all .2s}
.fs:hover{border-color:var(--gold);color:var(--gold)}

/* REVEAL */
.rv{opacity:0;transform:translateY(20px);transition:opacity .6s,transform .6s}
.rv.on{opacity:1;transform:translateY(0)}
.d1{transition-delay:.08s}.d2{transition-delay:.15s}.d3{transition-delay:.22s}.d4{transition-delay:.29s}

/* RESPONSIVE */
@media(max-width:960px){
  .hero{grid-template-columns:1fr}
  .hero-right{height:280px}
  .grid{grid-template-columns:1fr 1fr}
  .span2,.span3{grid-column:span 2}
  .acad-g{grid-template-columns:repeat(3,1fr)}
  .nav-links{display:none}
}
@media(max-width:600px){
  .grid{grid-template-columns:1fr}
  .span2,.span3{grid-column:span 1}
  .acad-g,.proj-g,.contact-g,.crow{grid-template-columns:1fr}
  .hstats{gap:20px}
}

/* PROJECT LOGO PER CARD */
.pj {
  display: flex;
  flex-direction: column;
}
.pj-logo-wrap {
  margin-top: 12px;
  background: #ffffff;
  border-radius: 7px;
  padding: 10px 14px;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 60px;
  overflow: hidden;
}
.pj-logo {
  max-width: 100%;
  max-height: 40px;
  width: auto;
  height: auto;
  object-fit: contain;
  object-position: center;
  opacity: 0.9;
  transition: opacity .2s, transform .2s;
  display: block;
}
.pj:hover .pj-logo {
  opacity: 1;
  transform: scale(1.04);
}

/* ── PUBLICAÇÕES ── */
.pub-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
  margin-bottom: 20px;
}
.pub-loading {
  grid-column: span 3;
  display: flex;
  align-items: center;
  gap: 12px;
  color: var(--grey);
  font-family: var(--eco);
  font-size: 15px;
  padding: 24px 0;
}
.pub-spinner {
  width: 18px; height: 18px;
  border: 2px solid var(--b1);
  border-top-color: var(--gold);
  border-radius: 50%;
  animation: spin .8s linear infinite;
  flex-shrink: 0;
}
@keyframes spin { to { transform: rotate(360deg); } }

.pub-card {
  display: flex;
  flex-direction: column;
  background: rgba(255,255,255,.025);
  border: 1px solid var(--b1);
  border-radius: 12px;
  overflow: hidden;
  transition: border-color .25s, transform .22s, box-shadow .25s;
  cursor: pointer;
  text-decoration: none;
  color: inherit;
}
.pub-card:hover {
  border-color: rgba(201,168,76,.25);
  transform: translateY(-3px);
  box-shadow: 0 16px 36px rgba(0,0,0,.4);
}
.pub-img-wrap {
  width: 100%;
  height: 140px;
  overflow: hidden;
  background: var(--b1);
  flex-shrink: 0;
}
.pub-img {
  width: 100%; height: 100%;
  object-fit: cover;
  transition: transform .4s;
}
.pub-card:hover .pub-img { transform: scale(1.04); }
.pub-img-placeholder {
  width: 100%; height: 100%;
  background: linear-gradient(135deg, rgba(59,168,197,.08), rgba(201,168,76,.06));
}
.pub-body {
  padding: 16px;
  display: flex;
  flex-direction: column;
  gap: 6px;
  flex: 1;
}
.pub-cat {
  font-family: var(--mono);
  font-size: 9px;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--cyan);
}
.pub-title {
  font-family: var(--serif);
  font-size: 16px;
  color: var(--white);
  line-height: 1.2;
}
.pub-excerpt {
  font-family: var(--eco);
  font-size: 13px;
  color: var(--grey);
  line-height: 1.6;
  flex: 1;
}
.pub-date {
  font-family: var(--mono);
  font-size: 9px;
  letter-spacing: .12em;
  color: rgba(201,168,76,.5);
  margin-top: 4px;
}
.pub-verall {
  display: inline-flex;
  align-items: center;
  font-family: var(--eco);
  font-size: 14px;
  letter-spacing: .08em;
  color: var(--gold);
  border-bottom: 1px solid rgba(201,168,76,.3);
  padding-bottom: 1px;
  transition: border-color .2s;
  margin-top: 4px;
}
.pub-verall:hover { border-color: var(--gold); }

@media(max-width:960px){
  .pub-grid { grid-template-columns: repeat(2,1fr); }
  .pub-loading { grid-column: span 2; }
}
@media(max-width:600px){
  .pub-grid { grid-template-columns: 1fr; }
  .pub-loading { grid-column: span 1; }
}