/* Identidade escura, fluxo único de leitura e fontes do sistema. */
:root {
  color-scheme:dark;
  --bg:#121215;
  --surface:#1b1b22;
  --line:#363640;
  --text:#f0eff5;
  --muted:#bebdc9;
  --accent:#c1a4ff;
  --warm:#ffbb92;
  --green:#a8dfc4;
  font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  line-height:1.7;
  background:var(--bg);
  color:var(--text)
}
* {
  box-sizing:border-box
}
html {
  scroll-behavior:smooth;
  scroll-padding-top:7rem
}
body {
  margin:0
}
a {
  color:var(--accent);
  text-underline-offset:.25em
}
a:hover {
  color:var(--warm)
}
a,button {
  -webkit-tap-highlight-color:transparent
}
a:focus-visible,button:focus-visible,[tabindex="-1"]:focus-visible {
  outline:3px solid var(--warm);
  outline-offset:5px;
  border-radius:4px
}
button {
  font:inherit;
  cursor:pointer
}
img {
  max-width:100%;
  height:auto;
  display:block
}
h1,h2,h3,p,figure {
  margin:0
}
h1,h2,h3 {
  line-height:1.2;
  letter-spacing:-.03em
}
h1 {
  font-size:clamp(3.3rem,7vw,6rem);
  font-weight:750
}
h2 {
  font-size:clamp(1.8rem,3vw,2.6rem);
  max-width:24ch;
  margin-bottom:1.5rem
}
h3 {
  font-size:1.22rem;
  letter-spacing:-.015em
}
p {
  color:var(--muted)
}
p+p {
  margin-top:1rem
}
.accent {
  color:var(--accent)
}
.site-header {
  position:sticky;
  top:0;
  z-index:10;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:2rem;
  padding:1rem max(1.5rem,calc((100% - 1160px)/2));
  background:#121215f5;
  border-bottom:1px solid var(--line)
}
.signature {
  color:var(--text);
  font-size:1.7rem;
  font-weight:800;
  text-decoration:none
}
.signature span {
  color:var(--accent)
}
nav ul {
  display:flex;
  flex-wrap:wrap;
  gap:.5rem 1.3rem;
  list-style:none;
  margin:0;
  padding:0
}
nav a {
  font-size:.9rem;
  text-decoration:none;
  color:var(--muted);
  display:block;
  padding:.35rem 0
}
nav a:hover {
  color:var(--accent)
}
main,footer {
  max-width:1160px;
  margin:auto;
  padding-inline:1.5rem
}
section {
  padding:5rem 0;
  border-bottom:1px solid var(--line);
  scroll-margin-top:1rem
}
.eyebrow {
  text-transform:uppercase;
  letter-spacing:.12em;
  font-size:.75rem;
  font-weight:700;
  color:var(--accent);
  margin-bottom:1rem
}
.hero {
  display:grid;
  grid-template-columns:1.35fr .8fr;
  gap:5rem;
  align-items:center;
  min-height:calc(100svh - 80px);
  padding-block:4rem
}
.hero-lead {
  font-size:clamp(1.25rem,2vw,1.6rem);
  line-height:1.5;
  color:var(--text);
  margin-block:1.6rem 1rem;
  max-width:35ch
}
.hero p:not(.eyebrow) {
  max-width:60ch
}
.actions {
  display:flex;
  flex-wrap:wrap;
  gap:1rem;
  margin-top:2rem
}
.button {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:1rem;
  min-height:48px;
  padding:.75rem 1.2rem;
  border-radius:7px;
  background:var(--accent);
  border:1px solid var(--accent);
  color:#17121f;
  text-decoration:none;
  font-weight:650;
  font-size:.95rem
}
.button:hover {
  background:#d6c4ff;
  color:#17121f
}
.button.secondary {
  color:var(--text);
  background:transparent;
  border-color:#646171
}
.button.secondary:hover {
  border-color:var(--accent);
  color:var(--accent)
}
.portrait {
  width:min(100%,340px);
  justify-self:center;
  text-align:center
}
.portrait img {
  width:100%;
  height:auto;
  aspect-ratio:1;
  border-radius:50%;
  object-fit:cover;
  object-position:center 24%
}
.portrait a {
  display:block;
  padding:6px;
  border:1px solid #56505f;
  border-radius:50%;
  background:linear-gradient(135deg,var(--accent),var(--warm));
  box-shadow:0 16px 40px #0005;
  transition:transform .22s ease,box-shadow .22s ease
}
.portrait a:focus-visible {
  transform:scale(1.04);
  box-shadow:0 0 0 6px #c1a4ff22
}
@media(hover:hover) and (pointer:fine) {
  .portrait a:hover {
    transform:scale(1.04);
    box-shadow:0 20px 48px #0007
  }
}
.portrait figcaption {
  padding:.9rem .2rem .2rem;
  font-size:.95rem
}
.portrait figcaption span {
  font-size:.75rem;
  color:var(--muted)
}
.about-grid {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:2rem
}
.callout {
  border-left:3px solid var(--accent);
  padding:1rem 1.4rem;
  background:var(--surface);
  margin-top:2rem;
  color:var(--text);
  max-width:85ch
}
.section-intro {
  max-width:68ch;
  margin-bottom:2rem
}
.project-grid {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:1.25rem
}
.card {
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:10px;
  padding:1.7rem;
  min-width:0
}
.card h3 {
  margin-bottom:1rem
}
.status {
  font-size:.75rem;
  color:var(--green);
  margin-bottom:1.1rem
}
.status.developing {
  color:var(--warm)
}
.project-note {
  font-size:.85rem
}
.tags {
  display:flex;
  flex-wrap:wrap;
  gap:.45rem;
  list-style:none;
  padding:0;
  margin:1.3rem 0 0
}
.tags li {
  font-size:.75rem;
  border:1px solid #50485f;
  border-radius:4px;
  padding:.2rem .55rem;
  color:#d7c8f2
}
.text-link {
  display:inline-block;
  margin-top:1.2rem;
  font-weight:600;
  font-size:.9rem
}
.skills-grid {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:2.5rem
}
.skills-grid h3 {
  margin-bottom:.8rem;
  color:var(--accent)
}
.timeline {
  padding:0;
  list-style:none;
  margin:0
}
.timeline li {
  display:grid;
  grid-template-columns:180px 1fr;
  gap:2rem;
  padding:1.5rem 0;
  border-bottom:1px solid var(--line)
}
.timeline li:last-child {
  border-bottom:0
}
.period {
  font-size:.85rem;
  color:var(--warm)
}
.timeline h3 {
  margin-bottom:.75rem
}
.timeline h3 span {
  font-weight:400;
  color:var(--muted)
}
.education-grid {
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:1rem
}
.education-grid .period {
  margin-bottom:1rem
}
.education-grid h3 {
  font-size:1.1rem
}
.complementary {
  margin-top:1.5rem;
  font-size:.9rem
}
.contact {
  max-width:760px;
  border:0
}
.email {
  display:inline-block;
  margin-top:1.5rem;
  overflow-wrap:anywhere
}
footer {
  padding-block:1.6rem;
  border-top:1px solid var(--line);
  display:flex;
  justify-content:space-between;
  gap:1rem;
  font-size:.8rem
}
.skip-link {
  position:fixed;
  top:-100px;
  left:1rem;
  z-index:30;
  padding:.75rem 1rem;
  background:var(--text);
  color:var(--bg)
}
.skip-link:focus {
  top:1rem
}
.sr-only {
  position:absolute;
  width:1px;
  height:1px;
  padding:0;
  margin:-1px;
  overflow:hidden;
  clip-path:inset(50%);
  white-space:nowrap;
  border:0
}
dialog {
  width:min(560px,calc(100% - 2rem));
  max-height:90svh;
  padding:1rem;
  border:1px solid var(--line);
  border-radius:12px;
  background:var(--surface);
  color:var(--text)
}
dialog::backdrop {
  background:#000c
}
.dialog-heading {
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:1rem;
  margin-bottom:1rem
}
.dialog-heading h2 {
  font-size:1rem;
  margin:0
}
.dialog-heading button {
  padding:.4rem .8rem;
  border:1px solid #646171;
  background:transparent;
  color:var(--text);
  border-radius:5px
}
dialog img {
  margin:auto;
  max-height:70svh;
  width:auto;
  object-fit:contain
}
body:has(dialog[open]) {
  overflow:hidden
}
@media(max-width:950px) {
  .site-header {
    position:static;
    align-items:flex-start;
    gap:1.5rem
  }
  nav ul {
    gap:.4rem 1rem
  }
  .hero {
    gap:2rem;
    min-height:auto
  }
  .education-grid {
    grid-template-columns:1fr
  }
  .hero h1 {
    font-size:clamp(3rem,7vw,5rem)
  }
  html {
    scroll-padding-top:1rem
  }
}
@media(max-width:620px) {
  .site-header {
    padding:1rem
  }
  .signature {
    font-size:1.4rem
  }
  nav a {
    font-size:.8rem;
    padding:.3rem 0
  }
  main,footer {
    padding-inline:1.25rem
  }
  .hero {
    grid-template-columns:1fr;
    padding-top:3rem;
    gap:2.5rem
  }
  .portrait {
    max-width:280px
  }
  .hero h1 {
    font-size:3.4rem
  }
  section {
    padding-block:3.2rem
  }
  .about-grid,.project-grid,.skills-grid {
    grid-template-columns:1fr
  }
  .about-grid {
    gap:1rem
  }
  .card {
    padding:1.3rem
  }
  .timeline li {
    grid-template-columns:1fr;
    gap:.6rem
  }
  .actions {
    gap:.7rem
  }
  .button {
    font-size:.85rem
  }
  footer {
    flex-direction:column
  }
  .email {
    font-size:.9rem
  }
}
@media(prefers-reduced-motion:reduce) {
  .portrait a:hover,
  .portrait a:focus-visible {
    transform:none
  }
  html {
    scroll-behavior:auto
  }
  *,*::before,*::after {
    animation:none!important;
    transition:none!important
  }
}
