/* ============================================
   KAIZEEN — Portafolio de Isabella Vásquez Castro
   Paleta: vino / morado / crema / naranja / nude / negro
============================================ */

@font-face {
  font-family: 'Climate Crisis';
  src: url('assets/fonts/ClimateCrisis-Regular.woff2') format('woff2'),
       url('assets/fonts/ClimateCrisis-Regular.otf') format('opentype');
  font-weight: 400;
  font-display: swap;
}

@font-face {
  font-family: 'Mayonice';
  src: url('assets/fonts/Mayonice.woff2') format('woff2'),
       url('assets/fonts/Mayonice.otf') format('opentype');
  font-weight: 400;
  font-display: swap;
}

:root{
  --vino: #4D0E13;
  --vino-deep: #350a0e;
  --morado: #4E2660;
  --crema: #EADCB9;
  --naranja: #EA9C3F;
  --nude: #CBA49F;
  --negro: #000000;

  --display: 'Climate Crisis', 'Anton', sans-serif;
  --script: 'Mayonice', 'Caveat', cursive;
  --body: 'Montserrat', sans-serif;

  --rail-w: 86px;
  --ease: cubic-bezier(.16,.8,.24,1);
}

*{box-sizing:border-box; margin:0; padding:0;}

/* Garantiza que cualquier elemento con el atributo "hidden" se oculte,
   sin importar qué otra clase le fije un display propio (flex, grid, etc.) */
[hidden]{ display:none !important; }

html{scroll-behavior:smooth;}
body{
  background: var(--vino);
  color: var(--crema);
  font-family: var(--body);
  overflow-x: hidden;
  cursor: none;
}
@media (max-width: 860px){
  body{ cursor: auto; }
}

a{color:inherit; text-decoration:none;}
button{font-family: inherit; cursor:none; border:none; background:none; color:inherit;}
@media (max-width: 860px){ button{ cursor:pointer; } }
em{font-style: normal; font-family: var(--script); color: var(--naranja); font-size: 1.05em;}

::selection{ background: var(--naranja); color: var(--vino); }

/* ---------- custom cursor ---------- */
.cursor-ring{
  position: fixed; top:0; left:0; width:44px; height:44px;
  transform: translate(-50%,-50%);
  pointer-events: none; z-index: 9999;
  transition: width .25s var(--ease), height .25s var(--ease), opacity .2s ease;
  mix-blend-mode: difference;
}
.cursor-ring svg{ width:100%; height:100%; }
.cursor-circle-outer{ fill:none; stroke:var(--crema); stroke-width:2; transition: r .25s var(--ease); }
.cursor-circle-inner{ fill: var(--crema); transition: r .25s var(--ease), opacity .25s ease; }
.cursor-tick{ stroke: var(--crema); stroke-width: 2; transition: opacity .2s ease; }
.cursor-ring.active{ width: 74px; height: 74px; }
.cursor-ring.active .cursor-circle-outer{ r: 20; stroke: var(--naranja); }
.cursor-ring.active .cursor-circle-inner{ opacity: 0; }
.cursor-ring.active .cursor-tick{ opacity: .35; }
@media (max-width: 860px){ .cursor-ring{ display:none; } }

/* ---------- grain overlay ---------- */
.grain{
  position: fixed; inset:0; pointer-events:none; z-index: 500;
  opacity: .05; mix-blend-mode: overlay;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

/* ---------- side rail ---------- */
.rail{
  position: fixed; top:0; left:0; height:100vh; width: var(--rail-w);
  display:flex; flex-direction:column; align-items:center; justify-content:space-between;
  padding: 28px 0; z-index: 400;
  background: linear-gradient(180deg, rgba(0,0,0,.28), rgba(0,0,0,0) 18%, rgba(0,0,0,0) 82%, rgba(0,0,0,.28));
}
.rail-logo{ color: var(--crema); opacity:.9; transition: transform .3s var(--ease), color .3s ease; }
.rail-logo:hover{ transform: rotate(-8deg) scale(1.08); color: var(--naranja); }
.logo-mark{ width:24px; height:34px; }
.rail-dots{ list-style:none; display:flex; flex-direction:column; gap:22px; align-items:center; }
.dot{
  position: relative; width:9px; height:9px; border-radius:50%;
  background: rgba(234,220,185,.28); display:block;
  transition: background .3s ease, transform .3s ease;
}
.dot:hover, .dot.is-active{ background: var(--naranja); transform: scale(1.4); }
.dot span{
  position:absolute; left: 24px; top:50%; transform: translateY(-50%) translateX(-6px);
  font-size: .68rem; letter-spacing: .12em; white-space:nowrap;
  color: var(--crema); background: var(--negro); padding: 4px 9px; border-radius:2px;
  opacity:0; pointer-events:none; transition: opacity .2s ease, transform .2s ease;
}
.dot:hover span{ opacity: .92; transform: translateY(-50%) translateX(0); }
.rail-menu-btn{ display:none; }

@media (max-width: 860px){
  .rail{ width:100%; height:64px; flex-direction:row; padding: 0 18px; top:0; }
  .rail-dots{ display:none; }
  .rail-menu-btn{
    display:flex; flex-direction:column; gap:5px; width:26px;
  }
  .rail-menu-btn span{ width:100%; height:2px; background: var(--crema); border-radius:2px; }
  main{ padding-top:64px; }
}

.mobile-menu{
  position: fixed; inset:0; background: var(--vino-deep); z-index: 600;
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:26px;
  transform: translateY(-100%); transition: transform .45s var(--ease);
}
.mobile-menu.open{ transform: translateY(0); }
.mobile-menu a{ font-family: var(--display); font-size: 1.8rem; letter-spacing: .04em; color: var(--crema); }

/* ---------- layout helpers ---------- */
main{ padding-left: var(--rail-w); }
section{ position: relative; padding: 120px 8vw; }
.section-head{ display:flex; align-items:baseline; gap:18px; margin-bottom: 46px; }
.section-num{ font-family: var(--display); font-size: 1rem; color: var(--naranja); letter-spacing: .08em; }
.section-title{ font-family: var(--display); font-size: clamp(2rem, 4.2vw, 3.4rem); text-transform: uppercase; letter-spacing: .01em; }
.section-head.light .section-title{ color: var(--vino); }
.section-head.light .section-num{ color: var(--morado); }

/* ---------- HERO ---------- */
.hero{
  min-height: 100vh; display:flex; flex-direction:column; justify-content:center;
  padding-top: 90px;
  background:
    radial-gradient(ellipse at 78% 30%, rgba(78,38,96,.55), transparent 55%),
    radial-gradient(ellipse at 15% 85%, rgba(234,156,63,.18), transparent 45%),
    var(--vino);
  overflow:hidden;
}
.hero-eyebrow{
  font-size: .78rem; letter-spacing: .28em; color: var(--nude); margin-bottom: 22px;
  text-transform: uppercase;
}
.hero-title{ font-family: var(--display); text-transform:uppercase; line-height: .92; }
.hero-title .line{
  display:block; font-size: clamp(2.6rem, 8.6vw, 7.2rem);
  opacity:0; transform: translateY(40px);
  animation: rise .9s var(--ease) forwards;
}
.hero-title .line:nth-child(1){ animation-delay: .05s; }
.hero-title .line:nth-child(2){ animation-delay: .18s; }
.hero-title .line:nth-child(3){ animation-delay: .31s; color: var(--nude); }
.hero-title .line.accent{ animation-delay: .44s; color: var(--naranja); }
@keyframes rise{ to{ opacity:1; transform:translateY(0);} }

.hero-sub{
  max-width: 480px; margin-top: 30px; font-size: 1.05rem; color: var(--nude); font-weight:300;
  opacity:0; animation: rise .9s var(--ease) forwards; animation-delay: .58s;
}
.btn-ghost{
  display:inline-flex; align-items:center; gap:10px; margin-top: 40px;
  border: 1.5px solid var(--crema); padding: 14px 26px; font-size:.82rem;
  letter-spacing:.14em; text-transform:uppercase; width:fit-content;
  transition: background .3s var(--ease), color .3s var(--ease), gap .3s var(--ease);
  opacity:0; animation: rise .9s var(--ease) forwards; animation-delay: .7s;
}
.btn-ghost:hover{ background: var(--naranja); color: var(--vino); border-color: var(--naranja); gap:16px; }
.arrow{ transition: transform .3s var(--ease); }

.hero-scroll{
  position:absolute; bottom: 46px; left: 8vw; display:flex; align-items:center; gap:12px;
  font-size:.7rem; letter-spacing:.2em; text-transform:uppercase; color: var(--nude);
}
.scroll-line{ width:1px; height: 52px; background: rgba(234,220,185,.25); position:relative; }
.scroll-dot{ position:absolute; top:0; left:-2.5px; width:6px; height:6px; border-radius:50%; background: var(--naranja); animation: scrollmove 2s ease-in-out infinite; }
@keyframes scrollmove{ 0%{ top:0; opacity:1;} 90%{opacity:1;} 100%{ top:100%; opacity:0;} }

.hero-glyph{
  position:absolute; right: 4vw; bottom: -6vw; width: min(30vw, 340px); height:auto;
  color: rgba(234,220,185,.06);
}

/* ---------- IDEA ---------- */
.idea{ background: var(--crema); }
.idea-lead{
  font-size: clamp(1.15rem, 2vw, 1.6rem); font-weight:300; line-height:1.55; max-width: 900px;
  color: var(--vino); margin-bottom: 70px;
}
.idea .section-title {
  color: var(--vino); /* o el color que contraste con tu nuevo fondo */
}
.manifiesto-grid{ display:grid; grid-template-columns: repeat(3, 1fr); gap: 28px; }
.manifiesto-card{
  border-top: 2px solid var(--naranja); padding-top:22px;
  transition: transform .35s var(--ease);
}
.manifiesto-card:hover{ transform: translateY(-6px); }
.manifiesto-card h3{ font-family: var(--script); font-size: 1.9rem; color: var(--naranja); margin-bottom:12px; font-weight:400; }
.manifiesto-card p{ font-size: .92rem; line-height:1.6; color: var(--vino); font-weight:300; }
@media (max-width: 780px){ .manifiesto-grid{ grid-template-columns:1fr; } }

/* ---------- SOBRE MÍ ---------- */
.sobre-mi{ background: var(--vino); }
.sobre-grid{ display:grid; grid-template-columns: minmax(280px, 420px) 1fr; gap: 60px; align-items:start; }
@media (max-width: 900px){ .sobre-grid{ grid-template-columns: 1fr; } }

.sobre-slideshow{
  position:relative; aspect-ratio: 4/5; background: var(--vino-deep);
  overflow:hidden; border: 1px solid rgba(234,220,185,.15);
}
.slideshow-track{ position:relative; width:100%; height:100%; }
.slideshow-track img{
  position:absolute; inset:0; width:100%; height:100%; object-fit:contain;
  padding: 24px; box-sizing: border-box; opacity:0; transition: opacity 1.1s ease;
}
.slideshow-track img.is-active{ opacity:1; }
.slideshow-empty{
  position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
  color: var(--nude); font-size:.85rem; letter-spacing:.08em; text-transform:uppercase;
  background: linear-gradient(135deg, var(--morado), var(--vino-deep));
}
.slideshow-empty[hidden]{ display:none; }
.slideshow-dots{ position:absolute; bottom:16px; left:0; right:0; display:flex; justify-content:center; gap:8px; z-index:2; }
.slideshow-dots button{
  width:7px; height:7px; border-radius:50%; background: rgba(234,220,185,.4); transition: background .2s ease, transform .2s ease;
}
.slideshow-dots button.is-active{ background: var(--naranja); transform: scale(1.3); }
.slide-add{
  position:absolute; top:14px; right:14px; z-index:2; font-size:.7rem; letter-spacing:.06em; text-transform:uppercase;
  background: rgba(0,0,0,.55); color: var(--crema); padding: 8px 14px; border-radius:30px;
  transition: background .2s ease;
}
.slide-add:hover{ background: var(--naranja); color: var(--vino); }
.slide-del{
  position:absolute; top:14px; left:14px; z-index:2; font-size:.7rem; letter-spacing:.06em; text-transform:uppercase;
  background: rgba(0,0,0,.55); color: var(--crema); padding: 8px 14px; border-radius:30px;
  transition: background .2s ease;
}
.slide-del:hover{ background: #b23a3a; }

.sobre-info{ padding-top: 6px; }
.sobre-display h3{ font-family: var(--display); text-transform:uppercase; font-size: clamp(1.6rem,3vw,2.2rem); margin-bottom:6px; }
.sobre-display .role{ color: var(--naranja); font-size:.85rem; letter-spacing:.06em; text-transform:uppercase; margin-bottom:4px; display:block; }
.sobre-display .location{ color: var(--nude); font-size:.8rem; letter-spacing:.04em; margin-bottom:22px; display:block; }
.sobre-display .bio{ font-weight:300; line-height:1.7; color: var(--crema); white-space: pre-line; max-width: 620px; }
.sobre-display .bio.placeholder{ color: var(--nude); font-style: italic; }

.btn-edit{
  margin-top: 26px; font-size:.76rem; letter-spacing:.08em; text-transform:uppercase;
  border: 1px solid rgba(234,220,185,.4); padding: 10px 18px; border-radius: 30px;
  transition: border-color .25s ease, color .25s ease;
}
.btn-edit:hover{ border-color: var(--naranja); color: var(--naranja); }
.btn-text{ font-size:.78rem; text-decoration: underline; opacity:.75; }
.btn-text:hover{ opacity:1; }

.sobre-form{ display:flex; flex-direction:column; gap:16px; max-width: 520px; }
.sobre-form label{ display:flex; flex-direction:column; gap:6px; font-size:.76rem; letter-spacing:.05em; text-transform:uppercase; color: var(--nude); }
.sobre-form input, .sobre-form textarea{
  font-family: var(--body); font-size:.95rem; padding: 12px 14px;
  border:1px solid rgba(234,220,185,.25); background: rgba(0,0,0,.2); color: var(--crema); border-radius:2px; resize:vertical;
}
.sobre-form input:focus, .sobre-form textarea:focus{ outline: 2px solid var(--naranja); }
.form-actions{ display:flex; gap:18px; align-items:center; }
.sobre-form .btn-ghost{ animation:none; opacity:1; cursor:pointer; }

/* ---------- PORTAFOLIO (home category cards) ---------- */
.portafolio-lead{ margin-top:-24px; margin-bottom: 50px; font-weight:300; color: rgba(77,14,19,.7); max-width:520px; }
.cat-grid{ display:grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 26px; }
.cat-card{
  position:relative; background: var(--vino); color: var(--crema); padding: 40px 30px;
  min-height: 240px; display:flex; flex-direction:column; justify-content:space-between;
  overflow:hidden; transition: transform .35s var(--ease);
}
.cat-card::before{
  content:''; position:absolute; inset:0; opacity:0; transition: opacity .4s ease;
  background: radial-gradient(circle at 80% 20%, rgba(234,156,63,.35), transparent 60%);
}
.cat-card:hover{ transform: translateY(-6px); }
.cat-card:hover::before{ opacity:1; }
.cat-num{ font-family: var(--display); color: var(--naranja); font-size:1rem; letter-spacing:.1em; position:relative; z-index:1; }
.cat-card h3{ font-family: var(--display); text-transform:uppercase; font-size:1.8rem; margin: 14px 0 6px; position:relative; z-index:1; }
.cat-count{ font-size:.76rem; color: var(--nude); letter-spacing:.04em; position:relative; z-index:1; }
.cat-arrow{
  margin-top: 26px; font-size:.78rem; letter-spacing:.1em; text-transform:uppercase;
  display:flex; align-items:center; gap:8px; position:relative; z-index:1;
}
.cat-arrow .arrow{ transition: transform .3s var(--ease); }
.cat-card:hover .cat-arrow .arrow{ transform: translateX(6px); }

/* ---------- CATEGORY PAGE ---------- */
.back-link{
  display:inline-block; margin-bottom: 34px; font-size:.8rem; letter-spacing:.06em; text-transform:uppercase;
  color: var(--vino); opacity:.75; transition: opacity .2s ease;
}
.back-link:hover{ opacity:1; }
.cat-page{ background: var(--crema); color: var(--vino); min-height: 100vh; padding-top: 140px; }
.cat-project-count{ font-size:.8rem; color: rgba(77,14,19,.6); letter-spacing:.04em; }

/* ---------- PROJECT DETAIL PAGE ---------- */
.project-page{ background: var(--crema); color: var(--vino); min-height:100vh; padding-top: 140px; }
.project-cat{ font-size:.72rem; letter-spacing:.18em; text-transform:uppercase; color: var(--morado); }
.project-head{ display:flex; flex-wrap:wrap; justify-content:space-between; align-items:flex-end; gap: 20px; margin: 10px 0 22px; }
.project-title{ font-family: var(--display); text-transform:uppercase; font-size: clamp(2rem, 5vw, 3.6rem); }
.project-actions{ display:flex; gap:12px; flex-wrap:wrap; }
.btn-danger{
  font-size:.74rem; letter-spacing:.06em; text-transform:uppercase; padding: 10px 16px; border-radius:30px;
  border:1px solid rgba(178,58,58,.5); color:#b23a3a; transition: background .2s ease, color .2s ease;
}
.btn-danger:hover{ background:#b23a3a; color:#fff; }
.project-desc{ max-width: 720px; font-weight:300; line-height:1.7; color: rgba(77,14,19,.85); margin-bottom: 20px; }
.project-edit-form{ max-width: 640px; margin: 20px 0 30px; }
.project-edit-form label{ display:flex; flex-direction:column; gap:6px; font-size:.76rem; letter-spacing:.05em; text-transform:uppercase; color: var(--morado); margin-bottom:14px; }
.project-edit-form input, .project-edit-form textarea{
  font-family: var(--body); font-size:.95rem; padding: 12px 14px; border:1px solid rgba(77,14,19,.25);
  background:#fff; color: var(--vino); border-radius:2px; resize:vertical; width:100%;
}

.media-toolbar{ margin: 10px 0 30px; }
.media-gallery{ display:grid; grid-template-columns: repeat(auto-fill, minmax(300px,1fr)); gap: 24px; margin-top: 20px; }
.media-item{ position:relative; background:#000; overflow:hidden; }
.media-item img, .media-item video{ width:100%; display:block; max-height:520px; object-fit:cover; }
.media-item iframe{ width:100%; aspect-ratio:16/9; display:block; border:0; }
.media-caption{ padding: 12px 4px 0; font-size:.82rem; color: rgba(77,14,19,.75); }
.media-remove{
  position:absolute; top:10px; right:10px; width:28px; height:28px; border-radius:50%;
  background: rgba(0,0,0,.6); color:#fff; font-size:.8rem; opacity:0; transition: opacity .2s ease; z-index:2;
}
.media-item:hover .media-remove{ opacity:1; }
.project-missing{ text-align:center; padding: 100px 20px; }
.project-missing h2{ font-family: var(--display); text-transform:uppercase; font-size:1.8rem; margin-bottom:14px; }
.project-missing p{ color: rgba(77,14,19,.7); margin-bottom: 26px; }
.project-missing .btn-ghost{ animation:none; opacity:1; border-color: var(--vino); color:var(--vino); display:inline-flex; }
.project-missing .btn-ghost:hover{ background: var(--vino); color: var(--crema); }

/* ---------- PORTAFOLIO ---------- */
.portafolio{ background: var(--crema); color: var(--vino); }
.portafolio-toolbar{ display:flex; flex-wrap:wrap; justify-content:space-between; align-items:center; gap:18px; margin-bottom: 42px; }
.btn-add{
  font-size:.78rem; letter-spacing:.08em; text-transform:uppercase; padding: 11px 20px;
  background: var(--naranja); color: var(--vino); font-weight:700; border-radius:40px;
  transition: transform .25s var(--ease), background .25s ease;
}
.btn-add:hover{ transform: translateY(-2px); background: var(--morado); color: var(--crema); }

.grid{ display:grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 26px; }
.card{
  position:relative; background: var(--negro); aspect-ratio: 4/5; overflow:hidden;
  cursor:none;
}
@media (max-width:860px){ .card{ cursor:pointer; } }
.card img{ width:100%; height:100%; object-fit:cover; opacity:.72; transition: transform .6s var(--ease), opacity .4s ease; }
.card:hover img{ transform: scale(1.08); opacity: .4; }
.card-fallback{
  width:100%; height:100%; display:flex; align-items:center; justify-content:center;
  background: linear-gradient(135deg, var(--morado), var(--vino-deep));
  font-family: var(--display); font-size: 2.6rem; color: rgba(234,220,185,.5); text-transform:uppercase; text-align:center; padding: 20px;
}
.card-info{
  position:absolute; left:0; right:0; bottom:0; padding: 22px;
  background: linear-gradient(0deg, rgba(0,0,0,.88), transparent);
  transform: translateY(8px); transition: transform .35s var(--ease);
}
.card:hover .card-info{ transform: translateY(0); }
.card-cat{ font-size:.68rem; letter-spacing:.16em; text-transform:uppercase; color: var(--naranja); display:block; margin-bottom:6px; }
.card-title{ font-family: var(--display); font-size:1.4rem; color: var(--crema); text-transform:uppercase; }
.card-del{
  position:absolute; top:12px; right:12px; width:28px; height:28px; border-radius:50%;
  background: rgba(0,0,0,.55); color:var(--crema); font-size:.8rem; opacity:0;
  transition: opacity .2s ease; z-index:2;
}
.card:hover .card-del{ opacity:1; }

.empty-state{ text-align:center; padding: 60px 0; color: rgba(77,14,19,.55); font-weight:300; }

/* ---------- CONTACTO ---------- */
.contacto{
  min-height: 70vh; display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center;
  background: var(--morado);
}
.logo-mark-big{ width:44px; height:62px; color: var(--naranja); margin-bottom: 26px; }
.contacto-title{ font-family: var(--display); text-transform:uppercase; font-size: clamp(2rem, 5vw, 3.6rem); max-width: 780px; }
.contacto-sub{ margin-top:16px; letter-spacing:.14em; text-transform:uppercase; font-size:.78rem; color: var(--nude); }
.contacto-mail{
  margin-top: 38px; font-family: var(--display); font-size: clamp(1.3rem, 3vw, 2rem);
  border-bottom: 2px solid transparent; transition: border-color .3s ease, color .3s ease;
}
.contacto-mail:hover{ border-color: var(--naranja); color: var(--naranja); }
.contacto-links{ display:flex; gap: 30px; margin-top: 34px; }
.contacto-links a{ font-size:.82rem; letter-spacing:.08em; text-transform:uppercase; opacity:.8; transition: opacity .2s ease, color .2s ease; }
.contacto-links a:hover{ opacity:1; color: var(--naranja); }
.contacto-foot{
  margin-top: 70px; display:flex; gap: 26px; font-size:.72rem; letter-spacing:.08em;
  color: rgba(234,220,185,.55); text-transform:uppercase;
}

/* ---------- MODAL ---------- */
.modal{ position: fixed; inset:0; z-index:800; display:flex; align-items:center; justify-content:center; opacity:0; pointer-events:none; transition: opacity .3s ease; padding: 24px; }
.modal.open{ opacity:1; pointer-events:auto; }
.modal-backdrop{ position:absolute; inset:0; background: rgba(0,0,0,.72); backdrop-filter: blur(3px); }
.modal-panel{
  position:relative; background: var(--crema); color: var(--vino); max-width: 640px; width:100%;
  max-height: 86vh; overflow-y:auto; padding: 46px 40px; transform: translateY(24px) scale(.98);
  transition: transform .35s var(--ease);
}
.modal.open .modal-panel{ transform: translateY(0) scale(1); }
.modal-close{ position:absolute; top:18px; right:18px; font-size:1rem; width:34px; height:34px; }
.modal-cat{ font-size:.7rem; letter-spacing:.18em; text-transform:uppercase; color: var(--morado); }
.modal-title{ font-family: var(--display); text-transform:uppercase; font-size: clamp(1.6rem,4vw,2.4rem); margin: 10px 0 16px; }
.modal-desc{ font-weight:300; line-height:1.6; color: rgba(77,14,19,.85); }
.modal-media{ margin-top: 22px; }
.modal-media img{ width:100%; border-radius: 2px; }
.modal-link{
  display:inline-block; margin-top: 24px; border-bottom: 2px solid var(--naranja);
  font-weight:600; letter-spacing:.04em;
}

.project-form{ display:flex; flex-direction:column; gap:16px; margin-top: 24px; }
.project-form label{ display:flex; flex-direction:column; gap:6px; font-size:.78rem; letter-spacing:.05em; text-transform:uppercase; color: var(--morado); }
.project-form input, .project-form textarea{
  font-family: var(--body); font-size:.95rem; padding: 12px 14px; border:1px solid rgba(77,14,19,.25);
  background: #fff; color: var(--vino); border-radius:2px; resize:vertical;
}
.project-form input:focus, .project-form textarea:focus{ outline:2px solid var(--naranja); }
.project-form .btn-ghost{ align-self:flex-start; border-color: var(--vino); color:var(--vino); animation:none; opacity:1; cursor:pointer; }
.project-form .btn-ghost:hover{ background: var(--vino); color: var(--crema); }
.form-hint{ font-size: .72rem; color: rgba(77,14,19,.55); margin-top: 16px; line-height:1.5; }
.form-hint code{ background: rgba(77,14,19,.08); padding: 1px 6px; border-radius:2px; }

/* ---------- reveal-on-scroll ---------- */
.reveal{ opacity:0; transform: translateY(36px); transition: opacity .8s var(--ease), transform .8s var(--ease); }
.reveal.in{ opacity:1; transform:translateY(0); }

/* ---------- reduced motion ---------- */
@media (prefers-reduced-motion: reduce){
  *{ animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; scroll-behavior:auto !important; }
}

/* ---------- focus visibility (a11y) ---------- */
a:focus-visible, button:focus-visible, input:focus-visible, textarea:focus-visible{
  outline: 2px solid var(--naranja); outline-offset: 3px;
}

/* ---------- responsive base ---------- */
@media (max-width: 860px){
  main{ padding-left:0; }
  section{ padding: 80px 6vw; }
  .cat-page, .project-page{ padding-top: 40px; }
}