/*
Theme Name:  Stash Revival
Theme URI:   https://www.stasheverything.com/
Author:      Rebuild of the 2012 "Stash Everything" theme by Benjamin Burne, Industry Agency
Description: A faithful reproduction of the original Stash Everything design, rebuilt for
             WordPress 7.x and PHP 8.4. Responsive CSS Grid replaces the fixed 940px
             Foundation 3 layout; vanilla JS replaces jQuery/Orbit/Masonry.
Version:     1.0.0
Requires PHP: 8.0
Text Domain: stash-revival
Tags:        magazine, music, blog, custom-background, custom-menu, featured-images
*/

/* ==========================================================================
   Fonts — the original DIN and Arvo faces, served locally
   ========================================================================== */

@font-face {
	font-family: 'DIN';
	src: url('fonts/din_light-webfont.woff') format('woff'),
	     url('fonts/din_light-webfont.ttf') format('truetype');
	font-weight: 300;
	font-style: normal;
	font-display: swap;
}

@font-face {
	font-family: 'DIN';
	src: url('fonts/din_medium-webfont.woff') format('woff'),
	     url('fonts/din_medium-webfont.ttf') format('truetype');
	font-weight: 500;
	font-style: normal;
	font-display: swap;
}

@font-face {
	font-family: 'DIN';
	src: url('fonts/din_bold-webfont.woff') format('woff'),
	     url('fonts/din_bold-webfont.ttf') format('truetype');
	font-weight: 700;
	font-style: normal;
	font-display: swap;
}

@font-face {
	font-family: 'Arvo';
	src: url('fonts/arvo-regular_v104-webfont.woff') format('woff'),
	     url('fonts/arvo-regular_v104-webfont.ttf') format('truetype');
	font-weight: 400;
	font-style: normal;
	font-display: swap;
}

/* ==========================================================================
   Tokens — lifted from the original stylesheet
   ========================================================================== */

:root {
	--se-blue:        #1477ef;   /* large text and UI only: 3.6:1 on white */
	--se-blue-dark:   #0e52a4;
	--se-blue-text:   #0b4fa0;   /* body-copy links: 7.0:1 on white */
	--se-ink:         #222222;
	--se-ink-soft:    #666666;
	--se-rule:        #e7e7e7;
	--se-paper:       #ffffff;
	--se-ground:      #f1f1f1;
	--se-bar-top:     #2b2b2b;
	--se-bar-bottom:  #0f0f0f;
	--se-on-dark:     #ffffff;
	--se-on-dark-dim: #cccccc;
	--se-hairline:    rgba(255, 255, 255, 0.2);
	--se-shadow:      0 0 8px rgba(0, 0, 0, 0.5);

	--se-sans:    'DIN', 'Helvetica Neue', Arial, Helvetica, sans-serif;
	--se-slab:    'Arvo', Georgia, 'Times New Roman', serif;
	--se-serif:   Georgia, 'Droid Serif', 'Times New Roman', serif;
	--se-body:    'Lato', -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;

	--se-max:     1180px;
	--se-gap:     20px;
}

/* ==========================================================================
   Base
   ========================================================================== */

*,
*::before,
*::after { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; }

body {
	margin: 0;
	font-family: var(--se-sans);
	font-weight: 300;
	color: var(--se-on-dark);
	background-color: #14181c;
	background-image: linear-gradient(rgba(10, 12, 14, 0.82), rgba(10, 12, 14, 0.94)), var(--se-bg-image, none);
	background-size: cover;
	background-position: center top;
	background-attachment: fixed;
	background-repeat: no-repeat;
	min-height: 100vh;
}

img { max-width: 100%; height: auto; border: 0; }

a { color: var(--se-blue); text-decoration: none; }
a:hover { color: var(--se-blue-dark); }

h1, h2, h3, h4, h5, h6 {
	font-family: var(--se-sans);
	color: var(--se-on-dark);
	margin: 0;
	text-wrap: balance;
}

:focus-visible {
	outline: 2px solid var(--se-blue);
	outline-offset: 2px;
}

.screen-reader-text {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
	border: 0;
}

.skip-link {
	position: absolute;
	left: -9999px;
	top: 0;
	z-index: 100;
	background: var(--se-paper);
	color: var(--se-ink);
	padding: 12px 20px;
	font-weight: 700;
}
.skip-link:focus { left: 0; }

/* ==========================================================================
   Layout
   ========================================================================== */

.se-wrap {
	max-width: var(--se-max);
	margin-inline: auto;
	padding-inline: var(--se-gap);
}

.se-main { padding-bottom: 40px; }

/* ==========================================================================
   Top bar — the dark gradient masthead
   ========================================================================== */

.se-topbar {
	background: linear-gradient(to bottom, var(--se-bar-top), var(--se-bar-bottom));
	box-shadow: 0 0 10px #000;
	margin-bottom: 20px;
	position: relative;
	z-index: 30;
}

.se-topbar__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--se-gap);
	min-height: 60px;
}

.se-logo {
	display: block;
	width: 200px;
	height: 55px;
	background: url('images/logo.png') no-repeat center / contain;
	flex: none;
	text-indent: -9999px;
	overflow: hidden;
}

.se-nav ul {
	display: flex;
	flex-wrap: wrap;
	justify-content: flex-end;
	list-style: none;
	margin: 0;
	padding: 0;
}

.se-nav a {
	display: inline-block;
	padding: 18px 12px;
	color: var(--se-on-dark);
	font-weight: 700;
	text-transform: uppercase;
	font-size: 16px;
	transition: opacity 0.3s ease;
}
.se-nav a:hover,
.se-nav a:focus { opacity: 0.5; color: var(--se-on-dark); }

.se-nav-toggle {
	display: none;
	background: none;
	border: 1px solid var(--se-hairline);
	border-radius: 4px;
	color: var(--se-on-dark);
	font-family: var(--se-sans);
	font-weight: 700;
	font-size: 14px;
	text-transform: uppercase;
	padding: 8px 14px;
	cursor: pointer;
}

/* ==========================================================================
   Meta bar — context line + social
   ========================================================================== */

.se-metabar {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 12px var(--se-gap);
	padding-bottom: 18px;
	font-size: 15px;
	color: var(--se-on-dark);
	text-shadow: 0 1px 1px #000;
}

.se-metabar__context strong { font-weight: 700; }

.se-jump-link {
	display: inline-block;
	padding: 4px 10px;
	color: var(--se-on-dark);
	font-weight: 700;
	font-size: 13px;
	text-transform: uppercase;
	border: 1px solid var(--se-on-dark);
	border-radius: 5px;
	transition: opacity 0.3s ease;
}
.se-jump-link:hover { opacity: 0.5; color: var(--se-on-dark); }

.se-social {
	display: flex;
	align-items: center;
	gap: 10px;
}
.se-social a {
	display: inline-flex;
	color: var(--se-on-dark);
	transition: opacity 0.3s ease;
}
.se-social a:hover { opacity: 0.5; }
.se-social__icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	/* 24px is the WCAG 2.5.8 minimum target size; these were 22px. */
	width: 24px;
	height: 24px;
	border-radius: 4px;
	background: var(--se-brand, #444);
	transition: transform 0.18s ease, opacity 0.18s ease;
}
.se-social__icon svg { width: 12px; height: 12px; display: block; fill: var(--se-on-dark); }
.se-social__icon:hover,
.se-social__icon:focus-visible { transform: translateY(-2px); opacity: 1; }

.se-social__icon--rss       { --se-brand: #f26522; }
.se-social__icon--facebook  { --se-brand: #1877f2; }
.se-social__icon--x         { --se-brand: #000000; }
.se-social__icon--pinterest { --se-brand: #e60023; }

/* ==========================================================================
   Homepage — hero slider + ticker
   ========================================================================== */

.se-hero {
	display: grid;
	grid-template-columns: 2fr 1fr;
	gap: var(--se-gap);
	margin-bottom: 30px;
}

.se-slider { position: relative; }

.se-slider__viewport {
	position: relative;
	box-shadow: var(--se-shadow);
	background: #000;
	overflow: hidden;
	aspect-ratio: 2 / 1;
}

.se-slide {
	position: absolute;
	inset: 0;
	opacity: 0;
	transition: opacity 0.6s ease;
	pointer-events: none;
}
.se-slide.is-active { opacity: 1; pointer-events: auto; }

.se-slide img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.se-slide__caption {
	position: absolute;
	inset-inline: 0;
	bottom: 0;
	/* bottom:0 positions the margin edge, so the default <p> margin was holding the
	   gradient 22px clear of the slide floor and leaving a bright strip of photo. */
	margin: 0;
	padding: 40px 20px 18px;
	background: linear-gradient(to top, rgba(0, 0, 0, 0.85), transparent);
	color: var(--se-on-dark);
	font-size: 22px;
	font-weight: 700;
	text-transform: capitalize;
	line-height: 1.25;
}
.se-slide__caption a { color: var(--se-on-dark); }
.se-slide__caption a:hover { color: var(--se-on-dark); opacity: 0.75; }

/* Stop control for the auto-advancing slider (WCAG 2.2.2). */
.se-slider__pause {
	position: absolute;
	right: 12px;
	bottom: 12px;
	z-index: 3;
	width: 36px;
	height: 36px;
	display: grid;
	place-items: center;
	padding: 0;
	border: 1px solid rgba(255, 255, 255, 0.7);
	border-radius: 50%;
	background: rgba(0, 0, 0, 0.55);
	cursor: pointer;
}
.se-slider__pause:hover { background: rgba(0, 0, 0, 0.8); }
.se-slider__pause:focus-visible {
	outline: 2px solid var(--se-on-dark);
	outline-offset: 2px;
}

/* Two bars for pause; swapped to a single triangle when paused. */
.se-slider__pause-icon {
	width: 10px;
	height: 12px;
	border-inline: 3px solid var(--se-on-dark);
	box-sizing: border-box;
}
.se-slider__pause[aria-pressed="true"] .se-slider__pause-icon {
	width: 0;
	height: 0;
	border: 0;
	border-block: 6px solid transparent;
	border-inline-start: 10px solid var(--se-on-dark);
	margin-left: 3px;
}

/* Preview tabs: three thumbnails below the slider, so you can see what you are
   switching to rather than guessing at an anonymous dot. */
.se-slider__dots {
	display: flex;
	justify-content: center;
	gap: 10px;
	margin-top: 12px;
}

.se-slider__dot {
	width: 10px;
	height: 10px;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.3);
	cursor: pointer;
	transition: background 0.18s ease, transform 0.18s ease;
}

.se-slider__dot[aria-selected="true"] {
	background: var(--se-blue);
	transform: scale(1.25);
}

.se-slider__dot:hover { background: rgba(255, 255, 255, 0.6); }

.se-slider__dot:focus-visible {
	outline: 2px solid var(--se-blue);
	outline-offset: 3px;
}

/* The dot itself is only 10px, well under the 24px WCAG 2.5.8 target minimum,
   so an invisible pseudo-element carries the real hit area. */
.se-slider__dot::before {
	content: "";
	position: absolute;
	width: 24px;
	height: 24px;
	transform: translate(-7px, -7px);
}
.se-slider__dot { position: relative; }

@media (prefers-reduced-motion: reduce) {
	.se-slider__dot { transition: none; }
	.se-slider__dot[aria-selected="true"] { transform: none; }
}

/* Ticker */
.se-ticker__search { margin-bottom: 18px; }

.se-search-form { display: flex; }
.se-search-form input[type="search"] {
	flex: 1;
	min-width: 0;
	font-family: var(--se-sans);
	font-size: 14px;
	padding: 9px 10px;
	border: 1px solid var(--se-hairline);
	background: rgba(255, 255, 255, 0.12);
	color: var(--se-on-dark);
	border-radius: 3px 0 0 3px;
}
.se-search-form input[type="search"]::placeholder { color: rgba(255, 255, 255, 0.6); }
.se-search-form button {
	font-family: var(--se-sans);
	font-weight: 700;
	text-transform: uppercase;
	font-size: 13px;
	padding: 9px 14px;
	border: 0;
	background: var(--se-blue-dark);
	color: var(--se-on-dark);
	border-radius: 0 3px 3px 0;
	cursor: pointer;
	transition: background 0.18s ease;
}
.se-search-form button:hover { background: #0a3f80; }

.se-ticker__item {
	border-bottom: 1px solid var(--se-hairline);
	padding-bottom: 18px;
	margin-bottom: 18px;
}
.se-ticker__item:last-child { border-bottom: 0; }

.se-ticker__item h2 {
	font-size: 16px;
	font-weight: 700;
	margin: 0 0 6px;
	text-transform: capitalize;
	line-height: 1.3;
}
.se-ticker__item h2 a { color: var(--se-on-dark); }
.se-ticker__item h2 a:hover { opacity: 0.7; color: var(--se-on-dark); }

.se-ticker__meta {
	display: flex;
	justify-content: space-between;
	gap: 10px;
	font-size: 13px;
	color: var(--se-on-dark-dim);
}
.se-ticker__meta a { color: var(--se-on-dark-dim); }

/* ==========================================================================
   Card grid — the white drop-shadowed article tiles
   ========================================================================== */

.se-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(270px, 1fr));
	gap: var(--se-gap);
	margin-bottom: 10px;
}

.se-card {
	background: var(--se-paper);
	box-shadow: var(--se-shadow);
	display: flex;
	flex-direction: column;
}

.se-card__media { display: block; overflow: hidden; }
.se-card__media img {
	display: block;
	width: 100%;
	aspect-ratio: 1 / 1;
	object-fit: cover;
	transition: opacity 0.4s ease;
}
.se-card:hover .se-card__media img { opacity: 0.5; }

.se-card__title {
	font-size: 20px;   /* 20px/700 is WCAG "large text": 3:1 threshold */
	line-height: 1.2;
	margin: 0;
	padding: 10px;
	text-transform: capitalize;
}
.se-card__title a { color: var(--se-blue); }
.se-card__title a:hover { color: var(--se-blue-dark); }

.se-card__meta {
	display: flex;
	justify-content: space-between;
	gap: 10px;
	font-size: 12px;
	color: var(--se-ink-soft);
	margin: auto 10px 12px;
	padding-top: 6px;
}
.se-card__meta a { color: var(--se-ink-soft); }
.se-card__meta a:hover { color: var(--se-blue); }

/* ==========================================================================
   Section titles & strips
   ========================================================================== */

.se-section-title {
	border-top: 1px solid var(--se-hairline);
	text-transform: uppercase;
	color: var(--se-on-dark);
	font-size: 22px;
	font-weight: 700;
	margin-top: 20px;
	padding: 20px 0;
}

.se-strip {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
	gap: var(--se-gap);
	margin-bottom: 20px;
	padding: 0;
	list-style: none;
}

.se-strip img { box-shadow: var(--se-shadow); display: block; width: 100%; height: auto; }

.se-contributor {
	display: block;
	width: 130px;
	max-width: 100%;
	aspect-ratio: 1;
	border-radius: 50%;
	background: url('images/author-placeholder.jpg') no-repeat center / cover;
	margin-inline: auto;
	overflow: hidden;
	position: relative;
}
.se-contributor img { width: 100%; height: 100%; object-fit: cover; border-radius: 50%; }

.se-contributor--initials {
	background: none;
	background-color: var(--se-initials-bg, #23303a);
	display: grid;
	place-items: center;
	border: 2px solid var(--se-hairline);
	transition: border-color 0.3s ease;
}
.se-contributor--initials:hover { border-color: var(--se-on-dark); }
.se-contributor--initials span {
	font-family: var(--se-sans);
	font-weight: 700;
	font-size: 2.1rem;
	letter-spacing: 0.02em;
	color: var(--se-on-dark);
	line-height: 1;
}
.se-contributor__name {
	display: block;
	text-align: center;
	font-size: 13px;
	color: var(--se-on-dark);
	margin-top: 8px;
	text-shadow: 0 1px 1px #000;
}

/* ==========================================================================
   Article / page content — the white sheet
   ========================================================================== */

.se-content-header { margin: 10px 0 20px; }
.se-content-header h1 {
	font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
	font-size: clamp(2rem, 5vw, 3.4rem);
	letter-spacing: -2px;
	line-height: 1.05;
	color: var(--se-on-dark);
	margin: 0 0 8px;
}
.se-content-header .se-content-header__info {
	font-family: var(--se-serif);
	font-style: italic;
	color: var(--se-on-dark);
	font-size: 15px;
}
.se-content-header .se-content-header__info a {
	font-style: normal;
	font-weight: 700;
	font-family: var(--se-sans);
	color: var(--se-on-dark);
}

.se-sheet {
	background: var(--se-paper);
	padding: 20px;
	box-shadow: var(--se-shadow);
	color: var(--se-ink);
}

.se-sheet h1, .se-sheet h2, .se-sheet h3,
.se-sheet h4, .se-sheet h5, .se-sheet h6 { color: var(--se-ink); }

.se-sheet > h1 {
	font-family: var(--se-slab);
	font-size: 30px;
	font-weight: 400;
	text-transform: capitalize;
	padding-bottom: 8px;
	line-height: 1.15;
}

.se-entry {
	font-family: var(--se-body);
	font-size: 16px;
	line-height: 1.55;
	color: var(--se-ink);
}
.se-entry a { color: var(--se-blue-text); text-decoration: underline; }
.se-entry a:hover { color: var(--se-blue-dark); }
.se-entry h1 { font-size: 22px; margin: 1.4em 0 0.4em; }
.se-entry h2 { font-size: 20px; margin: 1.4em 0 0.4em; }
.se-entry h3 { font-size: 18px; margin: 1.3em 0 0.4em; }
.se-entry h4 { font-size: 16px; margin: 1.2em 0 0.4em; }
.se-entry p { margin: 0 0 1.1em; }
.se-entry img { height: auto; }
.se-entry iframe,
.se-entry video,
.se-entry embed,
.se-entry object {
	max-width: 100%;
	aspect-ratio: 16 / 9;
	width: 100%;
	height: auto;
	border: 0;
}
.se-entry blockquote {
	margin: 1.4em 0;
	padding: 4px 0 4px 20px;
	border-left: 3px solid var(--se-rule);
	font-family: var(--se-serif);
	font-style: italic;
	color: var(--se-ink-soft);
}
.se-entry ul, .se-entry ol { margin: 0 0 1.1em; padding-left: 1.4em; }
.se-entry table { width: 100%; border-collapse: collapse; }
.se-entry th, .se-entry td { border: 1px solid var(--se-rule); padding: 8px; text-align: left; }

.se-entry .wp-caption,
.se-entry figure { max-width: 100%; margin: 1.2em 0; }
.se-entry .wp-caption-text,
.se-entry figcaption {
	font-family: var(--se-serif);
	font-style: italic;
	font-size: 13px;
	color: var(--se-ink-soft);
	padding-top: 6px;
}
.se-entry .alignleft  { float: left;  margin: 0 1.2em 1em 0; }
.se-entry .alignright { float: right; margin: 0 0 1em 1.2em; }
.se-entry .aligncenter { display: block; margin-inline: auto; }

.se-entry .gallery {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
	gap: 10px;
	margin: 1.4em 0;
}
.se-entry .gallery br { display: none; }
.se-entry .gallery-item { margin: 0; width: auto !important; }
.se-entry .gallery-item img {
	width: 100%;
	aspect-ratio: 1;
	object-fit: cover;
	border: 0 !important;
	display: block;
}

.se-feature { margin-bottom: 18px; box-shadow: var(--se-shadow); }
.se-feature img { display: block; width: 100%; }

.se-excerpt {
	font-size: 14px;
	font-weight: 700;
	color: var(--se-ink-soft);
	padding-bottom: 12px;
	margin-bottom: 12px;
	line-height: 1.4;
	border-bottom: 1px solid var(--se-rule);
}

.se-tags { margin: 20px 0 6px; display: flex; flex-wrap: wrap; gap: 6px; }
.se-tags a {
	display: inline-block;
	padding: 5px 8px;
	border: 1px solid rgba(0, 0, 0, 0.35);
	color: var(--se-ink);
	border-radius: 4px;
	text-transform: uppercase;
	font-size: 12px;
}
.se-tags a:hover { border-color: var(--se-blue); color: var(--se-blue); }

/* Prev / next */
.se-adjacent {
	display: grid;
	grid-template-columns: 1fr 1fr;
	border-top: 1px solid rgba(0, 0, 0, 0.1);
	margin-top: 20px;
}
.se-adjacent > div { padding: 26px 20px; text-align: center; }
.se-adjacent > div + div { border-left: 1px solid rgba(0, 0, 0, 0.1); }
.se-adjacent span {
	display: block;
	font-family: var(--se-serif);
	font-style: italic;
	font-size: 14px;
	color: var(--se-ink-soft);
	margin-bottom: 4px;
}
.se-adjacent a {
	display: block;
	font-size: 20px;
	font-weight: 700;
	font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
	color: var(--se-ink);
	line-height: 1.2;
	transition: opacity 0.3s ease;
}
.se-adjacent a:hover { opacity: 0.5; color: var(--se-ink); }

/* ==========================================================================
   Forms
   ========================================================================== */

.se-form { display: flex; flex-direction: column; gap: 16px; margin-top: 6px; }

.se-form__row { display: flex; flex-direction: column; gap: 6px; margin: 0; }

.se-form label {
	font-family: var(--se-sans);
	font-weight: 700;
	font-size: 14px;
	text-transform: uppercase;
	letter-spacing: 0.03em;
	color: var(--se-ink);
}

.se-form__req { color: #b3261e; }

.se-form input[type="text"],
.se-form input[type="email"],
.se-form textarea {
	font-family: var(--se-body);
	font-size: 16px;
	padding: 11px 12px;
	border: 1px solid #b9c0c4;
	border-radius: 3px;
	background: var(--se-paper);
	color: var(--se-ink);
	width: 100%;
	transition: border-color 0.18s ease, box-shadow 0.18s ease;
}

.se-form input:focus,
.se-form textarea:focus {
	outline: none;
	border-color: var(--se-blue-dark);
	box-shadow: 0 0 0 3px rgba(20, 119, 239, 0.22);
}

.se-form [aria-invalid="true"] { border-color: #b3261e; }

.se-form textarea { resize: vertical; min-height: 150px; }

.se-form__error { color: #b3261e; font-size: 14px; font-family: var(--se-body); }

.se-form__hint { color: var(--se-ink-soft); font-size: 13px; font-family: var(--se-body); }

.se-form__actions { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin: 4px 0 0; }

.se-form button[type="submit"] {
	font-family: var(--se-sans);
	font-weight: 700;
	text-transform: uppercase;
	font-size: 15px;
	letter-spacing: 0.04em;
	padding: 12px 26px;
	border: 0;
	border-radius: 3px;
	background: var(--se-blue-dark);
	color: var(--se-on-dark);
	cursor: pointer;
	transition: background 0.18s ease, transform 0.18s ease;
}
.se-form button[type="submit"]:hover { background: #0a3f80; transform: translateY(-1px); }

/* Honeypot: off-screen rather than display:none, which some bots detect. */
.se-form__trap {
	position: absolute;
	left: -9999px;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

.se-form__notice {
	font-family: var(--se-body);
	padding: 14px 18px;
	border-radius: 3px;
	margin: 0 0 16px;
	font-size: 15.5px;
}
.se-form__notice--ok  { background: #e0efe7; color: #1d5c42; border-left: 4px solid #2c6e52; }
.se-form__notice--bad { background: #fbe4e2; color: #8c1d18; border-left: 4px solid #b3261e; }

@media (prefers-reduced-motion: reduce) {
	.se-form button[type="submit"]:hover { transform: none; }
}

/* ==========================================================================
   Pagination
   ========================================================================== */

.se-pagination {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	justify-content: center;
	margin: 30px 0 10px;
}
.se-pagination .page-numbers {
	display: inline-block;
	padding: 8px 14px;
	color: var(--se-on-dark);
	font-weight: 700;
	font-size: 13px;
	text-transform: uppercase;
	border: 1px solid var(--se-on-dark);
	border-radius: 5px;
	transition: opacity 0.3s ease;
}
.se-pagination .page-numbers:hover { opacity: 0.5; color: var(--se-on-dark); }
.se-pagination .page-numbers.current {
	background: var(--se-on-dark);
	color: var(--se-bar-bottom);
}

/* ==========================================================================
   Footer
   ========================================================================== */

.se-footer {
	margin-top: 30px;
	background: var(--se-ground);
	border-top: 3px solid rgba(0, 0, 0, 0.4);
	box-shadow: var(--se-shadow);
	color: #333;
	padding: 26px 0;
}

.se-footer__inner {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: var(--se-gap);
}

.se-footer__logo {
	display: block;
	width: 150px;
	height: 42px;
	background: url('images/logo.png') no-repeat center / contain;
	/* the shipped logo is white for the dark masthead; invert it for the light footer */
	filter: invert(1);
	opacity: 0.75;
	text-indent: -9999px;
	overflow: hidden;
	flex: none;
}

.se-footer ul {
	display: flex;
	flex-wrap: wrap;
	gap: 20px;
	list-style: none;
	margin: 0;
	padding: 0;
}
.se-footer a { color: #333; font-weight: 500; }
.se-footer a:hover { color: var(--se-blue); }

.se-footer__desc { color: var(--se-ink-soft); font-size: 14px; max-width: 46ch; }
.se-footer__copyright { color: #333; font-size: 13px; width: 100%; }

/* ==========================================================================
   Motion

   Principles applied here:
   - Nothing is hidden unless JS is present (.se-js), so content never strands.
   - Short and small: 380ms ease-out over 12px. Enough to read as arrival,
     not enough to make anyone wait.
   - Stagger caps at 5 steps so the last card is never more than 200ms behind.
   - Nothing loops, nothing moves on its own except the hero, which the reader
     can pause by hovering or focusing.
   - Everything collapses to no-op under prefers-reduced-motion.
   ========================================================================== */

.se-js .se-reveal {
	opacity: 0;
	transform: translateY(12px);
}

.se-js .se-reveal.is-in {
	opacity: 1;
	transform: none;
	transition: opacity 0.38s ease-out, transform 0.38s ease-out;
	transition-delay: calc(var(--se-stagger, 0) * 45ms);
}

/* Interactive lift: signals the whole card is a target, not just the title. */
.se-card {
	transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.se-card:hover,
.se-card:focus-within {
	transform: translateY(-3px);
	box-shadow: 0 6px 18px rgba(0, 0, 0, 0.6);
}

.se-strip a { display: block; transition: transform 0.2s ease; }
.se-strip a:hover,
.se-strip a:focus-visible { transform: translateY(-3px); }

/* Mobile nav opens rather than snapping. */
.se-nav.is-open { animation: se-drop 0.24s ease-out; }
@keyframes se-drop {
	from { opacity: 0; transform: translateY(-6px); }
	to   { opacity: 1; transform: none; }
}

@media (prefers-reduced-motion: reduce) {
	.se-js .se-reveal,
	.se-js .se-reveal.is-in {
		opacity: 1;
		transform: none;
		transition: none;
	}
	.se-card:hover,
	.se-card:focus-within,
	.se-strip a:hover,
	.se-strip a:focus-visible { transform: none; }
	.se-nav.is-open { animation: none; }
}

/* ==========================================================================
   Responsive — the original was fixed at 940px and could not go narrower
   ========================================================================== */

@media (max-width: 900px) {
	.se-hero { grid-template-columns: 1fr; }
	.se-adjacent { grid-template-columns: 1fr; }
	.se-adjacent > div + div { border-left: 0; border-top: 1px solid rgba(0, 0, 0, 0.1); }
}

@media (max-width: 700px) {
	.se-nav-toggle { display: inline-block; }
	.se-nav {
		display: none;
		width: 100%;
		order: 3;
	}
	.se-nav.is-open { display: block; }
	.se-nav ul { flex-direction: column; justify-content: flex-start; }
	.se-nav li { width: 100%; border-top: 1px solid var(--se-hairline); }
	.se-nav a { width: 100%; padding: 14px 4px; }
	.se-topbar__inner { flex-wrap: wrap; padding-block: 10px; }
	.se-logo { width: 160px; height: 44px; }
	.se-metabar { justify-content: center; text-align: center; }
	.se-content-header h1 { letter-spacing: -1px; }
	.se-sheet { padding: 15px; }
	body { background-attachment: scroll; }
}

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after {
		animation-duration: 0.01ms !important;
		transition-duration: 0.01ms !important;
	}
	.se-slide { transition: none; }
}
