.portfolio-filters { display: flex; flex-wrap: wrap; gap: 10px; margin: 0 0 28px; }
.portfolio-filter { font: inherit; font-size: 13px; padding: 10px 16px; min-height: 44px; color: #b5bfce; background: transparent; border: 1px solid #2a3544; cursor: pointer; }
.portfolio-filter[aria-pressed="true"] { color: #fff; border-color: var(--blue); background: #202c3d; }
.portfolio-filter:focus-visible { outline: 3px solid #9bc2ff; outline-offset: 3px; }
.projects .project-status { color: #c7d6ee; font-size: 12px; margin-bottom: 16px; align-self: flex-start; border: 1px solid #2a3544; padding: 5px 9px; }
.portfolio-feedback { color: #b5bfce; margin: 16px 0; }
.projects .project-content { overflow-wrap: anywhere; }
.portfolio-reviews { border-top: 1px solid #2a3544; padding-top: 44px; margin-top: 60px; }
.portfolio-reviews h3 { font-size: clamp(24px, 3vw, 36px); margin-bottom: 24px; }
.portfolio-review-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)); gap: 24px; }
.portfolio-review { padding: 24px; border: 1px solid #2a3544; background: #111820; overflow-wrap: anywhere; }
.portfolio-review h4 { font-size: 20px; }
.portfolio-review p { color: #b5bfce; margin-top: 10px; }
.portfolio-review .review-rating { color: #86b1ff; font-weight: 700; }
.portfolio-review-form { margin-top: 32px; border: 1px solid #2a3544; padding: 24px; }
.portfolio-review-form summary { cursor: pointer; min-height: 44px; font-weight: 600; }
.portfolio-review-form form { display: grid; gap: 20px; max-width: 700px; margin-top: 24px; }
.portfolio-review-form label { display: grid; gap: 8px; font-size: 14px; }
.portfolio-review-form input, .portfolio-review-form select, .portfolio-review-form textarea { width: 100%; min-width: 0; font: inherit; font-size: 16px; padding: 12px; color: #fff; background: #111820; border: 1px solid #526078; border-radius: 0; }
.portfolio-review-form textarea { min-height: 130px; resize: vertical; }
.portfolio-review-form input[type="checkbox"] { width: 22px; height: 22px; }
.portfolio-review-form button { justify-self: start; border: 0; cursor: pointer; }
.portfolio-review-form :focus-visible { outline: 3px solid #9bc2ff; outline-offset: 3px; }
.portfolio-review-form button:disabled { cursor: wait; opacity: .65; }
.projects [hidden] { display: none !important; }

/* The cover is always the initial state; video becomes visible only after playing. */
.projects .has-video-preview[data-preview-local="nova-gym"] { border-radius:14px; }
.projects .has-video-preview[data-preview-local="nova-gym"] .project-image { isolation:isolate; border-radius:14px 14px 0 0; }
.projects .has-video-preview[data-preview-local="nova-gym"] .project-cover, .projects .has-video-preview[data-preview-local="nova-gym"] .preview-video { border-radius:inherit; }
.preview-toggle { position:absolute; left:14px; bottom:14px; z-index:3; display:flex; align-items:center; gap:8px; min-height:44px; padding:0 15px; border:1px solid #779ac655; border-radius:999px; background:#091522e8; color:#edf5ff; font:inherit; font-size:12px; font-weight:600; cursor:pointer; box-shadow:0 4px 16px #0003; }
.preview-toggle > span:first-child { display:flex; }
.preview-toggle:hover { border-color:#9bc2ff; background:#102d50; }
.preview-toggle:focus-visible { outline:3px solid #9bc2ff; outline-offset:3px; }
.preview-toggle[aria-pressed=true] { border-color:#7baaff; }
.preview-muted { position:absolute; right:12px; top:12px; z-index:3; display:flex; align-items:center; gap:5px; padding:6px 8px; border:1px solid #b4d2f82b; border-radius:999px; color:#e6edf7; background:#07111bd9; font-size:10px; font-weight:500; pointer-events:none; }
.preview-muted svg { width:13px; height:13px; }
.preview-live { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
.projects .has-video-preview[data-preview-local="nova-gym"] .project-image::after { content:''; position:absolute; inset:60% 0 0; z-index:2; background:linear-gradient(transparent,#04101f55); pointer-events:none; }
.projects .project-image { position: relative; }
.project-cover { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; opacity: 1; transition: opacity .3s ease; }
.preview-video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; pointer-events: none; border-radius: 0; transition: opacity .3s ease; }
.project-image.is-video-playing .project-cover { opacity: 0; }
.project-image.is-video-playing .preview-video { opacity: 1; }
@media (prefers-reduced-motion: reduce) { .project-cover, .preview-video { transition: none; } }
/* Compact reviews, country selection and motion build on the existing module. */
.projects-grid { transition: opacity .18s ease, transform .18s ease; }
.projects-grid.is-filtering { opacity:0; transform:translateY(4px); }
.portfolio-reviews { padding-top:28px; margin-top:40px; }
.portfolio-reviews h3 { font-size:24px; margin-bottom:18px; }
.portfolio-review-grid { grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; }
.portfolio-review { position:relative; padding:18px; border-radius:0; animation:review-enter .25s ease both; }
.portfolio-review h4 { font-size:17px; padding-right:28px; }
.portfolio-review p { font-size:14px; margin-top:7px; line-height:1.5; }
.portfolio-review .review-comment { color:#d3dbe7; margin-top:14px; white-space:pre-wrap; }
.portfolio-review .review-company, .portfolio-review .review-project, .portfolio-review .review-country, .portfolio-review .review-project-status { font-size:12px; }
@font-face { font-family:'Portfolio Country Flags'; src:url('assets/TwemojiCountryFlags.woff2') format('woff2'); font-display:swap; unicode-range:U+1F1E6-1F1FF; }
.review-country-flag { position:absolute; right:16px; top:16px; font:18px/1 'Portfolio Country Flags','Apple Color Emoji','Segoe UI Emoji','Noto Color Emoji',sans-serif; }
.country-option > span:first-child { font-family:'Portfolio Country Flags','Apple Color Emoji','Segoe UI Emoji','Noto Color Emoji',sans-serif; font-size:18px; }
.review-rating { display:flex; gap:3px; margin-top:12px; }
.review-rating svg { width:18px; height:18px; }
.review-open { margin-top:20px; }
body.review-open { overflow:hidden; }
.portfolio-review-form { width:min(520px,calc(100% - 28px)); max-width:min(520px,calc(100% - 28px)); max-height:calc(100dvh - 32px); margin:auto; padding:22px; color:#fff; background:#111820; border:1px solid #2a3544; border-radius:0; opacity:0; transform:translateY(8px) scale(.98); transition:opacity .25s ease,transform .25s ease; }
.portfolio-review-form.is-open { opacity:1; transform:translateY(0) scale(1); }
.portfolio-review-form::backdrop { background:rgba(0,0,0,0); transition:background .25s ease; }
.portfolio-review-form.is-open::backdrop { background:rgba(0,0,0,.65); }
.portfolio-review-form form { margin:0; gap:10px; grid-template-columns:repeat(2,minmax(0,1fr)); }
.portfolio-review-form form > .review-dialog-heading, .portfolio-review-form form > .review-star-picker, .portfolio-review-form form > label:has(textarea), .portfolio-review-form form > .review-consent, .portfolio-review-form form > .portfolio-feedback, .portfolio-review-form form > button { grid-column:1 / -1; }
.portfolio-review-form label { gap:5px; }
.review-dialog-heading { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.review-dialog-heading h3 { font-size:21px; margin:0; }
.portfolio-review-form .review-close { background:transparent; color:#b5bfce; padding:8px; min-height:44px; }
.portfolio-review-form input, .portfolio-review-form select, .portfolio-review-form textarea { padding:9px 10px; min-height:44px; }
.portfolio-review-form textarea { min-height:80px; height:86px; }
.portfolio-review-form .review-consent { display:grid; grid-template-columns:22px 1fr; align-items:start; gap:10px; font-size:12px; line-height:1.5; }
.review-consent span { grid-column:2; grid-row:1; }
.portfolio-review-form input[type=checkbox] { grid-column:1; grid-row:1; min-height:22px; padding:0; margin-top:2px; }
.portfolio-review-form .portfolio-feedback { font-size:13px; margin:0; }
.portfolio-review-form .portfolio-feedback:empty { display:none; }
.country-picker { position:relative; display:grid; gap:8px; font-size:14px; }
.country-options { position:absolute; top:100%; left:0; right:0; max-height:190px; overflow:auto; overscroll-behavior:contain; background:#111820; border:1px solid #526078; z-index:2; }
.country-options[hidden] { display:none; }
.country-option { display:flex; align-items:center; gap:10px; padding:10px; min-height:44px; cursor:pointer; }
.country-option:hover, .country-option[aria-selected=true] { background:#202c3d; }
.country-options p { padding:10px; }
.review-star-picker { border:0; padding:0; margin:0; display:flex; gap:2px; }
.review-star-picker legend { font-size:14px; margin-bottom:4px; }
.review-star-picker label { position:relative; display:grid; place-items:center; width:44px; height:44px; cursor:pointer; color:#86b1ff; }
.portfolio-review-form .review-star-picker input { position:absolute; opacity:0; width:100%; height:100%; margin:0; padding:0; cursor:pointer; }
.review-star-picker svg { width:24px; height:24px; }
.review-star-picker label:has(input:focus-visible) { outline:2px solid #9bc2ff; outline-offset:1px; }
@keyframes review-enter { from { opacity:0; transform:translateY(4px); } to { opacity:1; transform:none; } }
@media(max-width:1000px) { .portfolio-review-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:720px) { .portfolio-review-grid { grid-template-columns:1fr; } .portfolio-review-form { padding:16px; } }
@media(max-width:520px) { .portfolio-review-form form { grid-template-columns:1fr; } }
@media(prefers-reduced-motion:reduce) { .projects-grid, .portfolio-review-form, .portfolio-review-form::backdrop { transition:none; } .portfolio-review { animation:none; } .projects-grid.is-filtering { transform:none; } }

/* Commercial portfolio proposal: scope stays inside the project section. */
#proyectos .projects-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:28px;}
#proyectos .project-card{border-radius:16px;overflow:hidden;border-color:#263445;}
#proyectos .project-image{height:auto;aspect-ratio:16/10;border-radius:16px 16px 0 0;}
#proyectos .project-cover,#proyectos .preview-video{border-radius:inherit;}
#proyectos .project-content{padding:26px;gap:0;}
#proyectos .project-content h3{font-size:30px;letter-spacing:-.6px;margin-bottom:12px;}
#proyectos .project-content>p{font-size:15px;line-height:1.65;margin-bottom:22px;max-width:48ch;}
#proyectos .project-category{color:#9ec1ff;letter-spacing:1.8px;}
#proyectos .project-status{order:0;border-radius:999px;padding:5px 11px;margin-bottom:16px;}
#proyectos .is-in-progress .project-status{color:#f7cc85;border-color:#8b673a;background:#6d482d22;}
#proyectos .project-version-summary{font-size:12px;color:#9ba9bd;margin-top:auto;margin-bottom:16px;}
#proyectos .project-demo-versions{display:flex;flex-wrap:wrap;gap:12px;margin:0 0 20px;}
#proyectos .project-demo-version{display:grid;gap:8px;flex:1 1 100px;}
#proyectos .project-demo-version strong{font-size:13px;color:#d3dff1;}
#proyectos .project-demo-version .button{min-height:44px;border-radius:9px;text-align:center;padding-inline:12px;}
#proyectos .project-buttons{margin-top:auto;}
#proyectos .project-buttons .button{border-radius:9px;min-height:44px;}
#proyectos .portfolio-filter{border-radius:999px;}
#proyectos .portfolio-commercial-cta{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-top:40px;padding:26px;border:1px solid #263445;border-radius:16px;background:#111a27;}
#proyectos .portfolio-commercial-cta p{font-size:21px;font-weight:600;color:#eef4ff;}
#proyectos .portfolio-commercial-cta .button{border-radius:9px;white-space:nowrap;}
@media(max-width:720px){#proyectos .projects-grid{grid-template-columns:1fr;gap:24px;}#proyectos .project-content{padding:22px;}#proyectos .project-content h3{font-size:27px;}#proyectos .portfolio-commercial-cta{align-items:stretch;flex-direction:column;}#proyectos .portfolio-commercial-cta .button{white-space:normal;text-align:center;}}
