/* proy.css — solo lo único de Proyectos. Variables/botones/cartel → global.css */
body { background:var(--gris); }
.contaCarousel { max-width:1100px; margin:0 auto; padding:64px 24px 80px; }
.content { display:grid; grid-template-columns:1.4fr 1fr; gap:24px; align-items:start; }

/* ── Carrusel ── */
.carousel { background:#fff; border-radius:var(--radius-lg); overflow:hidden; box-shadow:var(--sombra); border:1.5px solid transparent; transition:box-shadow .25s,border-color .25s; }
.carousel:hover { box-shadow:var(--sombra-hover); border-color:var(--cyan); }

/* TRACK — reemplaza .carousel-images */
.carousel-track { display:flex; transition:transform .5s ease-in-out; }
.carousel-slide { min-width:100%; flex-shrink:0; }

/* Barra de info dentro del slide */
.slide-info {
    display:flex; align-items:center; gap:10px; flex-wrap:wrap;
    padding:12px 20px; background:#fff; border-bottom:.5px solid #e8edf3;
}
.pinfo-cat { font-size:.7rem; font-weight:700; text-transform:uppercase; letter-spacing:1.5px; color:var(--cyan); font-family:'DM Sans',sans-serif; }
.pinfo-titulo { font-family:'Barlow Condensed',sans-serif; font-size:1.05rem; font-weight:700; color:var(--azul); }
.pinfo-stars { color:#f59e0b; font-size:.88rem; }
.pinfo-stars small { color:var(--muted); font-size:.7rem; }
.btn-ver-fotos {
    margin-left:auto; background:transparent; border:1.5px solid var(--cyan);
    color:var(--cyan); border-radius:var(--radius-pill); padding:3px 12px;
    font-size:.72rem; font-weight:700; cursor:pointer;
    font-family:'DM Sans',sans-serif; transition:all .2s;
}
.btn-ver-fotos:hover { background:var(--cyan); color:#fff; }

/* Imagen portada */
.slide-img { width:100%; height:340px; object-fit:cover; display:block; }

/* Galería expandible */
.slide-galeria { background:#f4f7fb; padding:12px 20px; border-top:.5px solid #e8edf3; }
.galeria-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(90px,1fr)); gap:6px; }
.galeria-grid img { width:100%; height:70px; object-fit:cover; border-radius:6px; cursor:zoom-in; transition:transform .2s; }
.galeria-grid img:hover { transform:scale(1.05); }
.btn-cerrar-galeria {
    margin-top:8px; background:transparent; border:1.5px solid #e8edf3;
    color:var(--muted); border-radius:var(--radius-pill); padding:3px 12px;
    font-size:.72rem; cursor:pointer; transition:all .2s;
}
.btn-cerrar-galeria:hover { border-color:#ef4444; color:#ef4444; }

/* Descripción */
.slide-desc { padding:10px 20px; background:#fff; font-size:.85rem; color:var(--muted); line-height:1.6; border-top:.5px solid #e8edf3; }

/* Barra de progreso autoplay estilo Netflix */
.carousel-progress { height:3px; background:#e8edf3; position:relative; overflow:hidden; }
.carousel-progress-bar {
    height:100%; background:var(--cyan);
    width:0%; transition:width linear;
}

/* Controles */
.carousel-buttons { display:flex; gap:10px; padding:16px 20px; background:var(--gris); border-top:.5px solid #e8edf3; align-items:center; }
.carousel-buttons button { flex:1; padding:10px 0; background:#fff; color:var(--azul); border:1.5px solid #e8edf3; border-radius:var(--radius-sm); cursor:pointer; font-family:'DM Sans',sans-serif; font-size:.88rem; font-weight:500; transition:all .2s; }
.carousel-buttons button:hover { background:var(--cyan); color:#fff; border-color:var(--cyan); }
.carousel-counter { font-size:.82rem; color:var(--muted); font-family:'DM Sans',sans-serif; white-space:nowrap; }

/* Dots */
.carousel-dots { display:flex; justify-content:center; gap:6px; padding:10px 0 14px; background:var(--gris); }
.dot { width:8px; height:8px; border-radius:50%; border:none; background:#d1d5db; cursor:pointer; transition:background .2s,transform .2s; padding:0; }
.dot.active { background:var(--cyan); transform:scale(1.3); }

/* ── Review ── */
.review-section { background:#fff; border-radius:var(--radius-lg); padding:32px 28px; box-shadow:var(--sombra); border:1.5px solid transparent; transition:box-shadow .25s,border-color .25s; }
.review-section:hover { box-shadow:var(--sombra-hover); border-color:var(--cyan); }
.review-section::before { content:'Tu opinión'; display:block; font-size:.72rem; font-weight:700; text-transform:uppercase; letter-spacing:2px; color:var(--cyan); margin-bottom:10px; font-family:'DM Sans',sans-serif; }
.review-section h2 { font-family:'Barlow Condensed',sans-serif; font-size:1.6rem; font-weight:800; color:var(--azul); margin-bottom:20px; }

.stars { display:flex; flex-direction:row-reverse; justify-content:flex-end; gap:4px; margin-bottom:24px; }
.stars input { display:none; }
.stars label { font-size:2rem; color:#d1d5db; cursor:pointer; transition:color .15s,transform .15s; line-height:1; }
.stars label:hover { transform:scale(1.15); }
.stars input:checked ~ label,.stars label:hover,.stars label:hover ~ label { color:#f59e0b; }

.comment-box { display:flex; flex-direction:column; gap:12px; }
.comment-box textarea { width:100%; height:120px; padding:14px 16px; border-radius:10px; border:1.5px solid #e8edf3; resize:none; font-family:'DM Sans',sans-serif; font-size:.9rem; color:var(--texto); background:var(--gris); box-sizing:border-box; transition:border-color .2s; outline:none; }
.comment-box textarea::placeholder { color:var(--muted); }
.comment-box textarea:focus { border-color:var(--cyan); background:#fff; }
.comment-box button { align-self:flex-start; padding:12px 32px; background:var(--cyan); color:#fff; border:none; border-radius:var(--radius-pill); cursor:pointer; font-family:'Barlow Condensed',sans-serif; font-weight:700; font-size:.95rem; transition:all .2s; }
.comment-box button:hover { background:#0aaad0; transform:translateY(-2px); }

/* Mensajes */
.review-msg { padding:12px 16px; border-radius:10px; font-size:.875rem; margin-bottom:16px; font-family:'DM Sans',sans-serif; }
.review-msg.ok  { background:rgba(16,185,129,.08); border:1.5px solid rgba(16,185,129,.3); color:#059669; }
.review-msg.err { background:rgba(239,68,68,.08);  border:1.5px solid rgba(239,68,68,.3);  color:#dc2626; }

/* Campos */
.review-field { margin-bottom:14px; }
.review-field label { display:block; font-size:.75rem; font-weight:700; text-transform:uppercase; letter-spacing:.5px; color:var(--muted); margin-bottom:6px; font-family:'DM Sans',sans-serif; }
.review-field select, .review-field input[type=text] {
    width:100%; padding:10px 14px; border-radius:10px; border:1.5px solid #e8edf3;
    background:var(--gris); color:var(--texto); font-family:'DM Sans',sans-serif;
    font-size:.9rem; outline:none; box-sizing:border-box; transition:border-color .2s;
}
.review-field select:focus, .review-field input:focus { border-color:var(--cyan); background:#fff; }

/* Reseñas */
.resenas-lista { margin-top:24px; padding-top:18px; border-top:1.5px solid #e8edf3; }
.resenas-lista h3 { font-family:'Barlow Condensed',sans-serif; font-size:1.05rem; font-weight:700; color:var(--azul); margin-bottom:12px; }
.resena-card { background:var(--gris); border-radius:10px; padding:12px 14px; margin-bottom:8px; border:1.5px solid transparent; transition:border-color .2s; }
.resena-card:hover { border-color:var(--cyan); }
.resena-top { display:flex; align-items:center; gap:8px; margin-bottom:3px; }
.resena-stars { color:#f59e0b; font-size:.9rem; }
.resena-nombre { font-weight:700; font-size:.83rem; color:var(--azul); font-family:'DM Sans',sans-serif; }
.resena-proyecto { font-size:.73rem; color:var(--muted); margin-bottom:5px; font-family:'DM Sans',sans-serif; }
.resena-texto { font-size:.82rem; color:var(--muted); font-style:italic; line-height:1.5; margin:0; font-family:'DM Sans',sans-serif; }

/* Lightbox */
#lightbox { display:none; position:fixed; inset:0; background:rgba(10,20,40,.95); align-items:center; justify-content:center; z-index:9999; cursor:zoom-out; }
#lightbox.open { display:flex; }
#lightbox-img { max-width:90vw; max-height:88vh; border-radius:10px; }
.lb-cerrar { position:absolute; top:20px; right:24px; background:rgba(255,255,255,.12); border:1.5px solid rgba(255,255,255,.2); color:#fff; border-radius:50%; width:38px; height:38px; font-size:1rem; cursor:pointer; }
.lb-cerrar:hover { background:rgba(239,68,68,.4); }

@media (max-width:900px) { .content { grid-template-columns:1fr; } }
@media (max-width:768px) { .slide-img { height:240px; } .review-section { padding:24px 20px; } }
