/* Public project directory: the legacy hierarchy, shared IslaPet surfaces. */
.ip-projects-body .ip-shell__workspace { background:var(--ip-color-page) var(--ip-surface-texture) repeat; }
.ip-projects { width:min(100% - 80px,1200px); margin:0 auto; padding:56px 0 80px; color:var(--ip-color-text); }
.ip-projects__intro { text-align:center; }
.ip-projects__intro h1 { margin:0; font:600 clamp(32px,2.7vw,44px)/1.2 Manrope,sans-serif; letter-spacing:-.035em; color:var(--ip-color-text); }
.ip-projects__intro p { margin:24px 0 0; font:400 20px/30px Manrope,sans-serif; color:var(--ip-color-text-muted); }
/* app.islapet.org/proyectos: three white tiles in a shared neutral frame. */
.ip-projects__kpis { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:7px; max-width:960px; margin:28px auto 24px; padding:7px; border-radius:20px; background:var(--ip-color-surface-related); text-align:center; }
.ip-projects__kpis>div { display:flex; flex-direction:column-reverse; padding:20px 0 10px; border-radius:20px; background:var(--ip-color-surface); }
.ip-projects__kpis dt { font:400 19px/47.5px Manrope,sans-serif; color:var(--ip-color-text-muted); }
.ip-projects__kpis dd { margin:0; font:500 37.8px/37.8px Manrope,sans-serif; font-variant-numeric:tabular-nums; }
.ip-projects__filters { display:flex; justify-content:center; gap:8px; margin:0 auto 40px; }
.ip-projects__filters a { display:inline-flex; align-items:center; justify-content:center; gap:10px; min-height:46px; padding:0 20px; border:1px solid transparent; border-radius:12px; background:var(--ip-color-surface-subtle); color:var(--ip-color-text-muted); text-decoration:none; font:600 14px/20px Manrope,sans-serif; transition:background 180ms,color 180ms,border-color 180ms; }
.ip-projects__filters a:hover { color:var(--ip-color-text); background:var(--ip-color-surface-related); }
.ip-projects__filters a[aria-current] { background:var(--ip-color-surface); color:var(--ip-color-text); border-color:var(--ip-color-border-strong); }
.ip-projects__filters span { color:var(--ip-color-text-muted); font:500 12px/20px Manrope,sans-serif; font-variant-numeric:tabular-nums; }
.ip-projects__grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:32px 28px; }
.ip-project-card { min-width:0; }
.ip-project-card[hidden],.ip-projects [hidden] { display:none!important; }
.ip-project-card__link { display:block; height:100%; border-radius:20px; color:inherit; text-decoration:none; }
.ip-project-card__cover { position:relative; overflow:hidden; aspect-ratio:16/9; border-radius:20px; background:var(--ip-color-surface-related); }
.ip-project-card__cover>img { display:block; width:100%; height:100%; object-fit:cover; transition:transform 220ms ease; }
.ip-project-card__link:hover .ip-project-card__cover>img { transform:scale(1.025); }
.ip-project-card__identity { display:flex; align-items:center; gap:14px; padding:16px 2px 0; }
.ip-project-card__avatar { flex:none; width:48px; height:48px; border-radius:50%; object-fit:contain; background:var(--ip-color-surface); }
.ip-project-card__identity h2 { margin:0; color:var(--ip-color-text); font:600 17px/24px Manrope,sans-serif; letter-spacing:-.015em; }
.ip-project-card__identity p { margin:3px 0 0; color:var(--ip-color-text-muted); font:400 14px/20px Manrope,sans-serif; }
.ip-project-state { position:absolute; top:12px; right:12px; display:flex; align-items:center; gap:7px; padding:6px 10px; border-radius:10px; background:var(--ip-color-surface); color:var(--ip-color-text); font:550 12px/18px Manrope,sans-serif; box-shadow:0 1px 6px rgb(0 0 0 / .08); }
.ip-project-state i { width:7px; height:7px; border-radius:50%; background:var(--ip-color-text-muted); }
.ip-project-state[data-state="active"] i { background:var(--ip-color-success); }
.ip-project-state[data-state="completed"] i { background:var(--ip-color-brand); }
.ip-project-state[data-state="unmet"] i { background:var(--ip-color-danger); }
.ip-project-progress { position:absolute; bottom:0; left:0; width:100%; height:4px; background:var(--ip-color-border); }
.ip-project-progress:after { content:""; display:block; width:var(--project-progress); height:100%; background:var(--ip-color-brand); }
.ip-project-card__placeholder,.ip-project-card__avatar--empty { display:grid; place-items:center; color:var(--ip-color-text-muted); }
.ip-project-card__placeholder { height:100%; }
.ip-project-card__placeholder svg { width:36px; height:36px; }
.ip-project-card__avatar--empty svg { width:22px; height:22px; }
.ip-projects__feedback { margin:24px 0; text-align:center; color:var(--ip-color-text-muted); }
.ip-projects__feedback button { padding:8px 12px; border:0; background:transparent; color:var(--ip-color-link); text-decoration:underline; cursor:pointer; }
.ip-projects a:focus-visible,.ip-projects button:focus-visible { outline:2px solid var(--ip-color-focus); outline-offset:4px; }
@media (prefers-reduced-motion:reduce) { .ip-projects a,.ip-project-card__cover>img { transition:none; } .ip-project-card__link:hover .ip-project-card__cover>img { transform:none; } }

/* Home: the legacy two-card carousel alongside the introduction. */
.ip-home-projects { background:var(--ip-color-page) var(--ip-surface-texture) repeat; }
.ip-home-projects .ip-home-help__layout { align-items:stretch; }
.ip-home-projects .ip-home-help__copy { display:flex; flex-direction:column; align-items:flex-start; }
.ip-home-projects__carousel { position:relative; min-width:0; }
.ip-home-projects__track { display:grid; grid-auto-flow:column; grid-auto-columns:calc((100% - 10px)/2); gap:10px; overflow-x:auto; overscroll-behavior-x:contain; scroll-snap-type:x mandatory; scrollbar-width:none; border-radius:20px; }
.ip-home-projects__track::-webkit-scrollbar { display:none; }
.ip-home-projects .ip-project-card { scroll-snap-align:start; }
.ip-home-projects .ip-project-card__link { overflow:hidden; background:var(--ip-color-surface-related); }
.ip-home-projects .ip-project-card__cover { border-radius:20px 20px 0 0; }
.ip-home-projects .ip-project-card__identity { gap:10px; padding:12px 14px 16px; }
.ip-home-projects .ip-project-card__identity h2 { font-size:18px; line-height:24px; font-weight:500; }
.ip-home-projects .ip-project-card__identity p { font-size:15px; line-height:22px; }
.ip-home-projects .ip-project-state { top:10px; right:10px; padding:5px 8px; border-radius:20px; }
.ip-home-projects__controls { display:flex; align-items:center; gap:18px; margin-top:auto; padding-top:32px; }
.ip-home-projects [hidden] { display:none!important; }
.ip-home-projects__controls .ip-home-category-arrows button:disabled { opacity:.35; cursor:default; }
.ip-home-projects__dots { display:flex; align-items:center; gap:12px; }
.ip-home-projects__dots button { display:grid; place-items:center; width:20px; height:32px; padding:0; border:0; background:transparent; cursor:pointer; }
.ip-home-projects__dots button:after { content:''; width:20px; height:1px; background:var(--ip-color-text); opacity:.2; transition:opacity 180ms ease; }
.ip-home-projects__dots button[aria-current]:after { opacity:1; background:var(--ip-color-text); }
.ip-home-projects a:focus-visible,.ip-home-projects button:focus-visible,.ip-home-projects__track:focus-visible { outline:2px solid var(--ip-color-focus); outline-offset:-3px; }
.ip-home-projects__empty { padding:32px; color:var(--ip-color-text-muted); text-align:center; }
