/* Journey route pages - shared core extracted from per-page styles.
   Page-specific deviations remain inline in each journey page and override this sheet. */

.skip-link {
position: absolute;
left: -999px;
top: 12px;
z-index: 30;
padding: 10px 14px;
border-radius: var(--radius);
background: var(--ink);
color: #ffffff;
}

.skip-link:focus {
left: 12px;
}

:root { --ink: #111827; --ink-soft: #334155; --muted: #64748b; --paper: #f7f9fc; --panel: #ffffff; --line: #d8e2ee; --blue-950: #122137; --blue-800: #1e3f63; --blue-650: #2d6090; --blue-100: #edf5fb; --blue-075: #f5f9fd; --radius: 8px; --font-display: "Segoe UI Variable Display", "Segoe UI", ui-sans-serif, system-ui, sans-serif; --font-text: "Segoe UI Variable Text", "Segoe UI", ui-sans-serif, system-ui, sans-serif; --font-ui: "Segoe UI Variable Small", "Segoe UI Variable Text", "Segoe UI", ui-sans-serif, system-ui, sans-serif; }

* { box-sizing: border-box; }

body { margin: 0; color: var(--ink); background: var(--paper); font-family: var(--font-text); line-height: 1.68; text-rendering: optimizeLegibility; }

a { color: var(--blue-800); text-underline-offset: 0.18em; }

h1, h2, h3, p { margin-top: 0; }

h1 { font-family: var(--font-display); font-weight: 840; line-height: 0.95; text-wrap: balance; }

h2 { margin-bottom: 16px; font-family: var(--font-display); font-size: clamp(1.75rem, 3.4vw, 2.55rem); font-weight: 820; line-height: 1.02; letter-spacing: 0; text-wrap: balance; }

h3 { margin-bottom: 10px; font-family: var(--font-text); font-size: clamp(1.08rem, 1.55vw, 1.22rem); font-weight: 780; line-height: 1.18; letter-spacing: 0; text-wrap: balance; }

ul { margin: 10px 0 0; padding-left: 1.15rem; }

li { margin: 7px 0; }

th { background: var(--blue-800); color: #ffffff; font-family: var(--font-ui); font-size: 0.78rem; letter-spacing: 0.06em; text-transform: uppercase; }

tr:last-child td { border-bottom: 0; }

tbody tr:hover { background: #e8f5f7; }

.page-shell, .nav-inner { width: min(1180px, calc(100% - 40px)); margin: 0 auto; }

.hero { position: relative; display: grid; align-items: end; min-height: clamp(360px, 44vh, 500px); padding: 92px 0 56px; overflow: hidden; background: radial-gradient(circle at top left, #1a1a1a 0%, rgba(26, 26, 26, 0) 58%), radial-gradient(circle at top right, #000061 0%, rgba(0, 0, 97, 0) 58%), radial-gradient(circle at bottom left, #003b8f 0%, rgba(0, 59, 143, 0) 62%), radial-gradient(circle at bottom right, #000026 0%, rgba(0, 0, 38, 0) 62%), linear-gradient(135deg, #1a1a1a 0%, #000026 100%); isolation: isolate; }

.hero::before {
content: "";
position: absolute;
inset: 0;
z-index: 0;
background-image: url("portfolio-operations-hero-1920.jpg");
background-image: image-set(url("portfolio-operations-hero-1920.webp") type("image/webp"), url("portfolio-operations-hero-1920.jpg") type("image/jpeg"));
background:
radial-gradient(circle at top left, #1a1a1a 0%, rgba(26, 26, 26, 0) 58%),
radial-gradient(circle at top right, #000061 0%, rgba(0, 0, 97, 0) 58%),
radial-gradient(circle at bottom left, #003b8f 0%, rgba(0, 59, 143, 0) 62%),
radial-gradient(circle at bottom right, #000026 0%, rgba(0, 0, 38, 0) 62%),
linear-gradient(135deg, #1a1a1a 0%, #000026 100%);
transform: translate3d(0, var(--hero-shift, 0px), 0) scale(1.12);
transform-origin: left bottom;
will-change: transform;
}

.portfolio-hero-filament-bg {
position: absolute;
inset: -9% -4% -13%;
z-index: 0;
overflow: hidden;
opacity: 1;
transform: translate3d(0, var(--hero-shift, 0px), 0) scale(1.08);
transform-origin: center bottom;
will-change: transform;
}

.portfolio-hero-filament-bg canvas,
.signal-field-canvas {
display: block;
width: 100%;
height: 100%;
}

.hero::after {
z-index: 1 !important;
pointer-events: none;
}

.hero .page-shell { position: relative; z-index: 2; }

.eyebrow { margin-bottom: 14px; color: var(--blue-650); font-family: var(--font-ui); font-size: 0.78rem; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; }

.hero .lead { max-width: 68ch; font-size: clamp(1.06rem, 1.35vw, 1.17rem); line-height: 1.72; text-wrap: pretty; }

.meta-row, .repo-links, .actions { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-top: 22px; }

.actions { gap: 10px; margin-top: 28px; }

.button {
display: inline-flex;
align-items: center;
justify-content: center;
max-width: 100%;
min-height: 46px;
padding: 11px 16px;
border: 1px solid var(--ink);
border-radius: var(--radius);
background: #ffffff;
color: var(--ink);
font-family: var(--font-ui);
font-size: 0.92rem;
font-weight: 800;
line-height: 1.2;
text-align: center;
text-decoration: none;
transition: transform 160ms ease, box-shadow 160ms ease, background 160ms ease, border-color 160ms ease;
}

.button.primary {
border-color: #b78936;
background: #b78936;
color: #14161c;
}

.button:hover {
transform: translateY(-1px);
box-shadow: 0 10px 28px rgba(15, 23, 42, 0.16);
}

.button:focus-visible {
outline: 3px solid rgba(47, 127, 149, 0.38);
outline-offset: 3px;
}

.inspection-path { counter-reset: inspect-path; display: grid; gap: 9px; margin-top: 22px; }

.inspection-path a { justify-content: flex-start; width: 100%; min-height: 42px; border-radius: var(--radius); }

.inspection-path a::before { counter-increment: inspect-path; content: counter(inspect-path); display: inline-grid; width: 24px; height: 24px; margin-right: 8px; place-items: center; border-radius: 999px; background: var(--blue-800); color: #ffffff; font-family: var(--font-ui); font-size: 0.76rem; font-weight: 900; flex: 0 0 auto; }

.local-nav { position: sticky; top: 0; z-index: 10; margin-bottom: calc(-1 * var(--nav-overlay-height, 52px)); border-bottom: 1px solid rgba(216,226,238,0.78); background: rgba(255,255,255,0.92); -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px); }

.nav-inner { display: flex; justify-content: space-between; align-items: center; gap: 18px; padding: 13px 0; }

.nav-title { display: inline-flex; align-items: center; min-height: 34px; color: var(--ink); font-family: var(--font-ui); font-weight: 850; line-height: 1.2; text-decoration: none; }

.nav-links { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }

.local-nav .nav-links a { display: inline-flex; align-items: center; min-height: 34px; color: var(--muted); font-family: var(--font-ui); font-size: 0.88rem; font-weight: 760; line-height: 1.2; text-decoration: none; padding: 6px 9px; border-radius: 999px; }

.local-nav .nav-links a[aria-current="page"] { color: var(--ink); background: #f7efe0; box-shadow: inset 0 0 0 1px rgba(183, 137, 54, 0.36); }

nav .page-shell { display: flex; justify-content: space-between; align-items: center; gap: 18px; min-height: 56px; }

nav .repo-links { margin-top: 0; justify-content: flex-end; }

nav strong { color: var(--ink); }

section { padding: 42px 0; border-bottom: 1px solid var(--line); }

/* Alternating section palette — overrides base border-bottom via higher specificity (0,0,1,2) */
main > section:nth-of-type(3n+1) {
background-color: #ffffff;
background: #ffffff;
border-top: 1px solid var(--line);
border-bottom: 1px solid var(--line);
}

main > section:nth-of-type(3n+2) {
background-color: #f5f6f7;
background: #f5f6f7;
border-top: 1px solid #e2e5ea;
border-bottom: 1px solid #e2e5ea;
}

main > section:nth-of-type(3n) {
background-color: #edf3fa;
background: #edf3fa;
border-top: 1px solid #d5e3f0;
border-bottom: 1px solid #d5e3f0;
}

.grid-2, .grid-3, .route { display: grid; gap: 14px; margin-top: 22px; }

.grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }

.grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }

.card, .callout { padding: 18px; }

.card p, .callout p { color: var(--muted); line-height: 1.64; text-wrap: pretty; }

.card p:last-child, .callout p:last-child { margin-bottom: 0; }

.step { padding: 16px; border-top: 5px solid var(--blue-650); background: linear-gradient(180deg, #ffffff 0%, var(--blue-075) 100%); }

@media (max-width: 980px) {
:root { --nav-overlay-height: 156px; }

.hero {
padding-top: calc(var(--nav-overlay-height, 156px) + 18px);
}

.nav-inner { align-items: flex-start; flex-direction: column; }

.portfolio-hero-filament-bg {
inset: -5% -18% -10%;
opacity: 0.82;
transform: translate3d(0, 0, 0) scale(1.02);
}
}

@media (max-width: 640px) {
.portfolio-hero-filament-bg {
inset: -3% -52% -8% -22%;
opacity: 0.72;
}

table {
display: block;
max-width: 100%;
overflow-x: auto;
}
}

@media (prefers-reduced-motion: reduce), (max-width: 980px) {
.hero::before,
.portfolio-hero-filament-bg {
transform: none;
}
}
