@font-face {
  font-family: 'Bricolage Grotesque';
  src: url('assets/fonts/bricolage-grotesque.woff2') format('woff2');
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
}

@font-face {
  font-family: 'Fraunces';
  src: url('assets/fonts/fraunces-italic.woff2') format('woff2');
  font-style: italic;
  font-weight: 400 600;
  font-display: swap;
}


:root{--font-text:'Bricolage Grotesque',Arial,sans-serif;--font-editorial:'Fraunces',Georgia,serif;--bg:#171610;--panel:#242117;--text:#fbf4e2;--muted:#b9b09e;--accent:#ffd15a;--rosa:#ff62ad;--rosa-claro:#ff9fce;--accent-light:#ffe497;--ink:#2a220d;--marfil:#f8e5b5;--line:#ffffff20;color-scheme:dark;font-family:var(--font-text);font-synthesis:none}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:30px;overflow-x:hidden}body{margin:0;background:var(--bg);color:var(--text);font-size:16px;line-height:1.6;overflow-x:hidden}main{overflow:clip}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer;border:0}button,a{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:6px}img{display:block;max-width:100%;height:auto}::selection{background:var(--accent);color:var(--bg)}.wrap{width:min(1240px,calc(100% - 100px));margin-inline:auto}#atmosphere{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:-1}.ambient{position:fixed;pointer-events:none;z-index:-1;width:550px;height:550px;border-radius:50%;filter:blur(100px);opacity:.045;animation:ambient-drift 28s ease-in-out infinite alternate}.ambient-one{background:var(--marfil);top:2%;right:-180px}.ambient-two{background:var(--rosa);bottom:-300px;left:-230px;animation-delay:-12s}.skip{position:fixed;z-index:100;left:16px;top:12px;background:var(--accent);color:var(--bg);padding:12px 18px;transform:translateY(-160%)}.skip:focus{transform:none}.eyebrow{font-size:10px;font-weight:600;letter-spacing:1.8px;line-height:1.6}.tiny-dot{display:inline-block;width:6px;height:6px;background:var(--accent);border-radius:50%;margin-right:8px;box-shadow:0 0 10px color-mix(in srgb, var(--accent) 38%, transparent)}em{font-family:var(--font-editorial);font-weight:440;letter-spacing:-.065em;color:var(--marfil)}.button{display:inline-flex;align-items:center;justify-content:space-between;gap:32px;min-height:50px;padding:13px 23px;font-size:12px;border-radius:28px;transition:box-shadow .25s,transform .25s,background .25s}.button span{font-size:22px;line-height:1}.primary{color:var(--ink);background:var(--accent);font-weight:600}.primary:hover{transform:translateY(-3px);box-shadow:0 0 35px color-mix(in srgb, var(--accent) 27%, transparent);background:var(--accent-light)}.ticker{overflow:hidden;border-block:1px solid var(--line);padding:18px 0;background:color-mix(in srgb, var(--accent) 2%, transparent)}.ticker>div{width:max-content;font-size:13px;letter-spacing:2px;color:#c2b0a5;animation:ticker-move 55s linear infinite}.ticker b{font-size:23px;vertical-align:middle;font-weight:400;color:var(--accent);margin:0 35px}.projects{padding-top:110px}.section-intro{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:42px;gap:35px}.section-intro h2,.about h2{font-size:clamp(42px,4.4vw,64px);line-height:1.04;letter-spacing:-2.8px;font-weight:400;margin:20px 0 0}.section-intro>p{color:var(--muted);font-size:12px;line-height:1.9;margin:0 0 3px}.gallery-section{padding-top:52px;scroll-margin-top:24px}.gallery-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px}.gallery-heading h3{font-size:18px;font-weight:400;letter-spacing:-.5px;margin:0}.project-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:30px 22px}.project{min-width:0}.project[hidden]{display:none}.project-button{display:block;width:100%;text-align:left;padding:0;background:transparent;border-radius:9px;position:relative}.project-visual{height:290px;background:var(--card-bg,#dcd8d1);display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative;border-radius:7px;isolation:isolate;transition:box-shadow .35s}.project-visual>img{width:100%;height:100%;object-fit:contain}.project-button:hover .project-visual,.project-button:focus-visible .project-visual{box-shadow:0 0 0 1px var(--accent),0 0 35px color-mix(in srgb, var(--accent) 15%, transparent)}.project-glow{position:absolute;inset:0;pointer-events:none;background:radial-gradient(300px circle at var(--mx,50%) var(--my,50%),color-mix(in srgb, var(--accent) 19%, transparent),transparent 70%);opacity:0;transition:opacity .3s;z-index:1}.project-button:hover .project-glow{opacity:1}.project-open{position:absolute;top:14px;right:14px;width:33px;height:33px;display:grid;place-items:center;color:#34201b;background:#f5e1cee6;border-radius:50%;font-size:18px;transition:background .3s,transform .3s;z-index:3}.project-button:hover .project-open{background:var(--accent);transform:scale(1.08)}.project-overlay{position:absolute;inset:auto 0 0;padding:42px 20px 20px;background:linear-gradient(transparent,#171610f5 40%);opacity:0;transform:translateY(10px);transition:opacity .3s,transform .3s;z-index:2}.project-overlay span{font-size:12px;color:#fbf1e6;line-height:1.5;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.project-overlay small{color:var(--accent);font-size:9px;display:block;margin-top:12px;letter-spacing:1px}.project-button:hover .project-overlay,.project-button:focus-visible .project-overlay{opacity:1;transform:none}.project-label{padding:16px 1px 0}.project-label h4{font-size:14px;line-height:1.4;letter-spacing:-.25px;margin:0 0 4px;font-weight:400}.project-label p{font-size:10px;color:var(--muted);margin:0;line-height:1.5}.about{padding-block:125px 100px;display:grid;grid-template-columns:.9fr 1.1fr;gap:85px;align-items:center;margin-top:85px;border-top:1px solid var(--line)}.about-copy>p:not(.eyebrow){font-size:13px;color:var(--muted);line-height:1.9;margin-block:28px}.about h2{font-size:47px;letter-spacing:-2px}.services{padding-block:30px 100px}.service-list>a{display:grid;grid-template-columns:45px 1fr 1fr 36px;align-items:center;gap:24px;border-top:1px solid var(--line);padding:26px 6px;transition:color .25s,background .25s}.service-list>a:last-child{border-bottom:1px solid var(--line)}.service-number{font:10px monospace;color:#aa968b}.service-list h3{font-size:23px;font-weight:400;line-height:1.2;letter-spacing:-.6px;margin:0}.service-list p{font-size:11px;color:var(--muted);max-width:270px;margin:0;line-height:1.8}.service-arrow{color:var(--accent);font-size:26px;transition:transform .25s}.service-list>a:hover{background:color-mix(in srgb, var(--accent) 2%, transparent);color:var(--accent)}.service-list>a:hover .service-arrow{transform:translate(4px,-4px)}.contact{padding-block:80px 70px;border-top:1px solid var(--line);position:relative}.contact h2{font-size:clamp(66px,8.1vw,110px);font-weight:400;line-height:1.04;letter-spacing:-6px;margin:35px 0 48px}.contact h2>span{position:absolute;right:10px;top:140px;font-size:115px;font-weight:300;color:var(--accent);transition:transform .3s}.contact:hover h2>span{transform:translate(8px,-8px)}.footer{border-top:1px solid var(--line);padding-block:25px;display:flex;justify-content:space-between;align-items:center;gap:20px;font-size:9px;color:#ad998e}.detalle-acento{color:var(--rosa);margin-left:4px}.footer a:hover{color:var(--accent)}dialog{width:min(1140px,calc(100vw - 48px));max-height:calc(100dvh - 50px);border:1px solid #ffffff30;border-radius:12px;background:var(--panel);color:var(--text);padding:25px;box-shadow:0 40px 180px #000a;overflow:auto}dialog::backdrop{background:#100e07d9;backdrop-filter:blur(12px)}body.modal-open{overflow:hidden}.dialog-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:22px}.dialog-top .eyebrow{color:var(--accent);font-size:9px}.round-button{display:grid;place-items:center;border:1px solid #ffffff30;background:transparent;border-radius:50%;width:40px;height:40px;font-size:26px;line-height:1}.round-button:hover{background:var(--accent);color:var(--bg)}.dialog-layout{display:grid;grid-template-columns:1.35fr 1fr;gap:40px}.dialog-gallery{min-width:0}.dialog-image-wrap {
  position: relative;
  display: grid;
  grid-template: minmax(0, 1fr) / minmax(0, 1fr);
  height: min(54dvh, 550px);
  overflow: hidden;
  border-radius: 5px;
  background-color: #e4e0d8;
}

.dialog-image-wrap img {
  width: 100%;
  height: 100%;
  min-width: 0;
  min-height: 0;
  object-fit: contain;
}

.image-arrow{position:absolute;top:50%;transform:translateY(-50%);background:#242117e8;border:1px solid #ffffff40;color:var(--accent);border-radius:50%;width:40px;height:40px;font-size:20px}.image-arrow:hover{background:var(--accent);color:var(--bg)}.image-arrow[hidden]{display:none}.previous{left:9px}.next{right:9px}.gallery-bottom{font:9px monospace;letter-spacing:1px;color:var(--muted);padding:16px 0}#thumbnails{display:flex;gap:7px;padding:4px 2px 10px;overflow-x:auto}#thumbnails button{width:48px;height:48px;flex-shrink:0;background:#e4e0d8;padding:0;border:2px solid transparent;border-radius:4px}#thumbnails button[aria-current=true]{border-color:var(--accent);box-shadow:0 0 10px color-mix(in srgb, var(--accent) 19%, transparent)}#thumbnails img{height:100%;width:100%;object-fit:contain}.dialog-copy{padding:12px 15px 18px 0;align-self:center}.dialog-copy>p:first-child{font-size:10px;letter-spacing:1px;color:var(--marfil);text-transform:uppercase}.dialog-copy h2{font:550 40px/1.1 var(--font-text);letter-spacing:-1px;margin:17px 0 25px}.dialog-copy #dialog-description{font-size:12px;color:#ccbbb2;line-height:1.9;white-space:pre-line}.dialog-copy .button{margin-top:22px;font-size:10px;gap:24px}.noscript{padding-block:40px}.motion-paused *,.motion-paused *:before,.motion-paused *:after{animation-play-state:paused!important}.motion-paused{scroll-behavior:auto}@keyframes ambient-drift{to{transform:translate(50px,80px)}}@keyframes ticker-move{to{transform:translateX(-50%)}}@keyframes orbit-spin{to{transform:rotate(360deg)}}

@media(max-width:1100px){.wrap{width:calc(100% - 64px)}.project-visual{height:255px}.project-grid{gap:27px 18px}.about{gap:45px}.about h2{font-size:42px}.service-list h3{font-size:20px}.service-list>a{grid-template-columns:30px 1.1fr 1fr 26px;gap:15px}}
@media(max-width:780px){.wrap{width:calc(100% - 44px)}.section-intro h2{font-size:46px}.section-intro>p{font-size:10px}.projects{padding-top:80px}.project-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.project-visual{height:285px}.about{grid-template-columns:.9fr 1.1fr;gap:27px;padding-block:75px}.about h2{font-size:33px;letter-spacing:-1.4px}.about-copy>p:not(.eyebrow){font-size:11px}.contact h2{font-size:78px;letter-spacing:-4px}.contact h2>span{font-size:80px;top:160px}.contact{padding-top:60px}.dialog-layout{grid-template-columns:1fr;gap:8px}.dialog-copy{padding:0 4px 15px}.dialog-copy h2{font-size:32px}.dialog-image-wrap{height:45dvh}.dialog-copy .button{margin-top:10px}.footer{flex-wrap:wrap;gap:10px}.footer>span:nth-child(2){display:none}}

@media(max-width:560px){.wrap{width:calc(100% - 40px)}.button{min-height:47px;font-size:11px;padding:12px 20px}.ticker{padding:13px 0}.ticker>div{font-size:10px}.ticker b{font-size:17px;margin-inline:20px}.projects{padding-top:63px}.section-intro{align-items:flex-start;flex-direction:column;gap:20px;margin-bottom:28px}.section-intro h2{font-size:43px;letter-spacing:-2px;margin-top:17px}.section-intro>p{font-size:11px;line-height:1.7;max-width:300px}.section-intro>p br{display:none}.eyebrow{font-size:8px;letter-spacing:1.5px}.gallery-section{padding-top:35px}.gallery-heading{margin-bottom:17px}.gallery-heading h3{font-size:16px}.project-grid{grid-template-columns:1fr;gap:25px}.project-visual{height:330px}.project-label{padding-top:13px}.project-label h4{font-size:15px}.project-label p{font-size:10px}.project-overlay{opacity:1;transform:none;padding:32px 16px 14px;pointer-events:none}.project-overlay span{font-size:10px;-webkit-line-clamp:2;line-height:1.5}.project-overlay small{margin-top:6px;font-size:8px}.about{grid-template-columns:1fr;margin-top:65px;padding-block:55px;gap:32px}.about h2{font-size:40px}.about-copy>p:not(.eyebrow){font-size:12px;margin-block:22px}.services{padding-block:15px 60px}.service-list>a{grid-template-columns:24px 1fr 20px;gap:10px;padding:22px 0}.service-list h3{font-size:19px}.service-list p{grid-column:2;grid-row:2;font-size:10px;max-width:250px}.service-arrow{grid-row:1/3;grid-column:3;font-size:23px}.service-number{align-self:start;margin-top:2px;font-size:8px}.contact{padding-block:45px}.contact h2{font-size:clamp(49px,14vw,75px);letter-spacing:-3px;margin-top:28px;margin-bottom:30px}.contact h2>span{font-size:45px;top:145px;right:0}.contact .eyebrow{font-size:7px;letter-spacing:1px}.footer{font-size:8px;padding-block:18px;gap:12px}.footer>a{width:100%}dialog{width:calc(100vw - 24px);max-height:calc(100dvh - 24px);padding:14px;border-radius:9px}.dialog-top{margin-bottom:12px}.dialog-top .eyebrow{font-size:7px}.round-button{width:36px;height:36px}.dialog-image-wrap{height:40dvh}.image-arrow{width:34px;height:34px;font-size:17px}.gallery-bottom{font-size:8px}#thumbnails button{width:42px;height:42px}.dialog-copy h2{font-size:32px;margin-block:12px 18px}.dialog-copy>p:first-child{font-size:8px}.dialog-copy #dialog-description{font-size:11px}.dialog-copy .button{margin-top:10px}.ambient{width:300px;height:300px;filter:blur(70px)}}
@media(hover:none){.project-overlay{opacity:1;transform:none}.project-glow{display:none}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}

/* Firmas, curvas y nodos del portafolio. */
.icon-library {
  position: absolute;
  width: 0;
  height: 0;
  overflow: hidden;
  pointer-events: none;
}

.icon {
  display: inline-block;
  width: 1em;
  height: 1em;
  vertical-align: -.18em;
  flex-shrink: 0;
  pointer-events: none;
}

.project-overlay small .icon {
  font-size: 1.35em;
}

.footer .icon {
  font-size: 1.28em;
}

.image-arrow {
  display: grid;
  place-items: center;
}

.previous .icon {
  transform: scaleX(-1);
}

.contact h2 > span .icon {
  width: .86em;
  height: .86em;
}



.portfolio-intro {
  position: fixed;
  inset: 0;
  z-index: 50;
  display: grid;
  place-items: center;
  background:
    radial-gradient(ellipse at 50% 52%, color-mix(in srgb, var(--accent) 9%, transparent), transparent 56%),
    var(--bg);
  text-align: center;
  pointer-events: none;
  transition: opacity .22s ease;
}

.portfolio-intro[hidden] {
  display: none;
}

.portfolio-intro.is-leaving {
  opacity: 0;
}

.portfolio-intro-mark {
  display: grid;
  justify-items: center;
  gap: 10px;
  color: var(--accent);
}

.portfolio-intro-mark > .icon {
  font-size: 38px;
}

.portfolio-intro-label {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .32em;
  text-transform: uppercase;
}

.portfolio-intro-name {
  font-size: clamp(54px, 10vw, 96px);
  line-height: 1.1;
  padding-inline: .1em;
}

.portfolio-intro-line {
  width: 68px;
  height: 1px;
  margin-top: 12px;
  background: var(--line);
  overflow: hidden;
}

.portfolio-intro-line::after {
  content: '';
  display: block;
  width: 38%;
  height: 100%;
  background: var(--accent);
  animation: intro-line 1.1s ease-in-out infinite;
}

@keyframes intro-line {
  from { translate: -100% 0; }
  to { translate: 270% 0; }
}

@media (prefers-reduced-motion: no-preference) {
  :root:not(.motion-paused) [data-reveal] {
    transition: opacity .48s ease, translate .55s cubic-bezier(.22, .61, .36, 1);
  }

  :root:not(.motion-paused) [data-reveal="pending"]:not(:focus-within) {
    opacity: 0;
    translate: 0 18px;
  }

  :root:not(.motion-paused) [data-reveal]:focus-within {
    transition: none;
  }
}

@media print {
  .portfolio-intro {
    display: none;
  }

  [data-reveal] {
    opacity: 1 !important;
    translate: none !important;
  }
}

.header {
  position: relative;
  z-index: 10;
  padding-block: 25px;
  border-bottom: 1px solid var(--line);
}

.site-nav {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  align-items: center;
  gap: clamp(8px, 2vw, 26px);
  font-size: 13px;
}

.site-nav-group {
  display: flex;
  align-items: center;
  gap: clamp(10px, 3vw, 38px);
}

.site-nav-group:last-child { justify-content: flex-end; }

.site-nav a {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  white-space: nowrap;
  transition: color .2s, border-color .2s;
}

.site-nav a:hover { color: var(--accent); }

.nav-contact {
  justify-content: center;
  gap: 14px;
  padding-inline: 18px;
  border: 1px solid #ffffff50;
  border-radius: 999px;
}

.nav-contact:hover { border-color: var(--accent); }
.nav-contact .icon { color: var(--rosa); }

@media (max-width: 560px) {
  .header { padding-block: 14px; }
  .site-nav { font-size: 11px; }
  .nav-contact { padding-inline: 10px; gap: 6px; }
}

@media (max-width: 400px) {
  .site-nav { font-size: 10px; }
  .site-nav-group { flex-wrap: wrap; gap: 0 8px; }
  .site-nav-group a { min-height: 28px; }
}

.hero {
  position: relative;
  isolation: isolate;
  display: grid;
  grid-template-rows: 1fr auto;
  min-height: clamp(635px, calc(100svh - 96px), 880px);
  overflow: clip;
}

.hero-scene {
  position: absolute;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  background:
    radial-gradient(ellipse at 12% 79%, #8420443d, transparent 34%),
    radial-gradient(ellipse at 89% 74%, #8b592231, transparent 34%),
    radial-gradient(ellipse at 50% 28%, #f8e5b509, transparent 48%);
}

.hero-paint {
  position: absolute;
  inset: 0;
  pointer-events: none;
}

#contacto { isolation: isolate; }

#contacto > .hero-paint {
  inset: 15px 0 auto;
  height: clamp(230px, 48svh, 370px);
  overflow: clip;
  z-index: -1;
}

@media (max-width: 540px) {
  .dialog-image-wrap:not(.is-booklet, .has-qr, .is-instagram) {
    height: auto;
    grid-template-rows: auto;
  }

  .dialog-image-wrap:not(.is-booklet, .has-qr, .is-instagram) > img {
    height: auto;
    max-height: min(53dvh, 390px);
    aspect-ratio: auto 4 / 3;
  }
}

.hero-paint-drop {
  position: absolute;
  width: var(--drop-size);
  height: calc(var(--drop-size) * .83);
  border-radius: 57% 43% 59% 41% / 53% 62% 38% 47%;
  background: var(--ink-color);
  box-shadow: 0 0 9px color-mix(in srgb, var(--ink-color) 44%, transparent);
  opacity: 0;
  animation: paint-flight var(--drop-duration) cubic-bezier(.16, .54, .38, 1) var(--drop-delay) both;
}

.motion-paused .hero-paint { display: none; }

@media (prefers-reduced-motion: reduce) {
  .hero-paint { display: none; }
}

@keyframes paint-flight {
  0% { opacity: 0; transform: translate(0, 0) rotate(-30deg) scale(.3); }
  15% { opacity: .96; }
  48% { transform: translate(calc(var(--drop-x) * .46), calc(var(--drop-y) * .69)) rotate(25deg) scale(1); }
  63% { opacity: .86; }
  100% { opacity: 0; transform: translate(var(--drop-x), var(--drop-y)) rotate(90deg) scale(.25); }
}

.hero-copy {
  align-self: start;
  display: flex;
  flex-direction: column;
  align-items: center;
  padding-top: clamp(88px, 13svh, 147px);
  text-align: center;
}

.hero-kicker {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 0 0 8px;
  color: var(--rosa-claro);
  font: 600 11px/1.4 var(--font-text);
  letter-spacing: .25em;
  text-transform: uppercase;
}

.hero-kicker span {
  width: 16px;
  height: 1px;
  background: var(--rosa);
  opacity: .65;
}

.hero h1 {
  position: relative;
  width: max-content;
  max-width: 100%;
  margin: 0;
  color: var(--marfil);
  font: italic 510 clamp(84px, 13.7vw, 215px)/1.03 var(--font-editorial);
  letter-spacing: -.075em;
  white-space: nowrap;
}

.hero-description {
  max-width: 330px;
  margin: 16px 0 23px;
  color: var(--muted);
  font-size: 14px;
  line-height: 1.65;
  text-wrap: balance;
}

.hero-bottom {
  display: flex;
  justify-content: center;
  padding-block: 9px;
  border-top: 1px solid var(--line);
}

.hero-bottom a {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  min-height: 44px;
  padding-inline: 18px;
  border: 1px solid color-mix(in srgb, var(--marfil) 33%, transparent);
  border-radius: 999px;
  background: transparent;
  color: var(--marfil);
  font: 10px/1.4 monospace;
  letter-spacing: .09em;
  text-transform: uppercase;
  transition: border-color .2s ease, color .2s ease;
}

.hero-bottom a:hover { border-color: var(--accent); color: var(--accent); }
.hero-bottom a span { color: var(--accent); font-size: 17px; }

.hero-object,
.hero-curve,
.hero-fleck {
  position: absolute;
}

.hero-object {
  width: clamp(252px, 30vw, 475px);
  bottom: 34px;
  transform: translate(var(--object-x, 0px), var(--object-y, 0px));
  transition: transform .55s cubic-bezier(.2, .75, .3, 1);
}

.hero-object img {
  width: 100%;
  height: auto;
  filter: drop-shadow(0 25px 16px #0008);
  transform-origin: center 65%;
}

.hero-swatches {
  left: max(-30px, calc((100% - 1470px) / 2));
  --object-x: var(--scene-x, 0px);
  --object-y: var(--scene-y, 0px);
}

.hero-pen {
  right: max(-38px, calc((100% - 1490px) / 2));
  --object-x: calc(-1 * var(--scene-x, 0px));
  --object-y: var(--scene-y, 0px);
}

.hero-object-icon {
  position: absolute;
  bottom: 8%;
  left: 20%;
  color: var(--rosa);
  font-size: 23px;
}

.hero-pen .hero-object-icon {
  right: 17%;
  left: auto;
  color: var(--accent);
}

.hero-curve {
  width: clamp(210px, 31vw, 480px);
  height: auto;
  overflow: visible;
  stroke: currentColor;
}

.hero-curve-left {
  left: max(-28px, calc((100% - 1490px) / 2));
  bottom: 32px;
  color: var(--rosa);
  transform-origin: 0 100%;
}

.hero-curve-right {
  right: max(-28px, calc((100% - 1490px) / 2));
  bottom: 70px;
  color: var(--accent);
  transform-origin: 100% 100%;
}

.curve-construction { opacity: .29; stroke-dasharray: 2 5; }
.curve-line { opacity: .66; }
.curve-echo { opacity: .40; stroke-dasharray: 2 7; }
.curve-nodes { fill: var(--bg); opacity: .85; }

.hero-fleck { width: clamp(19px, 3vw, 48px); height: auto; }
.hero-fleck-left { top: 30%; left: 14%; color: var(--accent); }
.hero-fleck-right { top: 29%; right: 13%; color: var(--rosa); }

@media (prefers-reduced-motion: no-preference) {
  .hero-swatches img { animation: hero-swatch-drift 8.6s ease-in-out infinite; }
  .hero-pen img { animation: hero-pen-drift 7.2s ease-in-out infinite; }
  .hero-curve { animation: hero-curve-sway 10s ease-in-out infinite alternate; }
  .hero-curve-right { animation-delay: -4s; }
  .hero-fleck { animation: hero-fleck-drift 6.5s ease-in-out infinite; }
  .hero-fleck-right { animation-delay: -2.5s; }
}

.motion-paused .hero-object { transform: none; transition: none; }

@keyframes hero-swatch-drift {
  0%, 100% { transform: translateY(4px) rotate(-7deg); }
  50% { transform: translateY(-15px) rotate(1deg); }
}

@keyframes hero-pen-drift {
  0%, 100% { transform: translateY(-8px) rotate(4deg); }
  50% { transform: translateY(13px) rotate(-4deg); }
}

@keyframes hero-curve-sway {
  from { transform: rotate(-3deg) scaleY(.94); }
  to { transform: rotate(3deg) scaleY(1.06); }
}

@keyframes hero-fleck-drift {
  0%, 100% { transform: translateY(4px) rotate(-9deg); opacity: .67; }
  50% { transform: translateY(-9px) rotate(8deg); opacity: 1; }
}

@media (max-width: 750px) {
  .hero { min-height: clamp(560px, calc(100svh - 105px), 675px); }
  .hero-copy { padding-top: clamp(65px, 11svh, 115px); }
  .hero h1 { font-size: clamp(63px, 16.7vw, 118px); }
  .hero-object { width: clamp(207px, 55vw, 345px); bottom: 53px; }
  .hero-swatches { left: -23px; }
  .hero-pen { right: -26px; }
  .hero-curve { width: min(55vw, 325px); bottom: 45px; }
  .hero-fleck-left { top: 54%; left: 12%; }
  .hero-fleck-right { top: 52%; right: 11%; }
  .hero-object-icon { bottom: 3%; font-size: 17px; }
}

@media (max-width: 420px) {
  .hero h1 { font-size: clamp(53px, 16.7vw, 70px); }
  .hero-kicker { font-size: 10px; }
  .hero-description { font-size: 13px; }
}

.portfolio-title-word {
  display: block;
  padding-inline: .025em .1em;
  transition: transform .42s cubic-bezier(.22, .61, .36, 1), filter .42s ease;
}

.hero h1::after {
  content: '';
  position: absolute;
  left: .07em;
  bottom: -.06em;
  width: 76%;
  height: 2px;
  border-radius: 2px;
  background: linear-gradient(90deg, var(--rosa), var(--accent), transparent);
  opacity: 0;
  scale: .24 1;
  transform-origin: left;
  transition: opacity .36s ease, scale .42s cubic-bezier(.22, .61, .36, 1);
}

@supports (background-clip: text) {
  .portfolio-title-word {
    background-image:
      radial-gradient(ellipse 110px 75px at var(--title-x, 50%) var(--title-y, 50%), var(--title-light, transparent), transparent),
      linear-gradient(110deg, var(--marfil) 15%, var(--marfil) 40%, var(--accent-light) 50%, var(--accent) 56%, var(--marfil) 67%);
    background-size: 100% 100%, 245% 100%;
    background-position: 0 0, 100% 0;
    background-clip: text;
    color: transparent;
    animation: portfolio-shimmer 7s ease-in-out infinite;
  }
}

@keyframes portfolio-shimmer {
  0%, 18% { background-position: 0 0, 100% 0; }
  68%, 100% { background-position: 0 0, 0 0; }
}

@media (prefers-reduced-motion: no-preference) {
  .hero h1 {
    animation: portfolio-float 6s ease-in-out infinite;
  }
}

@keyframes portfolio-float {
  0%, 100% { translate: 0 0; }
  35% { translate: .028em -.05em; }
  70% { translate: -.012em -.025em; }
}

@media (hover: hover) {
  .hero h1:hover .portfolio-title-word {
    --title-light: var(--rosa-claro);
    filter: drop-shadow(0 5px 14px color-mix(in srgb, var(--rosa) 34%, transparent));
  }

  :root:not(.motion-paused) .hero h1:hover .portfolio-title-word {
    transform: translateY(-.06em) rotate(-1.25deg);
  }

  .hero h1:hover::after {
    opacity: 1;
    scale: 1;
  }
}

@media (prefers-reduced-motion: reduce) {
  .hero h1:hover .portfolio-title-word {
    transform: none;
  }
}

.project-visual,
.dialog-image-wrap,
#thumbnails button {
  background-image: linear-gradient(var(--frame-top-left, transparent), var(--frame-bottom-left, transparent));
}

#thumbnails button {
  position: relative;
  overflow: hidden;
}

.project-visual::before,
.dialog-image-wrap::before,
#thumbnails button::before {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(var(--frame-top-right, transparent), var(--frame-bottom-right, transparent));
  mask-image: linear-gradient(90deg, transparent, #000);
}

.project-visual > img,
.dialog-image-wrap > img,
#thumbnails img { position: relative; }

.project-visual > .project-mockup { object-fit: cover; }

.dialog-image-wrap.is-booklet {
  height: auto;
  grid-template: auto / minmax(0, 1fr);
  place-items: center;
  padding: 16px 45px;
  background: radial-gradient(ellipse at 30% 20%, #3e5447, #182620 78%);
  perspective: 1300px;
}

.dialog-image-wrap.is-booklet::before { display: none; }

.dialog-image-wrap.is-booklet > img {
  grid-area: 1 / 1;
  width: min(100%, 41dvh, 390px);
  height: auto;
  aspect-ratio: .78;
  background: #fff;
  box-shadow: 2px 2px 0 #dddcd4, 4px 4px 0 #afafa4, 6px 11px 23px #0008;
}

.booklet-turn {
  pointer-events: none;
  backface-visibility: hidden;
  z-index: 1;
}

.is-booklet .image-arrow { z-index: 2; }
.is-booklet .image-arrow[aria-disabled="true"] { opacity: .4; cursor: default; }
.is-booklet .image-arrow[aria-disabled="true"]:hover { background: #242117e8; color: var(--accent); }

.dialog-image-wrap.has-qr {
  height: auto;
  min-height: min(43dvh, 325px);
  grid-template: auto / minmax(0, 1fr) minmax(110px, 28%);
  align-items: center;
  gap: 10px;
  padding: 16px 49px;
  background: radial-gradient(ellipse, #333a43, #161c23 78%);
}

.dialog-image-wrap.has-qr::before { display: none; }
.dialog-image-wrap.has-qr > img { height: auto; }

.project-qr {
  display: grid;
  justify-self: center;
  width: min(100%, 200px);
  padding: 6px;
  border-radius: 8px;
  background: #fff;
}

.project-qr[hidden] { display: none; }
.project-qr img { height: auto; aspect-ratio: 1; border-radius: 4px; }

@media (max-width: 560px) {
  .dialog-image-wrap.has-qr { grid-template-columns: minmax(0, 1fr); padding-inline: 36px; }
  .dialog-image-wrap.has-qr .image-arrow { top: 25%; }
}

.dialog-image-wrap.is-instagram {
  height: auto;
  padding-block: 10px;
  background: radial-gradient(ellipse, #37271b, #1b1814 75%);
}

.dialog-image-wrap.is-instagram::before { display: none; }

.instagram-piece {
  justify-self: center;
  width: min(320px, calc(100% - 86px));
  overflow: hidden;
  border: 1px solid #ffffff35;
  border-radius: 14px;
  background: #111315;
  color: #f7f5f1;
}

.instagram-header,
.instagram-footer { padding: 8px 10px; }

.instagram-header,
.instagram-actions {
  display: flex;
  align-items: center;
  gap: 8px;
}

.instagram-header strong {
  min-width: 0;
  overflow-wrap: anywhere;
  font-size: 11px;
}

.instagram-avatar {
  flex: 0 0 24px;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background: white no-repeat;
}

.instagram-format {
  margin-left: auto;
  color: var(--accent);
  font-size: 10px;
}

.instagram-stage {
  position: relative;
  display: grid;
  place-items: center;
  background: #0b0c0d;
}

.instagram-post { height: min(48dvh, 425px); }
.instagram-reel { height: min(53dvh, 470px); }

.instagram-stage img,
.instagram-stage video {
  width: 100%;
  height: 100%;
  min-height: 0;
  object-fit: contain;
}

.instagram-play {
  position: absolute;
  inset: 50% auto auto 50%;
  display: grid;
  place-items: center;
  translate: -50% -50%;
  width: 54px;
  height: 54px;
  border: 1px solid #ffffff55;
  border-radius: 50%;
  background: #151311d9;
  color: white;
  font-size: 25px;
}

.instagram-play:hover { background: #29211c; }
.instagram-play[hidden] { display: none; }
.instagram-actions .icon { font-size: 16px; }
.instagram-actions .icon:last-child { margin-left: auto; }
.instagram-footer p { margin: 4px 0 0; font-size: 10px; }

.reel-thumb-icon {
  position: absolute;
  right: 2px;
  bottom: 2px;
  display: grid;
  place-items: center;
  width: 17px;
  height: 17px;
  border-radius: 50%;
  background: #151311e8;
  color: white;
  font-size: 12px;
}

html:has(#project-dialog[open]) {
  overflow: hidden;
  overscroll-behavior: none;
  scrollbar-gutter: stable;
}

#project-dialog {
  --accent: var(--project-accent, #ffd15a);
  --accent-light: color-mix(in srgb, var(--accent) 75%, white);
  border-color: color-mix(in srgb, var(--accent) 38%, var(--panel));
  background:
    radial-gradient(ellipse at 95% 0%, color-mix(in srgb, var(--accent) 20%, transparent), transparent 72%),
    var(--panel);
  overscroll-behavior: contain;
}

#project-dialog #dialog-subtitle { color: var(--accent); }

.contact-bottom {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-items: center;
  gap: clamp(22px, 4vw, 48px);
}

.contact-invitation {
  margin: 0;
  color: var(--text);
  font-size: clamp(23px, 3.15vw, 41px);
  line-height: 1.25;
  letter-spacing: -.035em;
}

.contact-invitation span { color: var(--muted); }

.contact-options {
  display: grid;
  gap: 14px;
}

.contact-card {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: clamp(11px, 2vw, 22px);
  min-height: 94px;
  padding: 15px clamp(13px, 2vw, 24px);
  border: 1px solid #ffffff38;
  border-radius: 10px;
  background: transparent;
  color: var(--text);
  transition: border-color .24s ease, box-shadow .24s ease;
}

.contact-card:is(:hover, :focus-visible) {
  border-color: var(--contact-color);
  box-shadow: 0 0 24px color-mix(in srgb, var(--contact-color) 19%, transparent);
}

.contact-card-gmail { --contact-color: #ff796d; }
.contact-card-whatsapp { --contact-color: #25d366; }

.contact-logo {
  width: clamp(27px, 3.4vw, 38px);
  height: auto;
}

.contact-card-text {
  display: grid;
  gap: 6px;
  font-size: clamp(16px, 1.8vw, 23px);
  line-height: 1.2;
  letter-spacing: -.025em;
  overflow-wrap: anywhere;
}

.contact-channel {
  color: var(--contact-color);
  font: 600 11px/1.2 var(--font-text);
  letter-spacing: .13em;
  text-transform: uppercase;
}

.contact-card-arrow {
  color: var(--contact-color);
  font-size: 19px;
}

.contact-verse {
  grid-column: 1 / -1;
  margin: 0;
  padding-top: clamp(20px, 3vw, 35px);
  border-top: 1px solid var(--line);
  text-align: center;
}

.contact-verse blockquote {
  max-width: 50ch;
  margin: 0 auto;
  color: var(--marfil);
  font: italic 440 clamp(18px, 2.05vw, 26px)/1.45 var(--font-editorial);
  text-wrap: balance;
}

.contact-verse figcaption {
  margin-top: 10px;
  color: var(--muted);
  font: 11px/1.4 monospace;
  letter-spacing: .09em;
}

@media (max-width: 700px) {
  .contact-bottom { grid-template-columns: minmax(0, 1fr); }
  .contact-card { min-height: 78px; }
}

.about {
  row-gap: 42px;
}

.about-portrait {
  position: relative;
  aspect-ratio: 6 / 5;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 9px;
  background: var(--panel);
}

.about-portrait img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 92%;
}

.tools {
  grid-column: 1 / -1;
  padding-top: 32px;
  border-top: 1px solid var(--line);
}

.tools > h3 {
  margin: 0 0 17px;
  font-size: clamp(22px, 2.5vw, 34px);
  font-weight: 520;
  letter-spacing: -.045em;
}

.tool-groups {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}

.tool-group {
  min-width: 0;
  padding: clamp(12px, 1.5vw, 20px);
  border: 1px solid var(--line);
  border-radius: 10px;
  background: #ffffff03;
}

.tool-group-ia { grid-column: span 2; }

.tool-group h4 {
  margin: 0 0 13px;
  color: var(--marfil);
  font: 10px/1.4 monospace;
  letter-spacing: .11em;
  text-transform: uppercase;
}

.tool-list {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 76px), 1fr));
  gap: 8px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.tool-card {
  display: grid;
  justify-items: center;
  align-content: center;
  gap: 8px;
  min-width: 0;
  min-height: 80px;
  padding: 9px 5px;
  border: 1px solid #ffffff17;
  border-radius: 7px;
  background: var(--panel);
  color: var(--text);
  font-size: 11px;
  line-height: 1.2;
  text-align: center;
  transition: border-color .22s, background .22s, box-shadow .22s, color .22s;
}

.tool-card:is(:hover, :active) {
  border-color: var(--tool-color);
  background: color-mix(in srgb, var(--tool-color) 13%, var(--panel));
  box-shadow: 0 0 18px color-mix(in srgb, var(--tool-color) 24%, transparent);
  color: var(--tool-color);
}

.tool-logo-frame {
  display: grid;
  width: 39px;
  height: 39px;
  place-items: center;
  border-radius: 7px;
  background: #fff;
}

.tool-logo {
  display: block;
  width: 34px;
  height: 34px;
  overflow: hidden;
}

@media (max-width: 900px) {
  .tool-groups { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 560px) {
  .about { row-gap: 30px; }
  .tool-groups { grid-template-columns: minmax(0, 1fr); }
  .tool-group-ia { grid-column: auto; }
}

.gallery-covers {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 32px 24px;
}

.section-intro > .gallery-guide {
  max-width: 33ch;
  color: var(--text);
  font-size: clamp(16px, 1.8vw, 22px);
  line-height: 1.45;
  text-wrap: balance;
}

.skip[hidden],
.header[hidden],
main > section[hidden],
.footer[hidden],
.gallery-covers[hidden],
.gallery-section[hidden],
.projects > .section-intro[hidden] {
  display: none;
}

.gallery-cover {
  display: grid;
  gap: 14px;
  border-radius: 10px;
  --cover-accent: var(--accent);
}

.gallery-cover[href="#identidad"] {
  --cover-accent: #779eff;
  --cover-image-hover: 1;
}
.gallery-cover[href="#redes"] { --cover-accent: var(--rosa); }
.gallery-cover[href="#web"] { --cover-accent: #57dec8; }
.gallery-cover[href="#impreso"] { --cover-accent: #ffd16b; }

.gallery-cover-art {
  position: relative;
  display: block;
  overflow: hidden;
  aspect-ratio: 4 / 3;
  max-height: 390px;
  border: 1px solid color-mix(in srgb, var(--accent) 15%, transparent);
  border-radius: 9px;
  background: var(--panel);
  transition: border-color .35s ease, box-shadow .35s ease;
}

.gallery-cover-art img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
  transition: transform .65s cubic-bezier(.22, .61, .36, 1);
}

.gallery-cover[href="#identidad"] .gallery-cover-art {
  background: radial-gradient(ellipse at 50% 42%, #303bb0, #252d8a 64%, #171e62);
}

.gallery-cover[href="#identidad"] .gallery-cover-art img {
  position: absolute;
  inset: -5% 0 auto;
  height: 110%;
  object-fit: contain;
  filter: url('#identity-cover-mask');
}

.gallery-cover[href="#redes"] .gallery-cover-art {
  background: radial-gradient(ellipse at 50% 45%, #9e176c, #7e1156 61%, #540b3d);
}

.gallery-cover[href="#web"] .gallery-cover-art {
  background: radial-gradient(ellipse at 50% 45%, #115878, #0c415e 62%, #082e4b);
}

.gallery-cover[href="#impreso"] .gallery-cover-art {
  background: radial-gradient(ellipse at 50% 45%, #a6442a, #84351e 62%, #652816);
}

.gallery-cover[href="#redes"] .gallery-cover-art img,
.gallery-cover[href="#web"] .gallery-cover-art img,
.gallery-cover[href="#impreso"] .gallery-cover-art img {
  object-fit: contain;
  padding: clamp(6px, 1.1vw, 13px);
}

.gallery-cover:hover .gallery-cover-art,
.gallery-cover:focus-visible .gallery-cover-art {
  border-color: var(--cover-accent);
  box-shadow: 0 0 28px color-mix(in srgb, var(--cover-accent) 22%, transparent);
}

.gallery-cover:hover .gallery-cover-art img,
.gallery-cover:focus-visible .gallery-cover-art img {
  transform: scale(var(--cover-image-hover, 1.045));
}

.gallery-cover-open {
  position: absolute;
  right: 14px;
  bottom: 14px;
  display: grid;
  place-items: center;
  width: 42px;
  height: 42px;
  color: var(--marfil);
  background: #242117e8;
  border: 1px solid color-mix(in srgb, var(--marfil) 27%, transparent);
  border-radius: 50%;
  font-size: 20px;
  transition: background .3s ease, color .3s ease;
}

.gallery-cover:hover .gallery-cover-open,
.gallery-cover:focus-visible .gallery-cover-open {
  background: var(--cover-accent);
  color: var(--bg);
}

.gallery-cover-title {
  display: flex;
  align-items: center;
  padding-inline: 2px;
  gap: 9px;
  margin: 0;
  font-size: clamp(17px, 2.2vw, 25px);
  font-weight: 530;
  letter-spacing: -.035em;
}

.gallery-cover-title .icon {
  color: var(--cover-accent);
  font-size: .84em;
}

.gallery-back {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  margin-bottom: 25px;
  color: var(--accent);
  font-size: 12px;
}

.gallery-back .icon {
  font-size: 17px;
  transform: scaleX(-1);
}

.gallery-back:hover {
  color: var(--marfil);
}

.projects:has(#gallery-sections:not([hidden])) {
  padding-block: clamp(26px, 5vw, 64px);
}

#gallery-sections > .gallery-section {
  padding-top: 0;
}

.gallery-back-end {
  margin: 28px 0 0;
}

.gallery-section .gallery-heading h3 {
  font-size: clamp(25px, 4vw, 45px);
  letter-spacing: -.045em;
}

@media (max-width: 560px) {
  .gallery-covers {
    grid-template-columns: minmax(0, 1fr);
    gap: 26px;
  }
}
