/*
 * Víkingur 26: campaign pages (page-campaign.php). The hero is the shared
 * photo hero (.vik-xhero, components.css), here also over two photos side
 * by side or a video. This file lays out the intro beside the buy card (the
 * product page's type, name and price, ProductPage in ShopPages.jsx), the
 * page's quote and feature list, the photo gallery and the closing call to
 * action.
 */

/* ── Hero: two photos, or a video, under the scrim ── */
.vik-camp-hero__photos{position:absolute;inset:0;display:grid;grid-template-columns:1fr}
.vik-camp-hero__photos--2{grid-template-columns:1fr 1fr}
.vik-camp-hero__photos img{width:100%;height:100%;object-fit:cover}
.vik-camp-hero__video{pointer-events:none}
@media (prefers-reduced-motion:reduce){.vik-camp-hero__video{display:none}.vik-camp-hero.has-img{background:var(--black)}}

/* ── Intro and buy card ── */
.vik-camp{padding-top:72px}
.vik-camp__grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,420px);gap:64px;align-items:start}
.vik-camp__grid--solo{grid-template-columns:minmax(0,1fr)}
.vik-camp__grid--solo>.vik-camp-buy{position:static;width:100%;max-width:560px;justify-self:center}
.vik-camp__main{display:grid;gap:28px;align-content:start;min-width:0;max-width:720px}
.vik-camp__h{margin:16px 0 0;font-family:var(--font-display);font-weight:900;font-size:clamp(32px,3.4vw,48px);line-height:.92;text-transform:uppercase;text-wrap:balance}
.vik-camp__text{display:grid;gap:16px;font-size:18px;line-height:1.6;color:var(--ink);overflow-wrap:break-word}
.vik-camp__text>*{margin:0}
.vik-camp__main>.vik-camp__text:first-child{font-size:21px;line-height:1.5}
.vik-camp__text a{color:var(--ink)}
.vik-camp__list{display:grid;gap:14px;margin:0;padding:0;list-style:none}
.vik-camp__list li{display:flex;gap:12px;align-items:flex-start;font-size:17px;line-height:1.5;color:var(--text-secondary)}
.vik-camp__list li .vik-icon{flex:none;margin-top:3px;color:var(--vik-astrida)}
.vik-camp__list b,.vik-camp__list strong{color:var(--ink)}
.vik-camp__photo{margin:0;overflow:hidden;border-radius:var(--radius-card);background:var(--gray-100)}
.vik-camp__photo img{display:block;width:100%;height:auto}

/* The quote: big condensed text, the author's photo and signature under it. */
.vik-camp-quote{display:grid;gap:20px;margin:8px 0 0;padding:32px 0 0;border-top:1px solid var(--black)}
.vik-camp-quote__text{margin:0;font-family:var(--font-condensed);font-weight:700;font-size:clamp(22px,2.2vw,28px);line-height:1.3;color:var(--ink)}
.vik-camp-quote__text p{margin:0}
.vik-camp-quote__text p+p{margin-top:14px}
.vik-camp-quote__by{display:flex;align-items:center;gap:14px;font-size:16px;line-height:1.4;color:var(--text-secondary)}
.vik-camp-quote__by b,.vik-camp-quote__by strong{color:var(--ink)}
.vik-camp-quote__img{flex:none;width:56px;height:56px;border-radius:50%;object-fit:cover;background:var(--gray-100)}

.vik-camp-buy{position:sticky;top:100px;display:grid;gap:20px;padding:28px;border:1px solid var(--border-hairline);border-radius:var(--radius-card);background:var(--white);scroll-margin-top:100px}
.vik-camp-buy__title{margin:0;font-family:var(--font-display);font-weight:900;font-size:clamp(28px,2.6vw,36px);line-height:.92;text-transform:uppercase;text-wrap:balance}
.vik-camp-buy__product{display:grid;grid-template-columns:112px minmax(0,1fr);gap:18px;align-items:center;color:inherit;text-decoration:none}
.vik-camp-buy__frame{position:relative;display:block;aspect-ratio:4/5;overflow:hidden;border-radius:var(--radius-md);background:var(--canvas)}
.vik-camp-buy__frame img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform 600ms var(--ease-strike)}
.vik-camp-buy__product:hover .vik-camp-buy__frame img{transform:scale(1.04)}
.vik-camp-buy__shield{position:absolute;left:50%;top:50%;width:40%;height:auto;aspect-ratio:980/1043;transform:translate(-50%,-50%);color:var(--gray-200)}
.vik-camp-buy__info{display:grid;gap:6px;justify-items:start;min-width:0}
.vik-camp-buy__type{font-family:var(--font-condensed);font-weight:700;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-secondary)}
.vik-camp-buy__name{font-family:var(--font-condensed);font-weight:700;font-size:19px;line-height:1.15;text-transform:uppercase}
.vik-camp-buy__product:hover .vik-camp-buy__name{text-decoration:underline;text-underline-offset:3px}
.vik-camp-buy__price{font-family:var(--font-condensed);font-weight:700;font-size:22px}
.vik-camp-buy__price.is-sale{color:var(--vik-astrida)}
.vik-camp-buy__price s{margin-left:4px;font-size:15px;font-weight:400;color:var(--text-secondary)}
.vik-camp-buy .vik-camp__text{font-size:15px;line-height:1.5;color:var(--text-secondary)}
.vik-camp-buy__btn{width:100%;justify-content:center;gap:10px}
.vik-camp-buy__btn.is-disabled{cursor:default;color:var(--text-secondary);border-color:var(--border-strong)}
.vik-camp__notice{display:flex;gap:10px;align-items:flex-start;padding:14px 16px;border:1px solid var(--border-hairline);border-radius:var(--radius-md);background:var(--canvas);font-size:15px;line-height:1.45}
.vik-camp__notice p{margin:0}
.vik-camp__notice .vik-icon{flex:none;margin-top:1px}

/* ── Gallery: the page's photos in a grid, landscape ones two columns wide,
   opening in the lightbox ── */
.vik-camp-gallery{padding-top:88px}
.vik-camp-gallery__grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-flow:dense;gap:8px;margin:0;padding:0;list-style:none}
.vik-camp-gallery__grid li{aspect-ratio:4/5;min-width:0}
.vik-camp-gallery__grid li.is-wide{grid-column:span 2;aspect-ratio:8/5}
.vik-camp-gallery__grid a{display:block;height:100%;overflow:hidden;border-radius:var(--radius-md);background:var(--gray-100)}
.vik-camp-gallery__grid img{display:block;width:100%;height:100%;object-fit:cover;transition:transform 600ms var(--ease-strike)}
.vik-camp-gallery__grid a:hover img{transform:scale(1.03)}
.vik-camp-gallery__grid a:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}
.vik-camp-gallery__credit{margin:16px 0 0;font-size:14px;color:var(--text-secondary)}
.vik-camp-gallery__credit a{color:inherit}

.vik-camp--end{padding-top:88px}

@media (max-width:1000px){
	.vik-camp__grid{grid-template-columns:minmax(0,1fr);gap:40px}
	.vik-camp-buy{position:static}
	.vik-camp-gallery__grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:640px){
	.vik-camp,.vik-camp-gallery,.vik-camp--end{padding-top:48px}
	.vik-camp-hero__photos--2{grid-template-columns:1fr}
	.vik-camp-hero__photos--2 img+img{display:none}
	.vik-camp-buy{padding:20px}
	.vik-camp-buy__product{grid-template-columns:88px minmax(0,1fr)}
	.vik-camp__text{font-size:17px}
	.vik-camp__main>.vik-camp__text:first-child{font-size:19px}
}
