/* Campaigns and archive: full compositions, clear captions, compact browsing. */
.portfolio { background:var(--paper); color:var(--ink); padding:56px var(--pad); scroll-margin-top:84px; }
.portfolio-eyebrow,.campaign-meta,.archive-toolbar,.archive-status,.asset-meta,.cinema-top,.cinema-bottom,.portfolio-footer,.feature-count { font:12px/1.5 Arial,sans-serif; letter-spacing:.025em; text-transform:uppercase; }
.portfolio-eyebrow { display:flex; justify-content:space-between; gap:24px; border-top:1px solid #14141455; padding-top:16px; }
.portfolio-intro { display:grid; grid-template-columns:1fr 320px; align-items:end; gap:32px; margin:28px 0 32px; }
.portfolio-intro h2 { font-size:clamp(40px,5.8vw,80px); line-height:1; }
.portfolio-intro h2 em { font-style:normal; color:#a5231a; }
.portfolio-intro p { font-size:22px; line-height:1.4; }
.portfolio-intro a { display:inline-block; font:12px/1.5 Arial,sans-serif; margin-top:16px; }
.campaign-row { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:24px; }
.campaign-feature { display:flex; flex-direction:column; min-width:0; text-decoration:none; color:inherit; }
.campaign-feature>img { width:100%; height:auto; aspect-ratio:4/3; object-fit:contain; display:block; background:var(--ink); }
.campaign-meta { display:flex; justify-content:space-between; gap:12px; padding:14px 0 10px; color:#555148; }
.campaign-caption { display:flex; justify-content:space-between; align-items:start; gap:12px; }
.campaign-caption h3 { font-size:clamp(23px,2.35vw,34px); line-height:1.1; }
.campaign-caption p { font-size:18px; margin-top:9px; line-height:1.3; }
.play-disc { display:grid; place-items:center; flex:0 0 44px; width:44px; height:44px; border:1px solid #14141466; border-radius:50%; font:14px Arial,sans-serif; transition:background .2s,color .2s; }
.campaign-feature:hover .play-disc { background:var(--ink); color:var(--paper); }
.feature-count { display:flex; justify-content:space-between; gap:20px; padding:22px 0; margin-top:24px; border-bottom:1px solid #14141455; }
.archive { padding-top:44px; scroll-margin-top:84px; }
.archive-heading { display:flex; align-items:end; justify-content:space-between; gap:32px; margin-bottom:24px; }
.archive-heading h3 { font-size:clamp(32px,4vw,54px); }
.archive-heading p { font-size:20px; line-height:1.4; }
.archive-toolbar { display:flex; flex-wrap:wrap; gap:12px 24px; align-items:center; padding:12px 0; border-block:1px solid #14141455; }
.brand-filters { display:flex; gap:4px; flex-wrap:wrap; }
.brand-filters button { padding:10px 12px; min-height:44px; background:transparent; color:inherit; border:1px solid transparent; cursor:pointer; font:inherit; }
.brand-filters button[aria-pressed='true'] { background:var(--ink); color:var(--paper); }
.brand-filters button:hover { border-color:var(--ink); }
.brand-filters small { margin-left:4px; font-size:11px; }
.archive-controls { display:flex; align-items:center; gap:20px; margin-left:auto; }
.archive-controls label { display:flex; align-items:center; gap:8px; }
.archive-controls input,.archive-controls select { background:transparent; border:0; border-bottom:1px solid #14141477; border-radius:0; padding:10px 4px; min-height:44px; font:13px Arial,sans-serif; color:var(--ink); }
.archive-controls input { width:160px; }
.archive-controls select { max-width:150px; }
.archive-controls input::placeholder { color:#555148; }
.archive-status { display:flex; justify-content:space-between; gap:16px; padding:16px 0; color:#555148; }
.asset-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:28px 24px; list-style:none; }
.asset-card[hidden] { display:none; }
.asset-card a { display:block; color:inherit; text-decoration:none; }
.asset-frame { position:relative; aspect-ratio:4/3; background:#1b1b1b; }
.asset-frame img { width:100%; height:100%; position:absolute; inset:0; object-fit:contain; display:block; }
.asset-card[data-type='image'] .asset-frame { background:#e2d9c6; }
.asset-open { position:absolute; right:10px; bottom:10px; width:36px; height:36px; display:grid; place-items:center; background:var(--paper); color:var(--ink); border:1px solid #14141440; border-radius:50%; font:13px Arial,sans-serif; }
.asset-card a:hover .asset-open { background:var(--ink); color:var(--paper); }
.asset-meta { display:flex; justify-content:space-between; gap:8px; margin-top:12px; color:#555148; font-size:11px; }
.asset-title { margin-top:6px; font:500 22px/1.2 Cormorant,Georgia,serif; overflow-wrap:anywhere; }
.archive-empty { padding:32px 0; text-align:center; }
.archive-empty button { font:inherit; background:none; border:0; text-decoration:underline; padding:12px; cursor:pointer; color:inherit; }
.portfolio-footer { display:flex; justify-content:space-between; align-items:center; gap:24px; margin-top:28px; border-top:1px solid #14141455; padding-top:24px; }
.load-assets { background:transparent; color:var(--ink); border:1px solid var(--ink); padding:16px 22px; min-height:48px; font:12px Arial,sans-serif; cursor:pointer; }
.load-assets:hover { background:var(--ink); color:var(--paper); }
.load-assets[hidden],.archive-empty[hidden] { display:none; }
.cinema { position: fixed; inset: 0; width: 100%; height: 100%; max-width: none; max-height: none; border: 0; padding: 0; color: var(--paper); background: #0d0d0df5; }
.cinema::backdrop { background: #000d; }
.cinema[open] { display: flex; flex-direction: column; }
.cinema-top, .cinema-bottom { display: flex; justify-content: space-between; align-items: center; gap: 20px; padding: 18px 28px; flex: 0 0 auto; }
.cinema-top { border-bottom: 1px solid #f4ecda26; }
.cinema-top p { display: flex; gap: 18px; align-items: center; }
.cinema-top b { color: var(--signal); font-weight: 400; }
.cinema button { background: transparent; border: 1px solid #f4ecda66; color: var(--paper); padding: 12px 18px; font: 12px Arial,sans-serif; cursor: pointer; min-height: 44px; }
.cinema button:hover { background: var(--paper); color: var(--ink); }
.cinema-stage { flex: 1 1 auto; min-height: 0; display: flex; align-items: center; justify-content: center; padding: 20px 4vw; position: relative; }
.cinema-stage video, .cinema-stage img { display: block; width: 100%; height: 100%; object-fit: contain; }
.cinema-bottom { border-top: 1px solid #f4ecda26; padding-bottom: max(18px,env(safe-area-inset-bottom)); }
.cinema-bottom h2 { font: 400 clamp(1.2rem, 2.1vw, 2rem)/1.2 Cormorant, Georgia,serif; letter-spacing: 0; text-transform: none; margin-top: 4px; }
.cinema-navigation { display: flex; gap: 10px; flex: 0 0 auto; }
.cinema-message { position: absolute; padding: 16px; background: var(--ink); text-align: center; font-size: 1.1rem; }
.cinema-message[hidden] { display: none; }
body.cinema-open { overflow: hidden; }
body.cinema-open .reticle { visibility: hidden; }

@media(min-width:1600px) { .portfolio { padding-inline:max(var(--pad),calc((100vw - 1440px)/2)); } }
@media(max-width:1050px) { .archive-controls { margin-left:0; } .campaign-row { gap:18px; } .campaign-meta { flex-wrap:wrap; gap:4px 12px; } }
@media(max-width:640px) {
 .portfolio { padding:40px 20px; }
 .portfolio-eyebrow { font-size:11px; gap:16px; }
 .portfolio-eyebrow>span:last-child { max-width:16ch; text-align:right; }
 .portfolio-intro { display:block; margin:24px 0; }
 .portfolio-intro h2 { font-size:48px; }
 .portfolio-intro p { margin-top:18px; font-size:20px; }
 .campaign-row { grid-template-columns:1fr; gap:26px; }
 .campaign-feature>img { aspect-ratio:16/10; }
 .campaign-caption h3 { font-size:26px; }
 .campaign-caption p { font-size:18px; margin-top:6px; }
 .campaign-meta { font-size:11px; padding:12px 0 8px; }
 .feature-count { font-size:11px; align-items:start; }
 .feature-count>span { max-width:45%; }
 .archive { padding-top:32px; }
 .archive-heading { display:block; }
 .archive-heading h3 { font-size:35px; }
 .archive-heading p { font-size:19px; margin-top:12px; }
 .archive-toolbar { gap:12px; }
 .brand-filters { display:grid; grid-template-columns:1fr 1fr; width:100%; gap:4px; }
 .brand-filters button { text-align:left; font-size:12px; padding:10px; }
 .archive-controls { width:100%; gap:12px; justify-content:space-between; flex-wrap:wrap; }
 .archive-controls label { font-size:11px; }
 .archive-controls input { width:140px; }
 .archive-controls select { width:114px; }
 .archive-controls input,.archive-controls select { font-size:16px; }
 .archive-status { font-size:11px; }
 .archive-status>span { max-width:16ch; text-align:right; }
 .asset-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:24px 12px; }
 .asset-meta { flex-wrap:wrap; font-size:11px; gap:4px 8px; }
 .asset-title { font-size:19px; }
 .asset-open { width:32px; height:32px; right:6px; bottom:6px; }
 .portfolio-footer { flex-direction:column; align-items:stretch; gap:20px; text-align:center; font-size:12px; }
 .cinema-top,.cinema-bottom { padding:12px 16px; gap:12px; font-size:11px; }
 .cinema-top p { display:block; }
 .cinema-top b { display:block; }
 .cinema-bottom { flex-wrap:wrap; }
 .cinema-bottom>div:first-child { width:100%; }
 .cinema-navigation { width:100%; justify-content:space-between; }
 .cinema-navigation button { flex:1; }
 .cinema-stage { padding:12px; }
}
.visually-hidden { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; border:0; }
