.ncvp-portfolio{width:100%}
.ncvp-filter{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 34px}
.ncvp-filter button{border:1px solid #ddd;background:transparent;border-radius:999px;padding:8px 14px;font-size:10px;letter-spacing:.14em;text-transform:uppercase;cursor:pointer;transition:.2s ease;color:#333}
.ncvp-filter button:hover,.ncvp-filter button.is-active{border-color:#111;background:#111;color:#fff}
.ncvp-grid{display:grid;grid-template-columns:repeat(var(--ncvp-cols,3),minmax(0,1fr));gap:46px 26px}
.ncvp-card{min-width:0}
.ncvp-card[hidden]{display:none!important}
.ncvp-card__media{display:block;position:relative;overflow:hidden;background:#111;aspect-ratio:16/10;border-radius:18px;isolation:isolate}
.ncvp-grid--editorial .ncvp-card__media{aspect-ratio:16/10}
.ncvp-grid--featured .ncvp-card__media{aspect-ratio:4/5}
.ncvp-card__media .ncvp-media-el{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border:0;transform:scale(1.01);transition:transform .7s ease}
.ncvp-card__poster{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:1;transform:scale(1.01);transition:opacity .22s ease,transform .7s ease}
.ncvp-card__poster.is-hidden{opacity:0;pointer-events:none}
.ncvp-card__media .ncvp-media-playable{z-index:0}
.ncvp-card.is-playing .ncvp-media-playable{z-index:1}
.ncvp-card__media iframe{pointer-events:none}
.ncvp-card__shade{position:absolute;inset:0;background:linear-gradient(180deg,transparent 50%,rgba(0,0,0,.36));z-index:2;transition:.3s ease}
.ncvp-card__play{position:absolute;left:18px;bottom:16px;z-index:3;color:#fff;font-size:9px;letter-spacing:.2em;border:1px solid rgba(255,255,255,.7);border-radius:999px;padding:7px 10px;opacity:0;transform:translateY(5px);transition:.25s ease}
.ncvp-card__media:hover .ncvp-media-el,.ncvp-card__media:hover .ncvp-card__poster{transform:scale(1.04)}
.ncvp-card__media:hover .ncvp-card__shade{background:linear-gradient(180deg,rgba(0,0,0,.04),rgba(0,0,0,.5))}
.ncvp-card__media:hover .ncvp-card__play{opacity:1;transform:none}
.ncvp-media-empty{position:absolute;inset:0;display:grid;place-items:center;background:linear-gradient(135deg,#d8d5d0,#f1efeb);color:#777;font-size:11px;letter-spacing:.25em}
.ncvp-card__body{padding:16px 2px 0}
.ncvp-card__body h3{font-family:Georgia,"Times New Roman",serif;font-size:clamp(24px,2.4vw,36px);font-weight:400;line-height:1.05;letter-spacing:-.025em;margin:0 0 7px}
.ncvp-card__subtitle{margin:0 0 5px;color:#666;font-size:13px;line-height:1.55}
.ncvp-card__meta{margin:0;color:#999;font-size:9px;letter-spacing:.17em;text-transform:uppercase}
.ncvp-empty{padding:30px;border:1px solid #ececec;border-radius:18px;color:#777;text-align:center}

/* Single project */
.ncvp-single{padding:46px 0 90px}
.ncvp-single__container{width:min(1240px,calc(100% - 40px));margin:0 auto}
.ncvp-single__head{padding:34px 0 38px;text-align:center;max-width:900px;margin:0 auto}
.ncvp-single__eyebrow{font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:#8b8b8b;margin-bottom:14px}
.ncvp-single__title{font-family:Georgia,"Times New Roman",serif;font-size:clamp(44px,7vw,96px);line-height:.98;font-weight:400;letter-spacing:-.05em;margin:0}
.ncvp-single__subtitle{font-family:Georgia,"Times New Roman",serif;font-size:clamp(20px,2.3vw,30px);color:#777;margin:18px auto 0;max-width:720px}
.ncvp-single__film{position:relative;aspect-ratio:16/9;background:#111;border-radius:22px;overflow:hidden}
.ncvp-single__film .ncvp-media-el{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border:0}
.ncvp-single__content{width:min(760px,100%);margin:58px auto 0;font-size:17px;line-height:1.85;color:#3f3f3f}
.ncvp-single__nav{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:74px;padding-top:30px;border-top:1px solid #e9e9e9}
.ncvp-single__nav a{font-size:11px;letter-spacing:.15em;text-transform:uppercase}
.ncvp-single__nav .next{text-align:right}
.ncvp-single__back{display:flex;justify-content:center;margin-top:46px}
.ncvp-single__back a{display:inline-flex;border:1px solid #222;border-radius:999px;padding:8px 14px;font-size:9px;letter-spacing:.17em;text-transform:uppercase}

.ncvp-archive-head{padding:68px 0 40px;text-align:center}
.ncvp-archive-title{font-family:Georgia,"Times New Roman",serif;font-size:clamp(46px,7vw,92px);line-height:1;font-weight:400;letter-spacing:-.05em;margin:0 0 14px}
.ncvp-archive-sub{color:#777;margin:0}
.ncvp-archive-body{padding:22px 0 90px;width:min(1180px,calc(100% - 40px));margin:0 auto}

@media(max-width:900px){
 .ncvp-grid{grid-template-columns:1fr!important;gap:34px}
 .ncvp-grid--featured .ncvp-card__media{aspect-ratio:16/10}
 .ncvp-card__play{opacity:1;transform:none}
 .ncvp-single{padding-top:20px}
 .ncvp-single__head{padding-top:20px}
 .ncvp-single__film{border-radius:16px}
 .ncvp-single__content{margin-top:36px}
}

/* v0.2.4 lazy automatic poster fallback */
.ncvp-auto-poster-shell{position:absolute;inset:0;background:#eceae5;overflow:hidden}
.ncvp-auto-poster-shell .ncvp-media-el{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.ncvp-auto-poster-fallback{position:absolute;inset:0;z-index:1;background:linear-gradient(135deg,#e9e6df,#d8d3ca);transition:opacity .25s ease}
.ncvp-auto-poster-fallback.is-hidden{opacity:0;pointer-events:none}
/* v0.2.5 robust automatic MP4 frame previews */
.ncvp-auto-poster-shell{z-index:0}
.ncvp-auto-poster-shell .ncvp-media-playable{z-index:1;display:block;background:#111}
.ncvp-auto-poster-shell .ncvp-auto-poster-fallback{z-index:2}
.ncvp-auto-poster-shell .ncvp-auto-poster-fallback.is-hidden{visibility:hidden}
.ncvp-card:not(.is-playing) .ncvp-auto-poster-shell .ncvp-media-playable{transform:scale(1.01)}

/* v0.2.6: decoded MP4 frame remains visible after hover/play */
.ncvp-card.has-auto-poster .ncvp-auto-poster-fallback{opacity:0!important;visibility:hidden!important;pointer-events:none!important}
.ncvp-card.has-auto-poster .ncvp-auto-poster-shell .ncvp-media-playable{visibility:visible!important;opacity:1!important}
/* 0.2.7: poster MP4 generato in canvas e player realmente scaricato quando inattivo */
.ncvp-auto-poster-shell .ncvp-generated-poster{z-index:2}
.ncvp-auto-poster-shell .ncvp-generated-poster.is-hidden{opacity:0;visibility:hidden;pointer-events:none}
.ncvp-card.has-auto-poster .ncvp-generated-poster{opacity:1;visibility:visible}
.ncvp-card.is-playing .ncvp-generated-poster{opacity:0;visibility:hidden}
.ncvp-card:not(.is-playing) .ncvp-auto-poster-shell .ncvp-media-playable{visibility:hidden;opacity:0}
.ncvp-card.is-playing .ncvp-auto-poster-shell .ncvp-media-playable{visibility:visible;opacity:1}
