/* BUILT FILE: frontend.css with its palette swapped for the Bright Marquee one, by photo-contest-tests/build-marquee.php.
   Do not edit: change frontend.css and rebuild. */
/* CWU Photo Contest — public styles. Every selector is scoped .cwu-pc-. */

.cwu-pc-page {
	--cwu-pc-accent: #d63c32;
	--cwu-pc-accent-dark: #a52a22;
	--cwu-pc-ink: #2b2320;
	--cwu-pc-paper: #ffffff;
	font-family: Fredoka, system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
	color: var(--cwu-pc-ink);
	max-width: 1200px;
	margin: 0 auto;
	padding: 26px 16px 64px;
	box-sizing: border-box;
}

.cwu-pc-page *,
.cwu-pc-page *::before,
.cwu-pc-page *::after {
	box-sizing: inherit;
}

/* Hero */
.cwu-pc-hero {
	text-align: center;
	padding: 6px 0 26px;
}

.cwu-pc-title {
	font-size: clamp(28px, 5vw, 44px);
	font-weight: 700;
	line-height: 1.15;
	margin: 0 0 10px;
	color: var(--cwu-pc-ink);
}

.cwu-pc-status {
	font-size: 17px;
	margin: 0 0 18px;
	opacity: 0.85;
}

.cwu-pc-actions {
	display: flex;
	gap: 12px;
	justify-content: center;
	flex-wrap: wrap;
}

/* Pill buttons */
.cwu-pc-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	background: var(--cwu-pc-accent, #d63c32);
	color: #ffffff;
	border: 2px solid var(--cwu-pc-accent, #d63c32);
	border-radius: 999px;
	padding: 12px 26px;
	font-family: inherit;
	font-size: 15px;
	font-weight: 700;
	line-height: 1;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	text-decoration: none;
	cursor: pointer;
	transition: background 0.15s ease, color 0.15s ease, transform 0.15s ease, box-shadow 0.15s ease;
}

.cwu-pc-btn:hover {
	background: var(--cwu-pc-accent-dark, #a52a22);
	border-color: var(--cwu-pc-accent-dark, #a52a22);
	color: #ffffff;
	transform: translateY(-1px);
	box-shadow: 0 6px 16px rgba(28, 28, 28, 0.18);
	text-decoration: none;
}

.cwu-pc-btn:focus-visible {
	outline: 3px solid rgba(214,60,50, 0.4);
	outline-offset: 2px;
}

.cwu-pc-btn-ghost {
	background: transparent;
	color: var(--cwu-pc-accent, #d63c32);
}

.cwu-pc-btn-ghost:hover {
	background: var(--cwu-pc-accent, #d63c32);
	border-color: var(--cwu-pc-accent, #d63c32);
	color: #ffffff;
}

/* Grid */
.cwu-pc-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
	gap: 18px;
	/* Cards keep their own height instead of stretching to the tallest in the
	   row — required now that cards are as tall as their photo. */
	align-items: start;
}

/* Masonry — the staff console's "Full" view, for visitors.
 * Aleksey 2026-09-08: "The staff view is called Full and thats is how I want
 * the visitors to see the images."
 *
 * Only active once frontend.js has assigned a span to every card (it adds
 * .is-masonry). With JS off the plain grid above still stands — whole photos,
 * true shapes, merely ragged rows. Nothing in either path can crop a photo.
 *
 * row-gap is 0 on purpose: the gap is folded into each card's span instead.
 * A card spans ceil((its own height + gap) / 2px), so the slack left inside
 * its span box IS the gap. The 2px unit keeps the rounding under a pixel —
 * measured on the live 2025 Minneapolis album, an 8px unit (what the staff
 * console uses) rendered the same 18px gap as 24px.
 *
 * align-items stays "start" from the rule above, so a card is exactly as tall
 * as its own photo rather than stretching to fill the rows it reserved. That is
 * what keeps photos whole, and it is also why a span must never go stale: a card
 * is free to grow past the rows it reserved and overlap the one below, so every
 * change of column width has to rewrite the spans (see masonryRelayout). */
@media screen {
	.cwu-pc-grid.is-masonry {
		grid-auto-rows: 2px;
		row-gap: 0;
	}
}

/* Print re-flows to the paper's page box — around 744px for US Letter, where
 * auto-fill drops from four columns to two and each column gets much wider.
 * Photos grow with it, but no resize event fires for print, so the spans stay
 * at their screen values and every card overflows into the one below: measured
 * at 22 of 22 in-column boundaries overlapping, worst case 84px.
 *
 * Scoping the block above to `screen` keeps grid-auto-rows and the row gap at
 * their base values on paper; this clears the inline spans, which need
 * !important because an inline style outranks any plain author rule. Printed
 * albums fall back to the ordinary grid — ragged rows, whole photos — which is
 * the right trade on paper anyway. */
@media print {
	.cwu-pc-grid.is-masonry > .cwu-pc-card {
		grid-row-end: auto !important;
	}
}

.cwu-pc-card {
	background: var(--cwu-pc-paper, #ffffff);
	border-radius: 14px;
	overflow: hidden;
	box-shadow: 0 2px 10px rgba(28, 28, 28, 0.1);
	transition: transform 0.18s ease, box-shadow 0.18s ease;
}

.cwu-pc-card:hover {
	transform: translateY(-4px);
	box-shadow: 0 10px 24px rgba(28, 28, 28, 0.16);
}

.cwu-pc-card-link {
	display: block;
	line-height: 0;
}

.cwu-pc-card-img {
	display: block;
	width: 100%;
	/* Whole photo, real shape (Aleksey 2026-09-08: the square crop was cutting
	   people out of group shots — the thing visitors come to see).
	 *
	 * No aspect-ratio here on purpose. The <img> already carries per-photo
	 * width/height attributes (480x320 landscape, 480x720 portrait — see
	 * render_cards), so the browser computes the intrinsic ratio and reserves
	 * the right box before the image loads. Declaring a ratio in CSS would
	 * OVERRIDE those attributes and reintroduce the crop. Nothing here relies
	 * on re-rendering: thumbnails were always stored proportionally
	 * (resizeImage(THUMB_W, 0)); only this stylesheet was squaring them. */
	height: auto;
}

.cwu-pc-card-pending {
	display: flex;
	width: 100%;
	aspect-ratio: 1 / 1;
	align-items: center;
	justify-content: center;
	background: #f2ede9;
	color: #8a837e;
	font-size: 14px;
	line-height: 1.4;
}

.cwu-pc-card-bar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 8px;
	padding: 8px 10px 10px;
}

.cwu-pc-card-by {
	font-size: 13px;
	font-weight: 600;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
	min-width: 0;
}

.cwu-pc-card-btns {
	display: flex;
	align-items: center;
	gap: 6px;
	margin-left: auto;
	flex-shrink: 0;
}

/* Icon buttons + hearts */
.cwu-pc-icon-btn,
.cwu-pc-heart {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 36px;
	height: 36px;
	padding: 0;
	background: var(--cwu-pc-paper, #ffffff);
	color: var(--cwu-pc-accent, #d63c32);
	border: 1px solid rgba(28, 28, 28, 0.15);
	border-radius: 999px;
	cursor: pointer;
	transition: background 0.15s ease, color 0.15s ease;
}

.cwu-pc-icon-btn:hover {
	background: var(--cwu-pc-accent, #d63c32);
	color: #ffffff;
	border-color: var(--cwu-pc-accent, #d63c32);
}

.cwu-pc-heart[disabled] {
	opacity: 0.4;
	cursor: not-allowed;
}

.cwu-pc-ic {
	display: block;
}

/* Copied flash */
.cwu-pc-share {
	position: relative;
}

.cwu-pc-copied {
	position: absolute;
	bottom: calc(100% + 8px);
	left: 50%;
	transform: translateX(-50%);
	background: var(--cwu-pc-ink, #2b2320);
	color: #ffffff;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.02em;
	text-transform: none;
	padding: 5px 12px;
	border-radius: 6px;
	white-space: nowrap;
	pointer-events: none;
	z-index: 20;
	animation: cwu-pc-fade 1.6s ease forwards;
}

@keyframes cwu-pc-fade {
	0% { opacity: 0; transform: translateX(-50%) translateY(4px); }
	12% { opacity: 1; transform: translateX(-50%) translateY(0); }
	75% { opacity: 1; }
	100% { opacity: 0; }
}

/* Load more / empty */
.cwu-pc-more-wrap {
	text-align: center;
	margin: 28px 0 8px;
}

.cwu-pc-load-more[disabled] {
	opacity: 0.6;
	cursor: wait;
}

.cwu-pc-empty {
	text-align: center;
	font-size: 17px;
	opacity: 0.8;
	margin: 40px 0;
}

.cwu-pc-submit-section {
	margin-top: 48px;
	scroll-margin-top: 90px;
}

/* Photo page */
.cwu-pc-breadcrumb {
	margin: 0 0 14px;
	font-size: 15px;
}

.cwu-pc-breadcrumb a {
	color: var(--cwu-pc-accent, #d63c32);
	font-weight: 600;
	text-decoration: none;
}

.cwu-pc-breadcrumb a:hover {
	text-decoration: underline;
}

.cwu-pc-photo-frame {
	margin: 0 0 14px;
	text-align: center;
}

.cwu-pc-photo-img {
	max-width: 100%;
	max-height: 78vh;
	width: auto;
	height: auto;
	border-radius: 14px;
	box-shadow: 0 4px 18px rgba(28, 28, 28, 0.18);
}

.cwu-pc-photo-meta {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 12px;
	margin: 0 0 6px;
}

.cwu-pc-photo-by {
	margin: 0;
	font-size: 17px;
	font-weight: 600;
}

.cwu-pc-share-row {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	justify-content: center;
	margin: 16px 0 26px;
}

/* v0.47.1: under the photo, as three tap-sized buttons. */
.cwu-pc-pn {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	max-width: 560px;
	margin: 14px auto 6px;
}

.cwu-pc-pn-link {
	flex: 1 1 0;
	text-align: center;
	padding: 11px 14px;
	border: 1px solid rgba(28, 28, 28, 0.18);
	border-radius: 999px;
	background: #fff;
	color: var(--cwu-pc-ink, #2b2320);
	font-weight: 700;
	font-size: 15px;
	text-decoration: none;
	white-space: nowrap;
}

.cwu-pc-pn-link:hover {
	color: var(--cwu-pc-accent, #d63c32);
}

.cwu-pc-pn-all {
	color: var(--cwu-pc-accent, #d63c32);
}

.cwu-pc-pn-gap {
	flex: 1 1 0;
}

/* Mobile — comfortable at 375px */
@media (max-width: 640px) {
	.cwu-pc-page {
		padding: 20px 12px 56px;
	}

	.cwu-pc-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 10px;
	}

	.cwu-pc-btn {
		padding: 11px 20px;
		font-size: 14px;
	}

	.cwu-pc-card-bar {
		padding: 6px 8px 8px;
	}

	.cwu-pc-card-by {
		font-size: 12px;
	}

	.cwu-pc-icon-btn,
	.cwu-pc-heart {
		width: 32px;
		height: 32px;
	}

	.cwu-pc-status {
		font-size: 15px;
	}

	.cwu-pc-photo-img {
		max-height: 66vh;
	}
}

@media (prefers-reduced-motion: reduce) {
	.cwu-pc-btn,
	.cwu-pc-card,
	.cwu-pc-icon-btn {
		transition: none;
	}

	.cwu-pc-card:hover,
	.cwu-pc-btn:hover {
		transform: none;
	}
}

/* ---- Albums: hub page, year chips, breadcrumb (v0.1.0 albums) ---- */
.cwu-pc-crumb{margin:0 0 10px;font-size:14px}
.cwu-pc-crumb a{color:#8a8a8a;text-decoration:none}
.cwu-pc-crumb a:hover{color:#d63c32}
.cwu-pc-title-year{color:#d63c32}
.cwu-pc-years{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:14px 0 0;font-size:14px;color:#8a8a8a}
.cwu-pc-year-chip{display:inline-block;padding:4px 14px;border:1.5px solid #e7e1db;border-radius:999px;color:#5e544e;text-decoration:none;font-weight:600;transition:border-color .18s ease,color .18s ease}
.cwu-pc-year-chip:hover{border-color:#d63c32;color:#d63c32}
.cwu-pc-year-chip.is-current{background:#d63c32;border-color:#d63c32;color:#fff}
.cwu-pc-hub-city{margin:0 0 34px}
.cwu-pc-hub-city > h2{font-family:"Fredoka One",Fredoka,system-ui,sans-serif;font-weight:500;font-size:clamp(22px,3.4vw,28px);text-transform:uppercase;color:#2b2320;margin:0 0 14px;padding-bottom:10px;position:relative}
.cwu-pc-hub-city > h2::after{content:"";position:absolute;left:0;bottom:0;width:44px;height:4px;border-radius:99px;background:#d63c32}
.cwu-pc-albums{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}
.cwu-pc-album a{display:flex;flex-direction:column;gap:4px;background:#fff;border:1px solid #e7e1db;border-radius:14px;padding:16px 18px;text-decoration:none;box-shadow:0 1px 3px rgba(20,31,33,.05);transition:border-color .18s ease,box-shadow .18s ease}
.cwu-pc-album a:hover{border-color:#ddd6d2;box-shadow:0 4px 16px rgba(20,31,33,.08)}
.cwu-pc-album-name{font-weight:600;color:#2b2320;font-size:16px}
.cwu-pc-album-year{color:#d63c32;font-weight:700;font-size:14px}
.cwu-pc-album-count{color:#8a8a8a;font-size:13px}
@media (max-width:480px){.cwu-pc-albums{grid-template-columns:1fr 1fr}}

/* ==== Phase 2 (v0.2.0): accounts, auth panel, live hearts, album picker ==== */

/* The [hidden] attribute is the show/hide mechanism for all Phase 2 UI —
   make it win over any display rule, ours or the theme's. */
.cwu-pc-page [hidden],
.cwu-pc-auth[hidden],
.cwu-pc-auth [hidden],
.cwu-pc-authbox [hidden] {
	display: none !important;
}

html.cwu-pc-auth-lock {
	overflow: hidden;
}

/* -- Hero auth corner -- */
.cwu-pc-hero {
	position: relative;
}

.cwu-pc-authbox {
	position: absolute;
	top: 0;
	right: 0;
	display: flex;
	align-items: center;
	gap: 8px;
	font-size: 14px;
	color: var(--cwu-pc-ink, #2b2320);
	z-index: 5;
}

.cwu-pc-authbox-btn {
	display: inline-flex;
	align-items: center;
	background: transparent;
	color: var(--cwu-pc-accent, #d63c32);
	border: 1.5px solid var(--cwu-pc-accent, #d63c32);
	border-radius: 999px;
	padding: 7px 16px;
	font-family: inherit;
	font-size: 13px;
	font-weight: 700;
	line-height: 1;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	cursor: pointer;
	transition: background 0.15s ease, color 0.15s ease;
}

.cwu-pc-authbox-btn:hover {
	background: var(--cwu-pc-accent, #d63c32);
	color: #ffffff;
}

.cwu-pc-authbox-in {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	background: #faf6f3;
	border: 1px solid #eee5df;
	border-radius: 999px;
	padding: 7px 14px;
	white-space: nowrap;
}

.cwu-pc-authbox .cwu-pc-first {
	font-weight: 700;
}

.cwu-pc-authbox-sep {
	color: #b5aeaa;
}

.cwu-pc-linklike {
	background: none;
	border: 0;
	padding: 0;
	margin: 0;
	color: var(--cwu-pc-accent, #d63c32);
	font-family: inherit;
	font-size: inherit;
	font-weight: 600;
	text-decoration: underline;
	cursor: pointer;
}

.cwu-pc-linklike:hover {
	color: var(--cwu-pc-accent-dark, #a52a22);
}

.cwu-pc-linklike:disabled {
	color: #b5aeaa;
	cursor: default;
	text-decoration: none;
}

/* -- Auth panel (fixed overlay + card) -- */
.cwu-pc-auth {
	position: fixed;
	top: 0;
	right: 0;
	bottom: 0;
	left: 0;
	z-index: 100000;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 16px;
	background: rgba(28, 28, 28, 0.55);
	font-family: Fredoka, system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
	color: #2b2320;
}

.cwu-pc-auth-card {
	position: relative;
	width: 100%;
	max-width: 420px;
	max-height: calc(100vh - 32px);
	max-height: calc(100dvh - 32px);
	overflow: auto;
	background: #ffffff;
	border-radius: 18px;
	box-shadow: 0 18px 50px rgba(0, 0, 0, 0.28);
	padding: 26px 22px 24px;
	box-sizing: border-box;
}

.cwu-pc-auth-card *,
.cwu-pc-auth-card *::before,
.cwu-pc-auth-card *::after {
	box-sizing: inherit;
}

.cwu-pc-auth-close {
	position: absolute;
	top: 10px;
	right: 10px;
	width: 34px;
	height: 34px;
	padding: 0;
	border: 0;
	border-radius: 999px;
	background: transparent;
	color: #8a8a8a;
	font-size: 26px;
	line-height: 1;
	cursor: pointer;
}

.cwu-pc-auth-close:hover {
	background: #f2ede9;
	color: #2b2320;
}

.cwu-pc-auth-title {
	font-size: 22px;
	font-weight: 700;
	line-height: 1.2;
	margin: 0 0 14px;
	padding-right: 34px;
}

.cwu-pc-auth-msg {
	margin: 0 0 14px;
	padding: 10px 13px;
	border-radius: 10px;
	background: #f2f7f2;
	color: #2c5e2e;
	font-size: 14px;
	line-height: 1.45;
}

.cwu-pc-auth-msg.is-error {
	background: #fdecea;
	color: #b3261e;
}

.cwu-pc-auth-2col {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 10px;
}

.cwu-pc-auth-field {
	margin: 0 0 12px;
}

.cwu-pc-auth-field label {
	display: block;
	font-size: 13px;
	font-weight: 600;
	margin: 0 0 5px;
	color: #5e544e;
}

.cwu-pc-auth-field input {
	width: 100%;
	padding: 11px 13px;
	font-family: inherit;
	font-size: 16px; /* ≥16px so iOS doesn't zoom the field */
	line-height: 1.3;
	color: #2b2320;
	background: #ffffff;
	border: 1.5px solid #ddd6d2;
	border-radius: 10px;
	outline: none;
	transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

.cwu-pc-auth-field input:focus {
	border-color: var(--cwu-pc-accent, #d63c32);
	box-shadow: 0 0 0 3px rgba(214,60,50, 0.15);
}

.cwu-pc-auth-codein {
	text-align: center;
	letter-spacing: 0.35em;
	font-size: 22px !important;
	font-weight: 700;
}

.cwu-pc-auth-consent {
	display: flex;
	align-items: flex-start;
	gap: 9px;
	margin: 2px 0 14px;
	font-size: 12.5px;
	line-height: 1.45;
	color: #5a5450;
	cursor: pointer;
}

.cwu-pc-auth-consent input {
	flex-shrink: 0;
	width: 17px;
	height: 17px;
	margin: 2px 0 0;
	accent-color: var(--cwu-pc-accent, #d63c32);
	cursor: pointer;
}

.cwu-pc-auth-actions {
	margin: 0 0 10px;
}

.cwu-pc-auth-actions .cwu-pc-btn {
	width: 100%;
}

.cwu-pc-auth-step[data-busy] .cwu-pc-btn {
	opacity: 0.6;
	cursor: wait;
}

.cwu-pc-auth-switch {
	margin: 6px 0 0;
	text-align: center;
	font-size: 13.5px;
	color: #6b6560;
}

/* -- Submit gate -- */
.cwu-pc-auth-gate {
	text-align: center;
	background: #faf6f3;
	border: 1.5px dashed #e5d9d2;
	border-radius: 14px;
	padding: 26px 18px;
}

.cwu-pc-auth-gate p {
	margin: 0 0 14px;
	font-size: 15.5px;
}

/* -- Live hearts -- */
.cwu-pc-heart[data-photo] {
	width: auto;
	min-width: 36px;
	padding: 0 9px;
	gap: 5px;
	cursor: pointer;
}

.cwu-pc-heart[data-photo]:hover {
	background: #fdf1f0;
	border-color: var(--cwu-pc-accent, #d63c32);
	color: var(--cwu-pc-accent-dark, #a52a22);
}

.cwu-pc-heart[data-photo]:focus-visible {
	outline: 3px solid rgba(214,60,50, 0.4);
	outline-offset: 2px;
}

.cwu-pc-heart.is-voted {
	background: var(--cwu-pc-accent, #d63c32);
	border-color: var(--cwu-pc-accent, #d63c32);
	color: #ffffff;
}

.cwu-pc-heart.is-voted:hover {
	background: var(--cwu-pc-accent-dark, #a52a22);
	border-color: var(--cwu-pc-accent-dark, #a52a22);
	color: #ffffff;
}

.cwu-pc-heart[data-busy] {
	opacity: 0.6;
	cursor: wait;
}

.cwu-pc-heart-n {
	font-size: 13px;
	font-weight: 700;
	line-height: 1;
}

.cwu-pc-heart-n:empty {
	display: none;
}

.cwu-pc-heart.is-voted .cwu-pc-ic {
	animation: cwu-pc-pop 0.3s ease;
}

@keyframes cwu-pc-pop {
	0% { transform: scale(1); }
	45% { transform: scale(1.3); }
	100% { transform: scale(1); }
}

.cwu-pc-photo-meta .cwu-pc-heart[data-photo] {
	height: 42px;
	min-width: 42px;
	padding: 0 13px;
}

.cwu-pc-photo-meta .cwu-pc-heart-n {
	font-size: 15px;
}

/* -- Album picker (combobox) -- */
.cwu-pc-album-wrap {
	position: relative;
}

.cwu-pc-album-search {
	width: 100%;
	padding: 11px 13px;
	font-family: inherit;
	font-size: 16px;
	line-height: 1.3;
	color: #2b2320;
	background: #ffffff;
	border: 1.5px solid #ddd6d2;
	border-radius: 10px;
	outline: none;
	transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

.cwu-pc-album-search:focus {
	border-color: var(--cwu-pc-accent, #d63c32);
	box-shadow: 0 0 0 3px rgba(214,60,50, 0.15);
}

.cwu-pc-album-list {
	display: none;
	position: absolute;
	left: 0;
	right: 0;
	top: 100%;
	margin: 4px 0 0;
	padding: 6px;
	list-style: none;
	background: #ffffff;
	border: 1.5px solid #e2dcd8;
	border-radius: 12px;
	box-shadow: 0 12px 30px rgba(28, 28, 28, 0.14);
	max-height: 240px;
	overflow: auto;
	z-index: 60;
}

.cwu-pc-album-list.is-open {
	display: block;
}

.cwu-pc-album-list li {
	padding: 9px 12px;
	border-radius: 8px;
	font-size: 14.5px;
	line-height: 1.35;
	cursor: pointer;
}

.cwu-pc-album-list li:hover,
.cwu-pc-album-list li.is-active {
	background: #fdf1f0;
	color: var(--cwu-pc-accent-dark, #a52a22);
}

.cwu-pc-album-list li[aria-selected="true"] {
	font-weight: 700;
	color: var(--cwu-pc-accent, #d63c32);
}

.cwu-pc-album-list li[hidden] {
	display: none !important;
}

/* -- Phase 2 mobile (comfortable at 375px) -- */
@media (max-width: 767px) {
	.cwu-pc-authbox {
		position: static;
		justify-content: center;
		margin: 0 0 12px;
	}
}

@media (max-width: 640px) {
	.cwu-pc-auth {
		padding: 12px;
	}

	.cwu-pc-auth-card {
		max-width: 100%;
		padding: 22px 16px 18px;
	}

	.cwu-pc-auth-title {
		font-size: 20px;
	}

	.cwu-pc-heart[data-photo] {
		min-width: 32px;
		padding: 0 7px;
	}

	.cwu-pc-heart-n {
		font-size: 12px;
	}

	.cwu-pc-album-list {
		max-height: 200px;
	}
}

@media (prefers-reduced-motion: reduce) {
	.cwu-pc-heart.is-voted .cwu-pc-ic {
		animation: none;
	}

	.cwu-pc-authbox-btn,
	.cwu-pc-auth-field input,
	.cwu-pc-album-search {
		transition: none;
	}
}

/* ---- v0.2.1: top signup banner + image-distortion hardening ---- */
.cwu-pc-signup-banner{display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap;background:#fdf1f0;border:1.5px solid #f3cfcc;border-left:5px solid #d63c32;border-radius:14px;padding:18px 22px;margin:0 0 28px}
.cwu-pc-signup-copy strong{display:block;font-family:Fredoka,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;font-size:18px;font-weight:600;color:#2b2320;margin:0 0 4px}
.cwu-pc-signup-copy p{margin:0;font-family:Fredoka,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;font-size:15px;line-height:1.55;color:#5a5a5a;max-width:640px}
.cwu-pc-signup-banner .cwu-pc-btn{flex:0 0 auto}
@media (max-width:560px){.cwu-pc-signup-banner{padding:16px}.cwu-pc-signup-banner .cwu-pc-btn{width:100%;text-align:center}}
/* Never let width/height attributes or Smush dimension hints distort images.
   v0.2.1 did that by forcing cards square (aspect-ratio:1/1 + object-fit:cover,
   both !important). The square crop was cutting people out of group shots —
   the whole thing visitors come to see — so it is gone (Aleksey 2026-09-08).
   The distortion guard did not need it: `width:100%; height:auto` cannot
   distort, because the image's own ratio always decides the height. A wrong
   dimension hint can then only mis-size the pre-load box (a reflow), never
   squash the photo. Kept here, after the base rule, because this late block is
   what actually wins the cascade. */
.cwu-pc-card-img{width:100%;height:auto}
.cwu-pc-photo-img{width:auto;height:auto;object-fit:contain}

/* ---- v0.3.0: submit form restructure (mobile-first, no typing) ---- */
.cwu-pc-submit .cwu-pc-form{background:#fff;border:1px solid #e7e1db;border-radius:14px;padding:20px;box-shadow:0 1px 3px rgba(20,31,33,.05)}
.cwu-pc-form .cwu-pc-field{margin:0 0 18px}
.cwu-pc-form label{display:block;font-family:Fredoka,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;font-weight:600;font-size:15px;color:#2b2320;margin:0 0 6px}
.cwu-pc-form input[type=file]{display:block;width:100%;padding:16px 14px;border:2px dashed #ecc4c0;border-radius:12px;background:#fffdfb;font-family:Fredoka,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;font-size:15px;color:#5e544e}
.cwu-pc-form input[type=file]::file-selector-button{background:#d63c32;color:#fff;border:0;border-radius:999px;padding:9px 18px;margin-right:12px;font-family:inherit;font-weight:700;font-size:14px;text-transform:uppercase;letter-spacing:.03em;cursor:pointer}
.cwu-pc-album-current{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0;background:#fdf1f0;border:1.5px solid #f3cfcc;border-radius:12px;padding:12px 16px;font-family:Fredoka,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;font-size:15px}
.cwu-pc-album-current-label{color:#8a8a8a}
.cwu-pc-album-current strong{color:#2b2320;font-weight:600}
.cwu-pc-album-current .cwu-pc-album-change{margin-left:auto;background:none;border:0;padding:0;color:#d63c32;font-family:inherit;font-size:14px;text-decoration:underline;cursor:pointer}
.cwu-pc-album-select{display:block;width:100%;padding:13px 14px;border:1.5px solid #e7e1db;border-radius:12px;background:#fff;font-family:Fredoka,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;font-size:16px;color:#2b2320;appearance:auto}
.cwu-pc-album-select:focus{border-color:#d63c32;outline:none;box-shadow:0 0 0 4px rgba(214,60,50,.12)}
@media (max-width:560px){
.cwu-pc-submit .cwu-pc-form{padding:16px}
.cwu-pc-form .cwu-pc-field--actions .cwu-pc-btn{display:block;width:100%;text-align:center}
}

/* v0.3.1: pre-voting hearts are clickable teasers (register funnel) */
.cwu-pc-heart--inactive{opacity:.45;cursor:pointer}
.cwu-pc-heart--inactive:hover{opacity:.7}
.cwu-pc-heart{position:relative}

/* ---- v0.4.0: claims, hub FAQ, sign-in link at top of register ---- */
.cwu-pc-auth-switch--top{margin:0 0 14px;padding:10px 14px;background:#fdf1f0;border-radius:10px;font-size:15px;text-align:center}
.cwu-pc-claim-row{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin:16px 0 6px}
.cwu-pc-claim-row.is-closed{display:none}
.cwu-pc-claim{background:#fff;border:1.5px solid #e7e1db;border-radius:999px;padding:11px 20px;font-family:Fredoka,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;font-size:15px;font-weight:600;color:#2b2320;cursor:pointer;transition:border-color .18s ease,background-color .18s ease,color .18s ease}
.cwu-pc-claim:hover{border-color:#d63c32;color:#d63c32}
.cwu-pc-claim.is-claimed{background:#d63c32;border-color:#d63c32;color:#fff}
.cwu-pc-claim-hint{flex:1 1 240px;font-family:Fredoka,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;font-size:13px;line-height:1.5;color:#8a8a8a}
.cwu-pc-hub-faq{margin:44px 0 10px;max-width:760px}
.cwu-pc-hub-faq > h2{font-family:"Fredoka One",Fredoka,system-ui,sans-serif;font-weight:500;font-size:clamp(22px,3.4vw,28px);text-transform:uppercase;color:#2b2320;margin:0 0 16px;padding-bottom:10px;position:relative}
.cwu-pc-hub-faq > h2::after{content:"";position:absolute;left:0;bottom:0;width:44px;height:4px;border-radius:99px;background:#d63c32}
.cwu-pc-faq-item{background:#fff;border:1px solid #e7e1db;border-radius:12px;margin:0 0 10px;overflow:hidden;box-shadow:0 1px 3px rgba(20,31,33,.05)}
.cwu-pc-faq-item summary{padding:14px 18px;cursor:pointer;list-style:none;font-family:Fredoka,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;font-weight:600;font-size:16px;color:#2b2320}
.cwu-pc-faq-item summary::-webkit-details-marker{display:none}
.cwu-pc-faq-item summary::before{content:"+";display:inline-block;width:20px;color:#d63c32;font-weight:700}
.cwu-pc-faq-item[open] summary::before{content:"–"}
.cwu-pc-faq-item[open] summary{background:#fdf1f0}
.cwu-pc-faq-item p{margin:0;padding:14px 18px 16px 38px;font-family:Fredoka,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;font-size:15px;line-height:1.6;color:#5e544e}

/* ---- v0.5.0: event-branded album hero (cover art banner) ---- */
.cwu-pc-hero--branded{background-size:cover;background-position:center 30%;border-radius:18px;padding:36px 28px 32px;margin:0 0 26px;color:#fff}
.cwu-pc-hero--branded .cwu-pc-title{color:#fff;text-shadow:0 2px 12px rgba(0,0,0,.45)}
.cwu-pc-hero--branded .cwu-pc-title-year{color:#f09a93}
.cwu-pc-hero--branded .cwu-pc-status{color:rgba(255,255,255,.94);text-shadow:0 1px 6px rgba(0,0,0,.4);max-width:640px}
.cwu-pc-hero--branded .cwu-pc-crumb a{color:rgba(255,255,255,.8)}
.cwu-pc-hero--branded .cwu-pc-crumb a:hover{color:#fff}
.cwu-pc-hero--branded .cwu-pc-years{color:rgba(255,255,255,.8)}
.cwu-pc-hero--branded .cwu-pc-year-chip{border-color:rgba(255,255,255,.55);color:#fff}
.cwu-pc-hero--branded .cwu-pc-year-chip:hover{border-color:#fff;color:#fff}
.cwu-pc-hero--branded .cwu-pc-year-chip.is-current{background:#d63c32;border-color:#d63c32}
.cwu-pc-hero--branded .cwu-pc-btn-ghost{border-color:rgba(255,255,255,.75);color:#fff;background:transparent}
.cwu-pc-hero--branded .cwu-pc-btn-ghost:hover{background:#fff;color:#2b2320;border-color:#fff}
.cwu-pc-hero--branded .cwu-pc-authbox,.cwu-pc-hero--branded .cwu-pc-authbox a,.cwu-pc-hero--branded .cwu-pc-authbox button{color:#fff}
@media (max-width:560px){.cwu-pc-hero--branded{padding:24px 16px 22px;border-radius:14px}}

/* The site's Header&Footer box injects `header,footer{display:none!important}`
   sitewide (pre-existing, intent unknown) — it was swallowing our <header>
   hero on every album page since v0.2.0. Outrank it. */
.cwu-pc-page .cwu-pc-hero{display:block !important}

/* ---- v0.6.0: hero legibility + mobile design pass ---- */
/* Theme heading rules out-specific ours on some pages — win decisively. */
.cwu-pc-hero--branded .cwu-pc-title{color:#fff !important;text-shadow:0 2px 14px rgba(0,0,0,.55)}
.cwu-pc-hero--branded .cwu-pc-title-year{color:#f09a93 !important}
.cwu-pc-hero--branded .cwu-pc-status{color:rgba(255,255,255,.95) !important;text-shadow:0 1px 8px rgba(0,0,0,.5)}
.cwu-pc-hero--branded .cwu-pc-crumb a{color:rgba(255,255,255,.85) !important}
.cwu-pc-hero--branded .cwu-pc-years,.cwu-pc-hero--branded .cwu-pc-years span{color:rgba(255,255,255,.85)}
@media (max-width:640px){
/* Native share covers FB/X on phones — hide the extra pills for a clean stack. */
.cwu-pc-page .cwu-pc-actions a[href*="facebook.com/sharer"],
.cwu-pc-page .cwu-pc-actions a[href*="twitter.com/intent"],
.cwu-pc-page a.cwu-pc-btn-ghost[href*="facebook.com/sharer"],
.cwu-pc-page a.cwu-pc-btn-ghost[href*="twitter.com/intent"]{display:none}
.cwu-pc-hero .cwu-pc-actions{flex-direction:column;align-items:stretch;gap:10px}
.cwu-pc-hero .cwu-pc-actions .cwu-pc-btn{width:100%;text-align:center;margin:0}
.cwu-pc-hero--branded{padding:26px 16px 22px;background-position:center 22%}
.cwu-pc-hero--branded .cwu-pc-title{font-size:clamp(26px,7.5vw,34px)}
}

/* ---- v0.6.1: submit heading matches the FAQ heading ---- */
.cwu-pc-submit-title{font-family:"Fredoka One",Fredoka,system-ui,sans-serif !important;font-weight:500 !important;font-size:clamp(22px,3.4vw,28px) !important;text-transform:uppercase;color:#2b2320 !important;margin:0 0 16px !important;padding-bottom:10px;position:relative}
.cwu-pc-submit-title::after{content:"";position:absolute;left:0;bottom:0;width:44px;height:4px;border-radius:99px;background:#d63c32}

/* ---- v0.11.5: hero rhythm (Aleksey 2026-08-21: years + share rows "off") ----
   Year chips get smaller/quieter so they read as navigation, not buttons;
   the action row gets real separation; the one-character X pill gets a
   minimum width so it matches its neighbors. */
.cwu-pc-years{justify-content:center;margin:18px 0 0}
.cwu-pc-year-chip{padding:3px 12px;font-size:13px}
.cwu-pc-hero .cwu-pc-actions{margin-top:22px}
.cwu-pc-actions .cwu-pc-btn{min-width:64px;justify-content:center}
@media (max-width:640px){.cwu-pc-hero .cwu-pc-actions{margin-top:16px}}

/* ---- v0.14.0: album count + leaderboard (Aleksey 2026-08-21) ---- */
.cwu-pc-count{text-align:center;font-size:15px;color:#6b6660;margin:0 0 14px}
.cwu-pc-count strong{color:#2b2320;font-weight:700}
.cwu-pc-leaderboard{background:#fff;border:1px solid #e7e1db;border-radius:16px;padding:18px 20px 14px;margin:0 0 26px;box-shadow:0 2px 10px rgba(28,28,28,.06)}
.cwu-pc-lb-title{font-family:"Fredoka One",Fredoka,system-ui,sans-serif;font-weight:500;font-size:clamp(18px,2.6vw,22px);margin:0 0 12px;color:#2b2320}
.cwu-pc-lb-list{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.cwu-pc-lb-row{display:flex;align-items:center;gap:12px;padding:6px 8px;border-radius:10px;background:#faf8f7}
.cwu-pc-lb-rank-1{background:#fff4e5}
.cwu-pc-lb-rank-2{background:#f4f4f6}
.cwu-pc-lb-rank-3{background:#fbf0e8}
.cwu-pc-lb-num{flex:0 0 28px;text-align:center;font-family:Fredoka,system-ui,sans-serif;font-weight:700;font-size:16px;color:#d63c32}
.cwu-pc-lb-link{display:flex;align-items:center;gap:10px;flex:1 1 auto;min-width:0;text-decoration:none;color:#2b2320}
.cwu-pc-lb-img{width:56px;height:56px;border-radius:8px;object-fit:cover;flex:0 0 auto}
.cwu-pc-lb-by{font-weight:600;font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cwu-pc-lb-link:hover .cwu-pc-lb-by{color:#d63c32}
.cwu-pc-lb-votes{flex:0 0 auto;font-size:14px;font-weight:600;color:#6b6660;font-variant-numeric:tabular-nums}
.cwu-pc-lb-note{margin:10px 0 0;font-size:13px;color:#8a8a8a}
@media (max-width:560px){.cwu-pc-leaderboard{padding:14px 14px 10px}.cwu-pc-lb-img{width:44px;height:44px}.cwu-pc-lb-by{font-size:14px}.cwu-pc-lb-votes{font-size:13px}}

/* v0.20.0 — placeholder albums: real events whose photos never arrived.
   Same card footprint as a linked album so the archive grid stays even, but
   visibly inert: no pointer, no hover lift, and the event's own artwork
   behind a scrim so the text stays legible on any cover. */
.cwu-pc-album.is-empty .cwu-pc-album-inner{display:flex;flex-direction:column;gap:4px;border:1px solid #e4ded9;border-radius:14px;padding:16px 18px;background:#f3efec center/cover no-repeat;cursor:default;box-shadow:inset 0 0 0 1px rgba(255,255,255,.35)}
.cwu-pc-album.is-empty .cwu-pc-album-name{color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.55)}
.cwu-pc-album.is-empty .cwu-pc-album-year{color:#ffb59b;text-shadow:0 1px 3px rgba(0,0,0,.55)}
.cwu-pc-album.is-empty .cwu-pc-album-count{color:#f0e6e0;font-style:italic;text-shadow:0 1px 3px rgba(0,0,0,.55)}
.cwu-pc-year-chip.is-empty{opacity:.45;cursor:default;text-decoration:line-through}
.cwu-pc-noshots{margin:28px auto 6px;max-width:52ch;text-align:center;font-size:17px;color:#3d3733;line-height:1.55}
.cwu-pc-noshots-sub{margin:0 auto 32px;max-width:52ch;text-align:center;font-size:14px;color:#8a8a8a}

/* ---- v0.29.0: "Taken at" venue tag on the photo page ---- */
.cwu-pc-venue-row{margin:12px 0 6px}
.cwu-pc-venue-line{display:flex;align-items:center;gap:7px;margin:0;font-family:Fredoka,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;font-size:15px;color:#5e544e}
.cwu-pc-venue-pin{font-size:15px;line-height:1}
.cwu-pc-venue-link{color:#d63c32;font-weight:600;text-decoration:none;border-bottom:1.5px solid rgba(214,60,50,.28)}
.cwu-pc-venue-link:hover{border-bottom-color:#d63c32}
/* Revealed by frontend.js only for people tagged in the photo, and for staff. */
.cwu-pc-venue-edit{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:10px}
.cwu-pc-venue-edit[hidden]{display:none}
.cwu-pc-venue-label{font-family:Fredoka,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;font-size:13px;font-weight:600;color:#8a8a8a}
.cwu-pc-venue-select{max-width:320px;flex:1 1 220px;background:#fff;border:1.5px solid #e7e1db;border-radius:10px;padding:9px 12px;font-family:Fredoka,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;font-size:15px;color:#2b2320;cursor:pointer}
.cwu-pc-venue-select:focus{outline:none;border-color:#d63c32}
.cwu-pc-venue-select:disabled{opacity:.6;cursor:default}
.cwu-pc-venue-note{font-family:Fredoka,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;font-size:13px;color:#8a8a8a}
.cwu-pc-venue-note.is-err{color:#c62828}
.cwu-pc-venue-line[hidden]{display:none}

/* ---- v0.32.0: hub album covers + search -------------------------------- */

/* The cover bleeds to the card's edges (cancelling the link's padding) and is
   cropped to one shape so every card in a row lines up. The box comes from
   aspect-ratio alone, so nothing shifts when the photo arrives. Faces in crawl
   photos sit high in the frame, hence the raised focal point. */
.cwu-pc-album-cover{display:block;width:calc(100% + 36px);max-width:none;margin:-16px -18px 8px;aspect-ratio:4/3;height:auto;object-fit:cover;object-position:center 30%;border-radius:13px 13px 0 0;background:#f3eeeb}

.cwu-pc-hub-search{display:flex;flex-direction:column;align-items:center;gap:6px;margin:22px auto 0;max-width:560px}
.cwu-pc-hub-q{
	width:100%;box-sizing:border-box;
	font:inherit;font-size:16px; /* 16px stops iOS zooming the page on focus */
	padding:13px 18px 13px 46px;
	border:1.5px solid #e3ddd9;border-radius:999px;background:#fff;color:#2b2320;
	background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%23d63c32' stroke-width='2.4' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-3.5-3.5'/%3E%3C/svg%3E");
	background-repeat:no-repeat;background-position:17px center;
	box-shadow:0 1px 3px rgba(20,31,33,.05);
	transition:border-color .15s ease,box-shadow .15s ease;
}
.cwu-pc-hub-q:focus{outline:none;border-color:#d63c32;box-shadow:0 0 0 4px rgba(214,60,50,.15)}
.cwu-pc-hub-count{margin:0;min-height:1.3em;font-size:13px;color:#8a8a8a}
.cwu-pc-hub-none{text-align:center;color:#8a8a8a;margin:10px 0 40px}
.cwu-pc-hub-search .screen-reader-text{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* A display rule beats the hidden attribute's own display:none, so every
   element the search toggles gets it back explicitly. */
.cwu-pc-hub-search[hidden],.cwu-pc-hub-city[hidden],.cwu-pc-album[hidden],.cwu-pc-hub-none[hidden]{display:none!important}

/* ---- v0.34.0: coming-soon — the event page's 2026-album design ----------
   Aleksey 2026-09-11: "I really like the coming soon album design for 2026 on
   the Halloween page, using the clown image. Apply this." Same recipe as the
   event page's .yr-soon: hero image under a dark wash, COMING SOON in Bangers,
   the "Submit your photos" pill centred at the foot, pulsing white. Own class
   names, so neither stylesheet can reach into the other's page.

   Bangers is the self-hosted file the event page already loads — one download
   shared across both pages, and no request to Google. A path, not the CDN URL,
   so it resolves against wherever this stylesheet is served from. */
@font-face{font-family:Bangers;font-style:normal;font-weight:400;font-display:swap;src:url("/wp-content/uploads/2026/08/bangers-latin.woff2") format("woff2")}

.cwu-pc-album.is-soon a{border-color:#f3cfcc;background:linear-gradient(#fff 55%,#fff6f1)}
.cwu-pc-album.is-soon a:hover{border-color:#d63c32}
.cwu-pc-soon-media{position:relative;display:block;width:calc(100% + 36px);margin:-16px -18px 8px;aspect-ratio:4/3;border-radius:13px 13px 0 0;overflow:hidden;background:linear-gradient(135deg,#a52a22,#f09a93);container-type:inline-size}
.cwu-pc-soon-media::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(rgba(13,10,20,.30),rgba(13,10,20,.70))}
.cwu-pc-soon-art{display:block;width:100%;height:100%;max-width:none;object-fit:cover}
.cwu-pc-soon-blank{position:absolute;inset:0}
.cwu-pc-soon-word{position:absolute;z-index:1;left:6px;right:6px;top:46%;transform:translateY(-50%);text-align:center;font-family:Bangers,Impact,"Haettenschweiler","Arial Narrow",sans-serif;font-weight:400;color:#fff;font-size:44px;font-size:17cqi;line-height:.9;letter-spacing:.04em;text-transform:uppercase;text-shadow:0 2px 0 rgba(0,0,0,.5),0 0 22px rgba(0,0,0,.55)}
.cwu-pc-soon-tag{position:absolute;z-index:1;left:50%;bottom:10px;transform:translateX(-50%);white-space:nowrap;background:#a52a22;color:#fff;font:700 12px/1 Fredoka,system-ui,sans-serif;letter-spacing:.01em;padding:7px 11px 6px 10px;border-radius:999px;box-shadow:0 2px 10px rgba(0,0,0,.42);animation:cwu-pc-soon-pulse 2.6s ease-in-out infinite}
.cwu-pc-soon-date{position:absolute;z-index:1;right:10px;top:10px;background:#fff;color:#2b2320;border-radius:10px;padding:5px 10px 6px;text-align:center;line-height:1.05;font-weight:800;font-size:19px;box-shadow:0 2px 10px rgba(0,0,0,.22)}
.cwu-pc-soon-date b{display:block;color:#d63c32;font-size:10.5px;letter-spacing:.09em;text-transform:uppercase}
.cwu-pc-soon-line{color:#5a4b44;font-size:13px;line-height:1.4}
.cwu-pc-soon-cta{margin-top:4px;color:#d63c32;font-weight:700;font-size:13.5px}
.cwu-pc-album.is-soon a:hover .cwu-pc-soon-cta{text-decoration:underline}
@keyframes cwu-pc-soon-pulse{0%,100%{box-shadow:0 2px 10px rgba(0,0,0,.42),0 0 0 0 rgba(255,255,255,.45)}50%{box-shadow:0 2px 10px rgba(0,0,0,.42),0 0 0 6px rgba(255,255,255,0)}}
@media (prefers-reduced-motion:reduce){.cwu-pc-soon-tag{animation:none}}

/* The album-page teaser: a polaroid like the event page's, beside the copy. */
.cwu-pc-soon-teaser{display:flex;align-items:center;gap:30px;margin:18px 0;padding:24px 28px;background:linear-gradient(135deg,#fff7f2,#ffe9dc);border:1px solid #f3cfcc;border-radius:18px}
.cwu-pc-soon-polaroid{flex:0 0 220px;display:block;background:#fff;padding:10px 10px 12px;border-radius:4px;box-shadow:0 12px 28px rgba(40,20,10,.24);transform:rotate(-2.5deg);text-align:center;text-decoration:none;color:#2b2320;transition:transform .2s ease}
.cwu-pc-soon-polaroid:hover{transform:rotate(0) scale(1.02)}
.cwu-pc-soon-polaroid .cwu-pc-soon-media{width:100%;margin:0;border-radius:3px}
.cwu-pc-soon-polaroid .cwu-pc-soon-word{font-size:40px;font-size:19cqi;top:42%}
.cwu-pc-soon-polaroid b{display:block;margin-top:9px;font:400 32px/1 Bangers,Impact,sans-serif;letter-spacing:.03em}
.cwu-pc-soon-polaroid small{display:block;margin-top:4px;font:600 11px/1 Fredoka,system-ui,sans-serif;letter-spacing:.14em;text-transform:uppercase;color:#6b6b6b}
.cwu-pc-soon-copy{flex:1 1 auto;min-width:0}
.cwu-pc-soon-eyebrow{margin:0 0 6px;color:#a52a22;font-weight:700;font-size:12px;letter-spacing:.14em;text-transform:uppercase}
.cwu-pc-soon-head{margin:0 0 8px;font:500 clamp(22px,3vw,30px)/1.15 "Fredoka One",Fredoka,system-ui,sans-serif;color:#2b2320}
.cwu-pc-soon-text{margin:0 0 16px;color:#5a4b44;font-size:15px;line-height:1.5}
@media (max-width:640px){.cwu-pc-soon-teaser{flex-direction:column;text-align:center;padding:22px 18px}.cwu-pc-soon-polaroid{flex:0 0 auto;width:210px}}

/* Every card fills its grid row. A coming-soon card carries two more lines than a
   photo card, and a row mixing both otherwise ends in a ragged edge. The hidden
   rule above still wins: it is !important. */
.cwu-pc-albums > .cwu-pc-album{display:flex;flex-direction:column}
.cwu-pc-albums > .cwu-pc-album > a,.cwu-pc-albums > .cwu-pc-album > .cwu-pc-album-inner{flex:1 1 auto}

/* ---- v0.35.0: album pagination + "Bars in these photos" ---------------- */
/* "Load more" became a real link, so crawlers can follow it to /page/N/. */
a.cwu-pc-load-more{display:inline-block;text-decoration:none}
.cwu-pc-page-back{text-align:center;margin:-4px 0 14px;font-size:14px}
.cwu-pc-page-back a{color:#d63c32;font-weight:600;text-decoration:none}
.cwu-pc-page-back a:hover{text-decoration:underline}
.cwu-pc-bars{margin:34px 0 10px}
.cwu-pc-bars-title{font:500 clamp(20px,2.6vw,24px)/1.2 "Fredoka One",Fredoka,system-ui,sans-serif;color:#2b2320;margin:0 0 12px}
.cwu-pc-bars-list{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:10px}
.cwu-pc-bars-list li{background:#fff;border:1px solid #f0d8cc;border-radius:999px;padding:8px 14px;font-size:14px;line-height:1.3}
.cwu-pc-bars-list a{color:#2b2320;font-weight:600;text-decoration:none}
.cwu-pc-bars-list a:hover{color:#d63c32}
.cwu-pc-bars-n{color:#8a8a8a;font-size:12.5px;margin-left:4px}

/* ---------- Guest upload: result banners + "uploading" state (v0.37.2) ----------
   The banners shipped with no styling at all, so "Thanks! Your photo is in
   review" was one line of plain text that was easy to miss. */
.cwu-pc-banner{margin:0 0 16px;padding:14px 16px;border-radius:12px;border:1px solid #e3e3e3;background:#f6f6f6;color:#2b2320;font-size:16px;line-height:1.45;font-weight:600}
.cwu-pc-banner--ok{background:#e9f7ef;border-color:#9fd8b5;color:#14532d}
.cwu-pc-banner--ok::before{content:"\2713";display:inline-block;margin-right:8px;font-weight:700}
.cwu-pc-banner--err{background:#fdecea;border-color:#f1a9a0;color:#8a1c11}
.cwu-pc-sending{margin:12px 0 0;font-size:15px;line-height:1.45;font-weight:600;color:#2b2320}
.cwu-pc-sending-bar{display:block;height:6px;margin:0 0 10px;border-radius:99px;background:linear-gradient(90deg,#f3cfcc 0%,#d63c32 50%,#f3cfcc 100%);background-size:200% 100%;animation:cwu-pc-sending 1.2s linear infinite}
@keyframes cwu-pc-sending{from{background-position:200% 0}to{background-position:0 0}}
@media (prefers-reduced-motion:reduce){.cwu-pc-sending-bar{animation:none}}
.cwu-pc-submit .cwu-pc-form[data-sending="1"] button[type="submit"]{opacity:.6;cursor:progress}

/* ---------- Guest upload: our own picker, preview and progress bar (v0.37.3) ---------- */
.cwu-pc-form input[type=file].cwu-pc-pick-native{position:absolute;width:1px;height:1px;padding:0;border:0;opacity:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
.cwu-pc-pick{display:flex;flex-wrap:wrap;align-items:center;gap:12px;padding:14px;border:2px dashed #ecc4c0;border-radius:12px;background:#fffdfb}
.cwu-pc-pick-btn{display:inline-block;background:#d63c32;color:#fff;border-radius:999px;padding:10px 20px;font-weight:700;font-size:14px;text-transform:uppercase;letter-spacing:.03em;cursor:pointer;line-height:1.2}
.cwu-pc-pick-btn:hover{background:#a52a22}
.cwu-pc-pick-native:focus-visible + .cwu-pc-field-hint,.cwu-pc-pick:focus-within{outline:2px solid #d63c32;outline-offset:2px}
.cwu-pc-pick-prev{width:72px;height:72px;object-fit:cover;border-radius:10px;background:#f0e6df;flex:0 0 auto}
.cwu-pc-pick-name{flex:1 1 140px;min-width:0;font-size:15px;color:#5e544e;overflow-wrap:anywhere}
.cwu-pc-sending-bar{position:relative;overflow:hidden;background:#f3cfcc;animation:none}
.cwu-pc-sending-bar > span{display:block;height:100%;border-radius:99px;background:#d63c32;transition:width .2s linear}
.cwu-pc-sending-bar.is-wait > span{background:linear-gradient(90deg,#d63c32 0%,#f09a93 50%,#d63c32 100%);background-size:200% 100%;animation:cwu-pc-sending 1.2s linear infinite}
@media (prefers-reduced-motion:reduce){.cwu-pc-sending-bar.is-wait > span{animation:none}}
.cwu-pc-sending.is-error{color:#8a1c11;background:#fdecea;border:1px solid #f1a9a0;border-radius:12px;padding:12px 14px}

/* ---------- "Your photos in this album" (v0.37.3) ---------- */
.cwu-pc-mine{margin:0 0 18px;padding:16px;background:#fff;border:1px solid #e7e1db;border-radius:14px;box-shadow:0 1px 3px rgba(20,31,33,.05)}
.cwu-pc-mine[hidden]{display:none}
.cwu-pc-mine-title{margin:0 0 12px;font:500 18px/1.2 "Fredoka One",Fredoka,system-ui,sans-serif;color:#2b2320}
.cwu-pc-mine-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:10px}
.cwu-pc-mine-item{margin:0;display:flex;flex-direction:column;gap:6px;min-width:0}
.cwu-pc-mine-frame{display:block;aspect-ratio:1/1;border-radius:10px;overflow:hidden;background:#f0e6df;text-decoration:none}
.cwu-pc-mine-frame img{width:100%;height:100%;object-fit:cover;display:block}
.cwu-pc-mine-frame.is-empty{display:flex;align-items:center;justify-content:center;font-size:12px;color:#8a8a8a}
.cwu-pc-mine-tag{align-self:flex-start;font-size:12px;font-weight:700;line-height:1;padding:5px 9px;border-radius:999px;background:#fdf3d7;color:#7a5200}
.cwu-pc-mine-item.is-approved .cwu-pc-mine-tag{background:#e9f7ef;color:#14532d}
.cwu-pc-mine-item.is-approved .cwu-pc-mine-tag::before{content:"\2713";margin-right:4px}
.cwu-pc-mine-note{margin:12px 0 0;font-size:13.5px;line-height:1.45;color:#5a5a5a}

/* v0.48.1: the photo contest prize, in the album header while it is open */
.cwu-pc-prize {
	display: inline-block;
	max-width: 640px;
	margin: 12px auto 4px;
	padding: 10px 18px 12px;
	border: 1px solid rgba(127, 127, 127, 0.35);
	border-radius: 16px;
	background: rgba(127, 127, 127, 0.12);
	text-align: center;
}
.cwu-pc-prize-eyebrow {
	margin: 0 0 4px;
	font-size: 12px;
	font-weight: 800;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	opacity: 0.85;
}
.cwu-pc-prize-list { list-style: none; margin: 0; padding: 0; }
.cwu-pc-prize-list li { margin: 4px 0; line-height: 1.35; }
.cwu-pc-prize-k { font-weight: 700; opacity: 0.8; }
.cwu-pc-prize-v { font-size: 22px; font-weight: 800; color: var(--cwu-pc-accent, #d63c32); }
.cwu-pc-prize-n { display: block; font-size: 13px; opacity: 0.8; }
.cwu-pc-hero--branded .cwu-pc-prize-v { color: #fff; }
