/*
Theme Name: Nils Grapentin Foodstyling
Description: Personal portfolio with three categories: movies, packaging und mixed portfolio.
Version: 1.6.32
Author: Nils Grapentin
Requires at least: 6.6
Requires PHP: 8.0
License: GPL-2.0-or-later
Text Domain: ng-foodstyling
*/
/* The home film has its own controls and plays at the edited musical tempo. */
.home-main{padding:28px var(--gutter) 12px;max-width:2200px;margin:auto}
.home-heading{display:flex;justify-content:space-between;align-items:center;gap:22px;margin:0 0 23px}
.home-heading h1{font-size:clamp(23px,2.4vw,38px);line-height:1.15;letter-spacing:-.025em;margin:0}
.home-reel{position:relative}
.home-reel-stage{position:relative;width:100%;overflow:hidden;background:#080b0c;aspect-ratio:16/9;max-height:calc(100svh - 212px);min-height:260px}
.home-reel-stage video{display:block;width:100%;height:100%;object-fit:cover}
.home-reel-label{position:absolute;top:21px;left:24px;font-size:12px;letter-spacing:.11em;text-transform:uppercase;color:#fff;text-shadow:0 1px 6px #000;pointer-events:none}
.home-reel-controls{position:absolute;top:12px;right:16px;z-index:2;display:flex;justify-content:space-between;align-items:center;gap:20px;padding:0 14px;background:#080b0ca8;border:1px solid #ffffff30;border-radius:2px;color:#fff;backdrop-filter:blur(8px)}
.home-reel-controls[hidden]{display:none}
.home-reel-buttons{display:flex;gap:24px;align-items:center;flex-wrap:wrap}
.home-reel-buttons button{padding:8px 0;min-height:44px;border:0;background:transparent;color:inherit;font-size:14px;font-weight:400}
.home-reel-buttons button:hover{text-decoration:underline;text-underline-offset:5px}
.home-reel-buttons .home-sound{display:flex;align-items:center;gap:9px}
.home-sound::before{content:'';width:6px;height:6px;border:1px solid currentColor;border-radius:50%}
.home-sound[aria-pressed=true]::before{background:currentColor}
.home-reel-time{font-size:12px;letter-spacing:.065em;white-space:nowrap;font-variant-numeric:tabular-nums}
.home-reel-progress{height:1px;background:#25324445;overflow:hidden}
.home-reel-progress span{display:block;height:100%;background:#111;transform:scaleX(0);transform-origin:left}
.home-music-credit{margin-top:9px;max-width:690px;font-size:11px;line-height:1.55;color:#263242}
.home-music-credit summary{cursor:pointer;display:list-item;list-style:disclosure-closed}
.home-music-credit[open] summary{list-style:disclosure-open}
.home-music-credit p{margin:7px 0 0}.home-music-credit a{text-decoration:underline;text-underline-offset:2px}
.home-intro{display:grid;grid-template-columns:1.25fr 1fr;gap:45px;padding:65px 0 55px;align-items:center}
.home-intro h2{margin:0;font-size:clamp(42px,5.4vw,84px);line-height:1.04;letter-spacing:-.05em}
.home-intro-copy p{margin:0 0 25px;font-size:clamp(17px,1.5vw,23px);line-height:1.6}
.home-portfolio-link{display:inline-flex;gap:40px;align-items:center;padding:14px 21px;background:#111923;color:#fff;font-size:16px;font-weight:350}
.home-portfolio-link:hover{background:#222f40}.home-portfolio-link span{font-size:22px;line-height:1}
.home-secondary-links{display:flex;gap:24px;flex-wrap:wrap;margin-top:20px;font-size:14px}
.home-secondary-links a{display:inline-flex;align-items:center;min-height:44px;text-decoration:underline;text-decoration-color:#1115;text-underline-offset:5px}
.home-secondary-links a:hover{text-decoration-color:#111}
.home-reel:fullscreen{padding:20px;background:#080b0c;display:flex;flex-direction:column;justify-content:center;color:#fff}
.home-reel:fullscreen .home-reel-stage{height:calc(100vh - 100px);width:100%;aspect-ratio:auto;max-height:none;min-height:0}
.home-reel:fullscreen .home-reel-stage video{object-fit:contain}
.home-reel:fullscreen .home-reel-controls{top:24px;right:24px}
.home-reel:fullscreen .home-reel-controls button,.home-reel:fullscreen .home-reel-time{color:#fff}
.home-reel:fullscreen .home-reel-progress span{background:#fff}
.home-reel:fullscreen .home-music-credit,.home-reel:fullscreen .home-reel-label{display:none}
@media(max-width:700px){.home-heading{display:block;margin-bottom:18px}.home-heading h1{font-size:30px;margin-bottom:13px}.home-heading .category-links{gap:23px}.home-reel-stage{max-height:none;min-height:0}.home-reel-stage video{object-fit:contain}.home-reel-controls{position:static;background:none;border:0;backdrop-filter:none;padding:8px 0 3px;color:#111;gap:10px}.home-reel-label{top:12px;left:13px;font-size:9px}.home-intro{grid-template-columns:1fr;gap:26px;padding-top:40px;padding-bottom:28px}.home-intro h2{font-size:clamp(44px,10vw,66px)}.home-intro-copy p{font-size:18px}.home-reel-buttons{gap:18px}.home-reel-buttons button{font-size:13px}.home-reel-time{font-size:11px}.home-main{padding-top:20px}.home-music-credit{font-size:11px}}
@media(max-width:380px){.home-reel-controls{flex-wrap:wrap;gap:0}.home-reel-time{margin-left:auto}.home-heading .category-links{gap:16px}}
@font-face{font-family:'Source Sans 3';font-style:normal;font-weight:200 900;font-display:swap;src:url('assets/fonts/source-sans-3.woff2') format('woff2')}
@font-face{font-family:'Source Sans 3';font-style:italic;font-weight:200 900;font-display:swap;src:url('assets/fonts/source-sans-3-italic.woff2') format('woff2')}
:root{--slate:#7689ad;--orange:#ff8f00;--black:#000;--overlay:#252627;--white:#f4f4f4;--muted:#b8b8b8;--gutter:clamp(20px,2.9vw,80px)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--black);color:var(--white);font:300 16px/1.55 'Source Sans 3',Arial,sans-serif}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}a:focus-visible,button:focus-visible{outline:2px solid var(--orange);outline-offset:5px}img,video{max-width:100%;height:auto}figure{margin:0}.screen-reader-text,.skip-link{position:absolute;clip:rect(1px,1px,1px,1px);width:1px;height:1px;overflow:hidden}.skip-link:focus{clip:auto;z-index:10000;left:20px;top:20px;padding:12px 18px;width:auto;height:auto;background:#000;color:#fff}
.site-header{height:100px;background:var(--slate);position:relative;display:flex;justify-content:center;align-items:center}.brand{display:block;width:210px;line-height:0}.brand img{display:block;width:100%;height:auto}.menu-toggle,.menu-close{position:absolute;right:calc(var(--gutter) - 10px);top:50%;transform:translateY(-50%);width:48px;height:48px;background:none;border:0;color:var(--orange);display:grid;place-content:center;gap:5px}.menu-toggle span{display:block;width:23px;height:2px;background:currentColor}.menu-toggle span:last-child{width:16px;justify-self:end}.menu-toggle:hover span:last-child{width:23px}
.portfolio-main{padding:38px var(--gutter) 70px;min-height:calc(100svh - 226px)}.portfolio-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:0 0 27px}.portfolio-heading h1{font-size:15px;font-weight:300;letter-spacing:.055em;text-transform:uppercase;margin:0}.category-links{display:flex;gap:27px;flex-wrap:wrap}.category-links a{color:var(--orange);font-size:14px;line-height:2;letter-spacing:.03em}.category-links a:hover,.category-links a[aria-current=page]{text-decoration:underline;text-underline-offset:7px}
.portfolio-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px;align-items:start;grid-auto-rows:1px}.portfolio-card{position:relative;background:#101010;grid-row-end:span 100;overflow:hidden;min-width:0}.portfolio-card>a{display:block;position:relative}.portfolio-card img{display:block;width:100%;height:auto}.portfolio-card .cover-blank{display:grid;place-content:center;aspect-ratio:4/3;color:#ddd}.card-caption{position:absolute;inset:0;display:flex;align-items:flex-end;justify-content:space-between;gap:12px;padding:26px;background:linear-gradient(transparent 38%,#000b);opacity:0;transition:opacity .2s}.card-caption h2{font-size:18px;font-weight:300;line-height:1.2;margin:0 0 4px;color:var(--orange)}.card-caption p{margin:0;font-size:13px;letter-spacing:.07em}.portfolio-card:hover .card-caption,.portfolio-card:focus-within .card-caption{opacity:1}.film-play{position:absolute;top:18px;right:18px;width:40px;height:40px;display:grid;place-items:center;border:1px solid #ffffff80;border-radius:50%;background:#0006;font-size:14px;color:#fff}.film-play::before{content:'▶';transform:translateX(1px)}.empty-state{min-height:48vh;display:grid;place-content:center;text-align:center}.empty-state p{color:var(--muted)}.empty-state a{color:var(--orange)}.pagination{display:flex;justify-content:center;gap:18px;padding:35px 0 0}.pagination .current{color:var(--orange)}
.site-footer{display:flex;justify-content:space-between;align-items:center;gap:24px;padding:36px var(--gutter);font-size:13px;letter-spacing:.025em;color:var(--orange)}.contact-links{display:flex;gap:22px;flex-wrap:wrap;color:var(--muted)}.contact-links a:first-child{text-transform:uppercase}.site-footer a:hover{text-decoration:underline;text-underline-offset:4px}.footer-navigation,.footer-links{list-style:none;display:flex;gap:22px;flex-wrap:wrap;padding:0;margin:0;text-transform:uppercase}.info-page{background:var(--slate)}.info-page .contact-links{color:#111}.info-page .site-footer{color:#111}.page-main{width:min(1050px,100% - 2*var(--gutter));margin:64px auto 80px;min-height:calc(100svh - 358px)}.page-main h1{font-size:22px;font-weight:300;text-transform:uppercase;letter-spacing:.045em;margin:0 0 34px}.page-content{font-size:17px;line-height:1.7}.page-content h2{font-size:21px;font-weight:300}.page-content a{text-decoration:underline;text-underline-offset:3px}.reference-list{columns:5;column-gap:32px;list-style:none;margin:0;padding:0;font-size:14px;line-height:1.5}.reference-list li{break-inside:avoid;margin-bottom:3px}
.portfolio-menu{position:fixed;inset:0;max-width:none;max-height:none;width:100%;height:100%;margin:0;padding:0;border:0;background:rgba(37,38,39,.985);color:#fff}.portfolio-menu::backdrop{background:rgba(0,0,0,.8)}.menu-header{height:100px;display:flex;justify-content:center;align-items:center;position:relative}.menu-close{font-size:34px;font-weight:200;line-height:1}.menu-items{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:calc(100svh - 200px);gap:18px;padding:40px}.menu-items a{font-size:clamp(22px,3vw,40px);font-weight:300;letter-spacing:.025em;text-transform:lowercase;transition:color .15s}.menu-items a:hover,.menu-items a[aria-current=page]{color:var(--orange)}body.has-dialog{overflow:hidden}.menu-bottom{text-align:center;margin:0 0 30px;font-size:13px;color:#b8b8b8}
.project-main{padding:34px var(--gutter) 64px;min-height:70svh}.project-topline{display:flex;justify-content:space-between;align-items:start;gap:22px;margin-bottom:30px}.project-topline h1{font-size:22px;font-weight:300;margin:0}.project-topline p{margin:3px 0 0;color:var(--orange);font-size:14px}.back-link{font-size:14px;color:var(--muted)}.project-content{width:min(1200px,100%);margin:auto}.project-content>p{max-width:760px;margin:20px auto 30px}.project-content img{display:block;margin:auto}.project-content figure{margin:0 auto 18px}.project-content video{width:100%;max-height:80svh;background:#000}.project-content .wp-block-image a{cursor:zoom-in}.project-content figcaption{color:var(--muted);font-size:14px;text-align:center}.project-content .wp-block-gallery{gap:10px}.project-video{margin:0 auto 30px;display:block;max-height:80svh;width:100%}.lightbox{width:100vw;height:100svh;max-width:none;max-height:none;position:fixed;inset:0;border:0;margin:0;padding:65px 5vw;background:#090909f5;color:#fff}.lightbox::backdrop{background:#000d}.lightbox-stage{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center}.lightbox-stage img,.lightbox-stage video{object-fit:contain;max-width:100%;max-height:calc(100svh - 175px)}.lightbox-stage p{margin:15px 0 0;font-size:14px}.lightbox-close{position:absolute;right:22px;top:12px;font-size:34px;color:var(--orange);background:none;border:0;width:44px;height:44px}.lightbox .project-link{display:inline-block;color:var(--orange);font-size:14px;margin-top:8px}.no-js .portfolio-grid{display:block;columns:3;column-gap:4px}.no-js .portfolio-card{break-inside:avoid;margin-bottom:4px}
@media (hover:none){.card-caption{opacity:1;background:linear-gradient(transparent 60%,#0009);padding:16px}.card-caption h2{font-size:16px}.card-caption p{display:none}}
@media(max-width:900px){.portfolio-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.reference-list{columns:3}.site-footer{align-items:flex-start;flex-direction:column}.portfolio-heading{align-items:flex-start}.no-js .portfolio-grid{columns:2}}
@media(max-width:580px){.site-header,.menu-header{height:88px}.brand{width:180px}.portfolio-main{padding-top:27px}.portfolio-heading{display:block;margin-bottom:23px}.portfolio-heading h1{font-size:14px;margin-bottom:9px}.category-links{gap:25px}.portfolio-grid{grid-template-columns:1fr;gap:5px}.reference-list{columns:2;column-gap:24px}.page-main{margin-top:36px}.site-footer{padding-top:22px}.contact-links{gap:8px;flex-direction:column}.footer-links{gap:16px}.project-topline{flex-direction:column-reverse;gap:14px}.project-topline h1{font-size:21px}.no-js .portfolio-grid{columns:1}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important;animation:none!important}}
.info-page .page-main{color:#111}

/* References remain an ordinary WordPress list; motion is progressive enhancement. */
.credits-page{background:var(--black)}.credits-page .site-footer{color:var(--orange)}.credits-page .contact-links{color:var(--muted)}
.credits-main{padding:34px var(--gutter) 16px;min-height:calc(100svh - 220px)}
.credits-heading h1{font-size:15px;font-weight:300;letter-spacing:.055em;text-transform:uppercase;margin:0 0 18px}
.credits-stage{position:relative;margin:0 auto;width:100%;max-width:1160px}
.credits-roll{width:100%;padding:32px 16px 52px;text-align:center}
.credits-intro{color:var(--orange);font-size:14px;letter-spacing:.16em;text-transform:uppercase;margin:0 0 48px}
.credits-content .reference-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px 44px;columns:auto;font-size:22px;line-height:1.3;font-weight:300;list-style:none;padding:0;margin:0}
.credits-content .reference-list li{margin:0;overflow-wrap:anywhere}
.credits-end{margin:80px 0 0;font-size:24px;line-height:1.25}.credits-end span{display:block;color:var(--orange);font-size:16px}
.credits-controls{display:flex;justify-content:center;align-items:center;gap:12px 30px;flex-wrap:wrap;padding:24px 0 12px}
.credits-controls[hidden]{display:none}.credits-controls button{border:0;background:none;color:var(--orange);padding:8px 3px;font-size:14px;min-height:44px}
.credits-controls button:hover{text-decoration:underline;text-underline-offset:5px}.credits-controls button:disabled{color:var(--muted);opacity:.5;cursor:default;text-decoration:none}
.credits-main.is-rolling .credits-stage{height:clamp(380px,62svh,740px);overflow:hidden;mask-image:linear-gradient(to bottom,transparent,#000 12%,#000 84%,transparent)}
.credits-main.is-rolling .credits-roll{position:absolute;top:0;left:0;will-change:transform}
@media(max-width:900px){.credits-content .reference-list{gap:16px 26px;font-size:20px}}
@media(max-width:580px){.credits-main{padding-top:27px}.credits-roll{padding-left:0;padding-right:0}.credits-content .reference-list{grid-template-columns:1fr;gap:16px;font-size:22px}.credits-main.is-rolling .credits-stage{height:clamp(340px,57svh,600px)}.credits-controls{gap:8px 22px;padding-top:16px}.credits-heading h1{font-size:14px}}
.credits-heading{display:flex;justify-content:space-between;align-items:center;gap:12px 30px;margin-bottom:18px}.credits-heading h1{margin:0}.credits-heading .credits-controls{padding:0}
@media(max-width:580px){.credits-heading{display:block;margin-bottom:12px}.credits-heading .credits-controls{justify-content:flex-start;gap:8px 22px;margin-top:8px}}

.about-page .page-main{max-width:880px;margin-top:90px}.about-page .page-main h1{font-size:15px;letter-spacing:.08em}.about-page .page-content{font-size:clamp(19px,1.8vw,24px);line-height:1.65}.about-page .page-content p{margin:0 0 24px}
@media(max-width:580px){.about-page .page-main{margin-top:46px}}
/* Logos keep their proportions; the underlying editable reference names remain intact. */
.credits-content .reference-list--logos{grid-template-columns:repeat(4,minmax(0,1fr));gap:36px 46px;align-items:center}
.credits-content .reference-list--logos li{height:112px;display:flex;align-items:center;justify-content:center}
.reference-logo img{display:block;width:auto;height:auto;max-width:min(100%,var(--logo-max-width,224px));max-height:84px;object-fit:contain;image-rendering:auto;filter:saturate(1.03) contrast(1.03)}
.reference-filter-defs{position:absolute;pointer-events:none}
.reference-logo img.reference-logo-image--raster{filter:url(#ng-reference-raster-sharpen) saturate(1.03) contrast(1.03)}
.reference-logo img.reference-logo-image--white{filter:brightness(0) invert(1)}
.reference-logo img.reference-logo-image--raster.reference-logo-image--white{filter:url(#ng-reference-raster-sharpen) brightness(0) invert(1)}
.credits-content .reference-list--logos .reference-logo--captioned{flex-direction:column;gap:8px}
.reference-logo--captioned img{max-height:66px;flex-shrink:1;min-height:0}
.reference-logo-caption{display:block;font-size:12px;line-height:1.3;text-align:center;max-width:100%;color:#111}
.credits-content .reference-list--logos .reference-name{font-size:18px;line-height:1.35;padding:12px}
@media(max-width:900px){.credits-content .reference-list--logos{grid-template-columns:repeat(3,minmax(0,1fr));gap:30px}.reference-logo img{max-height:76px}}
@media(max-width:580px){.credits-content .reference-list--logos{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px 26px}.credits-content .reference-list--logos li{height:88px}.reference-logo img{max-height:64px}.credits-content .reference-list--logos .reference-name{font-size:16px;padding:4px}}
@media(max-width:580px){.reference-logo--captioned img{max-height:48px}.reference-logo-caption{font-size:11px}}
/* Small screens, long project titles and comfortable touch targets. */
.page-content,.project-content,.project-topline h1,.page-main h1{overflow-wrap:anywhere}.project-topline>div{min-width:0}.menu-header{position:sticky;top:0;z-index:1;background:var(--overlay)}
.menu-items a{display:inline-flex;align-items:center;min-height:44px;padding:3px 12px}.lightbox-stage img,.lightbox-stage video{min-height:0;flex-shrink:1}.lightbox-stage p{max-width:100%;overflow-wrap:anywhere}
@media(hover:none){.category-links a,.site-footer a{display:inline-flex;align-items:center;min-height:44px}.site-footer{gap:16px}.contact-links{gap:0}.footer-navigation,.footer-links{gap:6px 16px}}
@media(max-height:500px) and (orientation:landscape){.menu-header{height:76px}.menu-items{min-height:calc(100svh - 116px);padding:12px;gap:4px}.menu-items a{font-size:21px}.menu-bottom{margin:10px 0 20px}.lightbox{padding-top:50px;padding-bottom:20px}.lightbox-stage img,.lightbox-stage video{max-height:calc(100svh - 115px)}}

h1,h2,h3,h4,h5,h6{font-weight:300}strong,b{font-weight:400}
@media(min-width:2200px){.portfolio-main{max-width:2200px;margin-left:auto;margin-right:auto}}
/* Preserve the light logo character while keeping phone-sized text readable. */
@media(max-width:580px){body{font-weight:350}.page-content,.project-content{font-size:18px;line-height:1.75;font-weight:350}.about-page .page-content{font-size:19px;line-height:1.7}.page-main h1,.project-topline h1{font-weight:350}.page-main h1{font-size:20px}.about-page .page-main h1{font-size:16px}.credits-content .reference-list{font-weight:350}.category-links a,.back-link,.credits-controls button{font-size:15px}.site-footer{font-size:14px}.page-content h2{font-size:22px}.page-content h3{font-size:20px;line-height:1.5}}

/* The notice is visible before the single click that loads Vimeo. */
.vimeo-notice{margin:0;padding:12px 8px 18px;color:#111;font-size:16px;font-weight:350;line-height:1.45}
.vimeo-notice p{margin:0}.vimeo-notice p+p{margin-top:4px}
.vimeo-notice a{text-decoration:underline;text-underline-offset:3px;display:inline-flex;align-items:center;min-height:44px}
.film-play--vimeo{display:flex;gap:9px;width:auto;min-height:44px;height:auto;padding:8px 12px;border-radius:2px;background:#000b;font-size:16px}
.project-content>.vimeo-notice{max-width:640px;margin:0 auto 28px}
.project-content .film-action{margin-bottom:0}
.vimeo-player{position:relative;width:min(100%,calc((100svh - 255px)*16/9));aspect-ratio:16/9;flex-shrink:0;background:#000}
.vimeo-player iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.vimeo-stop{border:0;background:none;color:var(--orange);min-height:44px;padding:8px 12px;margin-top:4px;font-size:16px}
.project-content .film-action{text-align:center;margin:0 0 24px}.vimeo-play-link{display:inline-flex;align-items:center;min-height:48px;padding:8px 22px;border:1px solid var(--orange);color:var(--orange);font-size:18px}
@media(max-height:500px) and (orientation:landscape){.vimeo-player{width:min(100%,calc((100svh - 195px)*16/9))}}

/* Full-resolution portrait, six centimetres wide and eight centimetres tall. */
.about-portrait{float:right;position:relative;width:6cm;max-width:100%;aspect-ratio:3/4;overflow:hidden;margin:0 0 28px 44px}
.about-portrait img{display:block;position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center}
.about-page .page-main::after{content:'';display:block;clear:both}
@media(max-width:580px){.about-portrait{float:none;margin:0 0 30px}}

/* One blue-grey canvas throughout the portfolio. */
:root{--overlay:#7689ad;--muted:#303946}
body,.credits-page{background:var(--slate);color:#111}
.portfolio-card,.portfolio-card .cover-blank{background:var(--slate);color:#111}
.site-footer,.credits-page .site-footer,.contact-links,.credits-page .contact-links{color:#111}
.category-links a,.empty-state a,.credits-intro,.credits-end span,.credits-controls button,.vimeo-play-link{color:#111}
.category-links a[aria-current=page],.category-links a:hover{ text-decoration-color:var(--orange);text-decoration-thickness:2px }
.portfolio-menu{background:rgba(118,137,173,.99);color:#111}.portfolio-menu::backdrop{background:var(--slate)}
.menu-items a:hover,.menu-items a[aria-current=page]{color:#111;text-decoration:underline;text-decoration-color:var(--orange);text-decoration-thickness:2px;text-underline-offset:8px}.menu-bottom{color:#303946}
.lightbox{background:var(--slate);color:#111}.lightbox::backdrop{background:var(--slate)}
.lightbox .project-link,.vimeo-stop{color:#111;text-decoration:underline;text-decoration-color:var(--orange);text-underline-offset:4px}
.card-caption{color:#fff}.project-content figcaption{color:#303946}
.vimeo-playback-actions{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:6px 22px}.vimeo-direct{display:inline-flex;align-items:center;min-height:44px;font-size:16px;text-decoration:underline;text-decoration-color:var(--orange);text-underline-offset:4px}

/* Moving covers retain the poster's dimensions, so the grid stays still while loading. */
.card-media{position:relative;overflow:hidden}.card-media>img{display:block;width:100%;height:auto}
.card-media img[data-preview-crop]{transform:scale(var(--preview-scale,1));transform-origin:var(--preview-focus-x,50%) var(--preview-focus-y,50%)}
.card-preview{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;pointer-events:none}
.card-preview.is-ready{opacity:1}
.preview-toggle{display:block;background:none;border:0;padding:10px 0;min-height:44px;font:inherit;font-size:14px;color:inherit;text-decoration:underline;text-decoration-color:var(--orange);text-underline-offset:4px;cursor:pointer}
.lightbox.is-film{padding:52px 12px 12px}
.lightbox.is-film .lightbox-stage{gap:6px}
.lightbox.is-film .lightbox-stage>video{width:min(100%,calc((100svh - var(--film-space,122px))*var(--film-ratio,1.777778)));height:auto;max-height:calc(100svh - var(--film-space,122px));object-fit:contain;flex:0 1 auto}
.lightbox.is-film .lightbox-stage>p,.lightbox.is-film .project-link{margin:0;flex-shrink:0}
.lightbox.is-film .vimeo-player{width:min(100%,calc((100svh - 180px)*16/9));max-height:calc(100svh - 180px)}
@media(max-height:500px) and (orientation:landscape){
 .lightbox.is-film{padding:8px 56px 8px 8px;--film-space:74px}
 .lightbox.is-film .lightbox-close{right:6px;top:6px}
 .lightbox.is-film .vimeo-player{width:min(100%,calc((100svh - 118px)*16/9));max-height:calc(100svh - 118px)}
}
.project-credits{max-width:760px;margin:36px auto 0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 32px;font-size:18px;line-height:1.45}
.project-credits>h2,.project-credits>.credits-sources{grid-column:1/-1}.project-credits>h2{font-size:22px;font-weight:300;margin:0 0 6px}.project-credits>p{margin:0}.project-credits .credits-sources{font-size:14px}.credits-sources a{text-decoration:underline;text-underline-offset:3px}
@media(max-width:580px){.project-credits{grid-template-columns:1fr;font-size:17px;gap:16px}}

/* Mixed portfolio: calm, colour-led groups with fixed frames and progressive disclosure. */
.portfolio-mix{display:flex;flex-direction:column;gap:4px}
.mix-group{display:grid;grid-template-columns:var(--mix-tracks);gap:4px;align-items:start}
.mix-group[hidden],.js .mix-group[data-mix-deferred]{display:none}
.mix-column{display:flex;flex-direction:column;gap:4px;min-width:0}
.mix-column .portfolio-card{width:100%;min-width:0}
.portfolio-mix .card-zoom{position:relative;transform-origin:center center}
@media(prefers-reduced-motion:reduce){.portfolio-mix .card-zoom{transform:none!important}}
.mix-pagination{display:flex;flex-direction:column;align-items:center;gap:14px;margin:36px 0 0}
.mix-pagination[hidden],.mix-show-more[hidden]{display:none}
.mix-count{font-size:15px;letter-spacing:.04em;margin:0}
.mix-show-more{font:inherit;font-size:19px;color:inherit;border:1px solid currentColor;background:transparent;padding:10px 32px;cursor:pointer}
.mix-show-more:hover{background:rgba(255,255,255,.12)}
.mix-show-more:focus-visible{outline:2px solid var(--orange);outline-offset:5px}
.mix-more{justify-content:center;margin-top:32px}
@media(max-width:580px){
 .mix-group{display:flex;flex-direction:column;gap:4px}
 .mix-column{display:contents}
 .mix-group .portfolio-card{width:100%;order:var(--mix-sequence)}
 .mix-group .mix-card--quiet{width:86%;align-self:flex-end}
 .mix-group:nth-child(even) .mix-card--quiet{align-self:flex-start}
 .mix-more{gap:12px 24px;justify-content:flex-start}
}

/* Shallow, full-width preview strips show several films in one screen. */
.portfolio-grid.portfolio-grid--movies,.no-js .portfolio-grid.portfolio-grid--movies{display:flex;flex-direction:column;gap:12px;columns:auto}
.portfolio-grid--movies .portfolio-card{width:100%;grid-row-end:auto;margin:0}
.portfolio-grid--movies .card-media{height:clamp(170px,30svh,380px)}
.portfolio-grid--movies .card-media>img{width:100%;height:100%;object-fit:cover;object-position:center}
.portfolio-grid--movies .film-play{width:52px;height:52px}
@media(max-width:580px){.portfolio-grid.portfolio-grid--movies{gap:10px}.portfolio-grid--movies .film-play{width:40px;height:40px}}

/* Portfolio overviews share the homepage's scale, opening frame and closing invitation. */
.portfolio-main--overview{padding:28px var(--gutter) 12px;max-width:2200px;margin:auto}
.portfolio-main--overview .portfolio-heading{align-items:center;gap:22px;margin:0 0 23px}
.portfolio-main--overview .portfolio-heading h1{font-size:clamp(23px,2.4vw,38px);line-height:1.15;letter-spacing:-.025em;text-transform:none;margin:0}
.portfolio-feature .portfolio-card{grid-row-end:auto;margin:0;background:transparent}
.portfolio-feature .card-media{height:clamp(320px,56svh,680px);background:#080b0c}
.portfolio-feature .card-media>img{width:100%;height:100%;object-fit:cover;object-position:50% 50%}
.portfolio-feature--packaging .card-media>img{object-position:50% 0}
.portfolio-feature--packaging .portfolio-feature-label{display:none}
.portfolio-feature-label{position:absolute;top:21px;left:24px;font-size:12px;letter-spacing:.11em;text-transform:uppercase;color:#fff;text-shadow:0 1px 6px #000;pointer-events:none}
.portfolio-feature .card-caption{opacity:1;align-items:flex-end;padding:28px;background:linear-gradient(transparent 55%,#000a)}
.portfolio-feature .card-caption h2{font-size:clamp(24px,2.4vw,36px);line-height:1.15;letter-spacing:-.025em;color:#fff;margin-bottom:8px}
.portfolio-feature .card-caption p{display:block;font-size:14px;letter-spacing:.02em}
.portfolio-feature-arrow{font-size:32px;line-height:1;align-self:flex-end}
.portfolio-feature .film-play{top:16px;right:20px;width:48px;height:48px}
.portfolio-feature .film-play--vimeo{width:auto}
.portfolio-feature a:hover .card-caption p,.portfolio-feature a:focus-visible .card-caption p{text-decoration:underline;text-underline-offset:5px}
.portfolio-tools{display:flex;justify-content:space-between;align-items:center;gap:12px 28px;min-height:76px;padding:12px 0}
.portfolio-tools h2{font-size:14px;font-weight:300;line-height:1.5;letter-spacing:.04em;margin:0}
.portfolio-tools .preview-toggle{margin:0}
.portfolio-intro{border-top:1px solid #11192330;margin-top:55px}
.portfolio-main--overview .portfolio-grid--movies .card-caption{opacity:1;background:linear-gradient(transparent 55%,#000a)}
.portfolio-main--overview .portfolio-grid--movies .card-caption h2{color:#fff;font-size:clamp(19px,1.6vw,25px);letter-spacing:-.01em}
.portfolio-main--overview .portfolio-grid--movies .card-caption p{display:none}
.portfolio-main--overview .mix-show-more{display:inline-flex;align-items:center;min-height:48px;border:0;background:#111923;color:#fff;font-size:16px;padding:12px 28px}
.portfolio-main--overview .mix-show-more:hover{background:#222f40}
.portfolio-main--overview .mix-show-more[hidden]{display:none}
@media(max-width:700px){
 .portfolio-main--overview{padding-top:20px}
 .portfolio-main--overview .portfolio-heading{display:block;margin-bottom:18px}
 .portfolio-main--overview .portfolio-heading h1{font-size:30px;margin-bottom:13px}
 .portfolio-main--overview .portfolio-heading .category-links{gap:23px}
 .portfolio-feature .card-media{height:auto;aspect-ratio:16/9}
 .portfolio-feature .card-caption{padding:16px;background:linear-gradient(transparent 35%,#000b)}
 .portfolio-feature .card-caption h2{font-size:23px;margin-bottom:6px}
 .portfolio-feature .card-caption p{font-size:13px}
 .portfolio-feature-label{top:12px;left:13px;font-size:9px}
 .portfolio-feature .film-play{top:12px;right:12px;width:38px;height:38px}
 .portfolio-feature .film-play--vimeo{width:auto;max-width:55%;font-size:13px}
 .portfolio-feature-arrow{font-size:25px}
 .portfolio-tools{min-height:66px;gap:12px;padding:8px 0}
 .portfolio-intro{margin-top:36px}
}
@media(max-width:380px){.portfolio-main--overview .portfolio-heading .category-links{gap:16px}.portfolio-feature .card-caption h2{font-size:21px}}
