:root {
  --paper: #f2f0e8;
  --paper-2: #e8e5db;
  --ink: #132d38;
  --ink-soft: #425c64;
  --line: #b8c7c3;
  --line-strong: #78958e;
  --bathy: #2e7169;
  --bathy-bright: #6aa99c;
  --signal: #de694c;
  --signal-dark: #a84431;
  --arctic-snow: #668b85;
  --night: #0d1b22;
  --white: #fffdf6;
  --shadow: 0 20px 55px rgba(15, 35, 43, .12);
  --sans: "Aptos", "Segoe UI", system-ui, sans-serif;
  --serif: "Iowan Old Style", "Palatino Linotype", "Book Antiqua", Georgia, serif;
  --mono: "Cascadia Mono", "SFMono-Regular", Consolas, monospace;
}

:root[data-theme="night"] {
  --paper: #101d23;
  --paper-2: #17272e;
  --ink: #d9e4df;
  --ink-soft: #a7bab4;
  --line: #38534f;
  --line-strong: #5f817a;
  --bathy: #70aa9e;
  --bathy-bright: #95c9bc;
  --signal: #ee8064;
  --signal-dark: #ff9a80;
  --arctic-snow: #e3ede8;
  --white: #f2f1e8;
  --night: #081218;
  --shadow: 0 22px 60px rgba(0, 0, 0, .36);
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; background: var(--paper); }
body { margin: 0; color: var(--ink); background: var(--paper); font-family: var(--sans); font-size: 17px; line-height: 1.55; -webkit-font-smoothing: antialiased; }
a { color: inherit; text-decoration-thickness: 1px; text-underline-offset: .2em; }
img { display: block; max-width: 100%; }
button, input, textarea, select { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
a:focus-visible, button:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible { outline: 3px solid var(--signal); outline-offset: 3px; }
::selection { color: var(--white); background: var(--bathy); }

.skip-link { position: fixed; top: .5rem; left: .5rem; z-index: 100; padding: .6rem .9rem; color: var(--white); background: var(--ink); transform: translateY(-150%); }
.skip-link:focus { transform: none; }

.site-header { position: sticky; top: 0; z-index: 30; min-height: 78px; padding: 0 clamp(1.2rem, 4vw, 4.5rem); display: flex; align-items: center; justify-content: space-between; gap: 2rem; border-bottom: 1px solid color-mix(in srgb, var(--line) 72%, transparent); background: color-mix(in srgb, var(--paper) 92%, transparent); backdrop-filter: blur(16px); }
.wordmark { position: relative; display: grid; text-decoration: none; line-height: 1.1; }
.arctic-wordmark { grid-template-columns: max-content minmax(0, 1fr); grid-template-rows: auto auto; align-items: center; column-gap: .8rem; }
.arctic-wordmark .wordmark-name { grid-column: 1; grid-row: 1; }
.arctic-wordmark .wordmark-position { grid-column: 1; grid-row: 2; }
.arctic-wordmark > .arctic-signal { grid-column: 2; grid-row: 1 / 3; }
.wordmark-name { position: relative; z-index: 2; font-family: var(--serif); font-size: 1.25rem; font-weight: 700; letter-spacing: -.02em; }
.wordmark-position { min-height: 1rem; margin-top: .25rem; display: flex; align-items: center; gap: .45rem; }
.wordmark-coordinates { font-family: var(--mono); color: var(--ink-soft); font-size: .62rem; letter-spacing: .11em; text-transform: uppercase; }
.arctic-signal { --arctic-signal-inset: .65rem; position: relative; min-width: 0; padding-left: var(--arctic-signal-inset); display: grid; grid-template-columns: 6.25rem auto; grid-template-rows: 1.4rem 1.65rem; align-items: end; column-gap: .35rem; border-left: 1px solid var(--line-strong); color: var(--signal-dark); font-family: var(--mono); font-size: .78rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; white-space: nowrap; }
.arctic-label { position: relative; grid-column: 2; grid-row: 2; margin: -.18rem -.12rem -.12rem; padding: .18rem .12rem .12rem; display: inline-block; overflow: hidden; }
.arctic-label::before, .arctic-label::after { content: ""; position: absolute; inset: 0; pointer-events: none; background-image: radial-gradient(circle, var(--arctic-snow) 0 1px, transparent 1.25px), radial-gradient(circle, var(--arctic-snow) 0 .65px, transparent .9px); background-position: 2px -12px, 17px -18px; background-size: 29px 22px, 41px 27px; opacity: 0; animation: arctic-snowfall 4.8s linear infinite; }
.arctic-label::after { background-position: 11px -16px, 4px -12px; background-size: 37px 24px, 31px 29px; animation-delay: -2.35s; animation-duration: 5.7s; }
.arctic-track { position: relative; grid-column: 1; grid-row: 2; width: 6.25rem; height: 1.65rem; overflow: hidden; }
.arctic-aurora { grid-column: 1 / -1; grid-row: 1; align-self: end; z-index: 1; width: 100%; height: 1.4rem; overflow: hidden; pointer-events: none; }
.arctic-aurora-line { fill: none; stroke-linecap: round; stroke-width: 1.55; vector-effect: non-scaling-stroke; transform-box: fill-box; transform-origin: center; }
.arctic-aurora-line-a { stroke: #4fd4ad; filter: drop-shadow(0 0 2px rgba(79, 212, 173, .72)); stroke-dasharray: 58 12; animation: arctic-aurora-wave-a 5.6s ease-in-out infinite alternate; }
.arctic-aurora-line-b { stroke: #8fd3c3; filter: drop-shadow(0 0 2px rgba(143, 211, 195, .52)); stroke-dasharray: 40 9; animation: arctic-aurora-wave-b 4.7s ease-in-out infinite alternate; }
.arctic-aurora-line-c { stroke: #a38ed7; filter: drop-shadow(0 0 2px rgba(163, 142, 215, .62)); stroke-dasharray: 48 15; animation: arctic-aurora-wave-c 6.3s ease-in-out infinite alternate; }
.arctic-ice-floe { position: absolute; bottom: .12rem; z-index: 1; height: 1.18rem; }
.arctic-ice-floe::after { content: ""; position: absolute; right: 0; bottom: 0; left: 0; height: .34rem; background: #d5ede9; filter: drop-shadow(0 0 .7px #477d78) drop-shadow(0 1px 0 #5b9189); clip-path: polygon(4% 34%, 22% 8%, 73% 0, 98% 38%, 84% 82%, 28% 100%, 0 65%); }
.arctic-ice-floe-lead { left: .05rem; width: 1.58rem; animation: arctic-floe-lead 5.8s ease-in-out infinite alternate; }
.arctic-ice-floe-walrus { left: 2.35rem; width: 1.42rem; animation: arctic-floe-walrus 4.9s ease-in-out -2.4s infinite alternate; }
.arctic-ice-floe-cub { left: 4.85rem; width: 1.3rem; animation: arctic-floe-cub 6.4s ease-in-out -3.1s infinite alternate; }
.arctic-face { position: absolute; bottom: .19rem; left: 50%; z-index: 2; display: block; animation: arctic-face-bob .9s ease-in-out infinite alternate; }
.arctic-polar-face { font-size: .82rem; line-height: 1; filter: grayscale(.28) saturate(.78); transform: translateX(-50%); }
.arctic-ice-floe-cub .arctic-polar-face { font-size: .72rem; animation-delay: -.45s; }
.arctic-walrus-face { width: .78rem; height: .59rem; border-radius: 52% 52% 44% 44%; background: #98745f; box-shadow: inset 0 -.1rem #765643; transform: translateX(-50%); }
.arctic-walrus-face::before { content: ""; position: absolute; top: .16rem; left: .16rem; width: .08rem; height: .08rem; border-radius: 50%; background: #17272e; box-shadow: .37rem 0 #17272e; }
.arctic-walrus-face::after { content: ""; position: absolute; top: .29rem; left: .2rem; width: .38rem; height: .17rem; border-radius: 50%; background: #b99479; }
.arctic-walrus-face i::before, .arctic-walrus-face i::after { content: ""; position: absolute; top: .37rem; z-index: 1; width: .07rem; height: .25rem; background: #fff9e8; clip-path: polygon(0 0, 100% 0, 54% 100%); }
.arctic-walrus-face i::before { left: .22rem; transform: rotate(8deg); }
.arctic-walrus-face i::after { right: .22rem; transform: rotate(-8deg); }
@keyframes arctic-floe-lead { from { transform: translate(0, 0) rotate(-1.5deg); } to { transform: translate(.4rem, -.06rem) rotate(1.5deg); } }
@keyframes arctic-floe-walrus { from { transform: translate(.18rem, -.04rem) rotate(1deg); } to { transform: translate(-.2rem, .02rem) rotate(-1.8deg); } }
@keyframes arctic-floe-cub { from { transform: translate(0, .01rem) rotate(1.5deg); } to { transform: translate(-.42rem, -.07rem) rotate(-1deg); } }
@keyframes arctic-face-bob { from { margin-bottom: 0; } to { margin-bottom: .05rem; } }
@keyframes arctic-aurora-wave-a { from { transform: translate(-5px, 2px) scaleY(.62) skewX(-5deg); stroke-dashoffset: 0; opacity: .5; } to { transform: translate(6px, -1px) scaleY(1.22) skewX(4deg); stroke-dashoffset: -70; opacity: 1; } }
@keyframes arctic-aurora-wave-b { from { transform: translate(4px, -1px) scaleY(1.16) skewX(3deg); stroke-dashoffset: -18; opacity: .4; } to { transform: translate(-7px, 2px) scaleY(.72) skewX(-6deg); stroke-dashoffset: 42; opacity: .88; } }
@keyframes arctic-aurora-wave-c { from { transform: translate(-2px, 1px) scaleY(.8) skewX(5deg); stroke-dashoffset: 12; opacity: .45; } to { transform: translate(8px, -2px) scaleY(1.3) skewX(-4deg); stroke-dashoffset: -54; opacity: .92; } }
@keyframes arctic-snowfall { 0% { background-position: 2px -12px, 17px -18px; opacity: 0; } 18% { opacity: .76; } 78% { opacity: .5; } 100% { background-position: 2px 18px, 17px 15px; opacity: 0; } }
.site-nav { display: flex; align-items: center; gap: clamp(1rem, 2.4vw, 2rem); font-size: .84rem; font-weight: 700; letter-spacing: .045em; text-transform: uppercase; }
.site-nav a { position: relative; text-decoration: none; }
.site-nav a::after { content: ""; position: absolute; left: 0; right: 100%; bottom: -.45rem; height: 2px; background: var(--signal); transition: right .2s ease; }
.site-nav a:hover::after, .site-nav a[aria-current="page"]::after { right: 0; }
.theme-toggle, .menu-toggle { border: 1px solid var(--line); color: var(--ink); background: transparent; cursor: pointer; }
.theme-toggle { display: inline-flex; gap: .45rem; align-items: center; padding: .55rem .7rem; font-size: .68rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; }
.menu-toggle { display: none; padding: .55rem .75rem; }

.hero { position: relative; min-height: min(820px, calc(100vh - 78px)); display: grid; align-items: end; overflow: hidden; color: var(--white); background: var(--night); }
.hero-image, .hero-shade { position: absolute; inset: 0; }
.hero-image { background: url('/assets/images/hero-fairweather.webp') center 58% / cover no-repeat; transform: scale(1.008); }
.hero-shade { background: linear-gradient(90deg, rgba(5, 18, 24, .84) 0%, rgba(5, 18, 24, .46) 50%, rgba(5, 18, 24, .08) 74%), linear-gradient(0deg, rgba(5, 18, 24, .74), transparent 45%); }
.hero-content { position: relative; z-index: 2; width: min(1180px, 68vw); padding: clamp(5rem, 12vh, 9rem) clamp(1.2rem, 7vw, 7rem) clamp(5rem, 10vh, 8rem); }
.hero h1, .page-hero h1, .about-hero h1, .logbook-hero h1, .project-detail-title h1, .article-header h1, .not-found h1 { margin: .28em 0 .35em; font-family: var(--serif); font-weight: 600; letter-spacing: -.045em; line-height: .98; }
.hero h1 { max-width: min(920px, 52vw); font-size: clamp(3rem, 5.7vw, 6rem); text-wrap: balance; }
.hero-deck { max-width: 660px; margin: 0; font-size: clamp(1.08rem, 2vw, 1.4rem); color: rgba(255, 253, 246, .84); }
.kicker { margin: 0 0 .7rem; color: var(--bathy); font-family: var(--mono); font-size: .69rem; font-weight: 700; letter-spacing: .12em; line-height: 1.4; text-transform: uppercase; }
.kicker.light { color: #a9d1c8; }
.hero-actions { display: flex; flex-wrap: wrap; gap: .8rem; margin-top: 2rem; }
.button { min-height: 45px; padding: .74rem 1.05rem; display: inline-flex; align-items: center; justify-content: center; border: 1px solid transparent; border-radius: 1px; font-size: .76rem; font-weight: 800; letter-spacing: .055em; text-decoration: none; text-transform: uppercase; cursor: pointer; transition: transform .18s ease, background .18s ease, color .18s ease; }
.button:hover { transform: translateY(-2px); }
.button.signal { color: #fff; background: var(--signal); }
.button.signal:hover { background: var(--signal-dark); }
.button.ghost { color: var(--white); border-color: rgba(255,255,255,.55); background: rgba(0,0,0,.08); }
.button.ink { color: var(--paper); background: var(--ink); }
.button.paper { color: var(--ink); background: var(--paper); }
.button.outline { color: var(--ink); border-color: var(--line-strong); background: transparent; }
.duty-line { margin: 2.2rem 0 0; display: flex; align-items: center; gap: .55rem; font-size: .76rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; }
.status-light { width: 8px; height: 8px; border-radius: 50%; background: #9bd6a7; box-shadow: 0 0 0 4px rgba(155, 214, 167, .16); }
.bearing-track { position: absolute; z-index: 2; right: clamp(1rem, 4vw, 4rem); bottom: 1.35rem; left: clamp(1rem, 4vw, 4rem); display: flex; justify-content: space-between; color: rgba(255,255,255,.48); font: .6rem var(--mono); }
.bearing-track::before { content: ""; position: absolute; right: 0; bottom: 1.1rem; left: 0; height: 15px; border-top: 1px solid rgba(255,255,255,.35); background: repeating-linear-gradient(90deg, transparent 0 39px, rgba(255,255,255,.35) 40px 41px); }

.identity-strip { display: grid; grid-template-columns: repeat(3, 1fr); border-bottom: 1px solid var(--line); }
.identity-strip article { min-height: 250px; padding: clamp(2rem, 4vw, 4rem); border-right: 1px solid var(--line); }
.identity-strip article:last-child { border-right: 0; }
.identity-strip span { color: var(--signal); font: .72rem var(--mono); }
.identity-strip h2 { margin: 2.1rem 0 .35rem; font-family: var(--serif); font-size: clamp(1.7rem, 3vw, 2.55rem); }
.identity-strip p { max-width: 320px; margin: 0; color: var(--ink-soft); }

.section-shell { width: min(1240px, calc(100% - clamp(2.4rem, 8vw, 9rem))); margin-inline: auto; }
.feature-project, .project-shelf, .field-notes, .about-body, .about-path, .logbook-intro, .logbook-timeline, .return-note, .cv-body, .article-index, .media-body { padding-block: clamp(5rem, 10vw, 9rem); }
.section-heading { margin-bottom: 2.2rem; display: grid; grid-template-columns: minmax(0, 1fr) minmax(260px, .56fr); align-items: end; gap: 3rem; }
.section-heading.compact { align-items: center; }
.section-heading h2 { margin: 0; font-family: var(--serif); font-size: clamp(2.3rem, 5vw, 4.7rem); line-height: 1; letter-spacing: -.035em; }
.section-heading > p { margin: 0; color: var(--ink-soft); font-size: 1.08rem; }
.feature-frame { position: relative; min-height: 560px; display: block; overflow: hidden; color: #fff; background: var(--night); box-shadow: var(--shadow); }
.feature-frame img { width: 100%; height: 100%; min-height: 560px; object-fit: cover; object-position: center; transition: transform .5s ease; }
.feature-frame:hover img { transform: scale(1.015); }
.feature-caption { position: absolute; right: 0; bottom: 0; width: min(450px, 92%); padding: 1.2rem 1.4rem; display: grid; background: rgba(9, 28, 35, .92); }
.feature-caption strong { font-family: var(--serif); font-size: 1.25rem; }
.feature-caption span { color: rgba(255,255,255,.66); font-size: .73rem; letter-spacing: .05em; text-transform: uppercase; }
.project-actions { margin-top: 1.25rem; display: flex; align-items: center; gap: 1.4rem; }
.text-link { color: var(--ink); font-size: .78rem; font-weight: 800; letter-spacing: .045em; text-transform: uppercase; }

.project-shelf { border-top: 1px solid var(--line); }
.card-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: clamp(2rem, 5vw, 5rem); }
.project-card .card-image { aspect-ratio: 16 / 9; margin-bottom: 1.5rem; display: block; overflow: hidden; background: var(--paper-2); }
.project-card img { width: 100%; height: 100%; object-fit: cover; transition: transform .35s ease; }
.project-card .card-image:hover img { transform: scale(1.025); }
.project-card h3 { margin: .2rem 0 .4rem; font-family: var(--serif); font-size: clamp(1.8rem, 3vw, 2.7rem); }
.project-card h3 a { text-decoration: none; }
.project-card > p:not(.kicker) { max-width: 560px; color: var(--ink-soft); }

.return-story { display: grid; grid-template-columns: 1.08fr .92fr; color: var(--white); background: var(--night); }
.return-image { min-height: 670px; }
.return-image img { width: 100%; height: 100%; object-fit: cover; }
.return-copy { padding: clamp(3rem, 7vw, 7rem); display: flex; flex-direction: column; justify-content: center; }
.return-copy .kicker { color: #9ac8bd; }
.return-copy h2 { max-width: 620px; margin: .15em 0 .5em; font-family: var(--serif); font-size: clamp(3rem, 6.2vw, 6.8rem); font-weight: 600; letter-spacing: -.045em; line-height: .96; }
.return-copy p { max-width: 580px; color: rgba(255,255,255,.72); }
.return-copy .button { margin-top: 1rem; align-self: flex-start; }

.field-notes { border-bottom: 1px solid var(--line); }
.article-list { border-top: 1px solid var(--line); }
.article-list a { padding: 1.6rem 0; display: grid; grid-template-columns: 180px minmax(200px, .7fr) 1fr; gap: 2rem; align-items: baseline; border-bottom: 1px solid var(--line); text-decoration: none; }
.article-list span { font: .68rem var(--mono); color: var(--bathy); text-transform: uppercase; }
.article-list strong { font-family: var(--serif); font-size: 1.25rem; }
.article-list em { color: var(--ink-soft); font-style: normal; }
.empty-note, .empty-state { padding: 2.2rem; border-left: 4px solid var(--bathy); background: var(--paper-2); }

.page-hero { min-height: 500px; padding: clamp(5rem, 11vw, 10rem) clamp(1.2rem, 8vw, 8rem); display: flex; flex-direction: column; justify-content: flex-end; border-bottom: 1px solid var(--line); }
.grid-paper { background-color: var(--paper); background-image: linear-gradient(var(--line) 1px, transparent 1px), linear-gradient(90deg, var(--line) 1px, transparent 1px), linear-gradient(color-mix(in srgb, var(--line) 44%, transparent) 1px, transparent 1px), linear-gradient(90deg, color-mix(in srgb, var(--line) 44%, transparent) 1px, transparent 1px); background-size: 100px 100px, 100px 100px, 20px 20px, 20px 20px; }
.page-hero h1, .article-header h1, .not-found h1 { max-width: 1020px; font-size: clamp(2.8rem, 5.2vw, 5.5rem); }
.page-hero > p:last-child { max-width: 720px; color: var(--ink-soft); font-size: 1.15rem; }
.page-hero-photo { color: var(--white); background-color: var(--night); background-position: center; background-size: cover; }
.page-hero-photo .kicker, .article-header .kicker { color: #a9d1c8; }
.page-hero-photo > p:last-child, .page-hero-photo > div p:last-child, .article-header > p:last-child { color: rgba(255,255,255,.82); text-shadow: 0 1px 22px rgba(0,0,0,.3); }
.projects-hero { background-image: linear-gradient(90deg, rgba(5,17,22,.86), rgba(5,17,22,.52) 52%, rgba(5,17,22,.14)), url('/assets/images/header-projects-graphic.webp'); background-position: center; }
.articles-hero { background-image: linear-gradient(90deg, rgba(5,17,22,.88), rgba(5,17,22,.5) 56%, rgba(5,17,22,.12)), url('/assets/images/header-articles-aurora.webp'); background-position: center 50%; }
.cv-hero { background-image: linear-gradient(90deg, rgba(5,17,22,.87), rgba(5,17,22,.46) 58%, rgba(5,17,22,.1)), url('/assets/images/header-cv-sette.webp'); background-position: center 68%; }
.photography-hero { min-height: 620px; background-image: linear-gradient(90deg, rgba(5,17,22,.88), rgba(5,17,22,.44) 55%, rgba(5,17,22,.08)), url('/assets/images/header-photography-forest.webp'); background-position: center 62%; }
.project-index { padding-block: 3rem 8rem; }
.index-project { padding: 4.5rem 0; display: grid; grid-template-columns: 1.08fr .92fr; gap: clamp(2rem, 7vw, 7rem); align-items: center; border-bottom: 1px solid var(--line); }
.index-project:nth-child(even) .index-project-image { order: 2; }
.index-project-image { aspect-ratio: 16 / 10; display: block; overflow: hidden; background: var(--paper-2); }
.index-project-image img { width: 100%; height: 100%; object-fit: cover; }
.index-project-copy h2 { margin: .2rem 0 .45rem; font-family: var(--serif); font-size: clamp(2.3rem, 5vw, 4.7rem); letter-spacing: -.035em; line-height: 1; }
.index-project-copy h2 a { text-decoration: none; }
.index-project-copy > p { color: var(--ink-soft); }
.project-stack { font: .68rem var(--mono); letter-spacing: .04em; text-transform: uppercase; }

.project-detail-hero { min-height: 690px; display: grid; grid-template-columns: .9fr 1.1fr; background: var(--paper-2); }
.project-detail-title { padding: clamp(4rem, 8vw, 8rem); display: flex; flex-direction: column; justify-content: center; }
.project-detail-title h1 { font-size: clamp(3rem, 6vw, 6rem); }
.project-detail-title > p:not(.kicker) { max-width: 560px; color: var(--ink-soft); font-size: 1.12rem; }
.project-detail-hero > img { width: 100%; height: 100%; min-height: 690px; object-fit: cover; }
.project-detail-body { padding-block: 6rem; display: grid; grid-template-columns: 280px minmax(0, 700px); justify-content: center; gap: clamp(3rem, 8vw, 8rem); }
.project-detail-body aside div { padding: 1rem 0; display: grid; border-bottom: 1px solid var(--line); }
.project-detail-body aside span { font: .65rem var(--mono); color: var(--bathy); letter-spacing: .08em; text-transform: uppercase; }
.project-detail-body aside strong { margin-top: .35rem; font-size: .86rem; }
.prose { font-family: var(--serif); font-size: 1.11rem; line-height: 1.75; }
.prose h2, .prose h3 { margin: 2.4em 0 .5em; color: var(--ink); line-height: 1.15; }
.prose a { color: var(--bathy); }
.prose code { padding: .1em .3em; font: .85em var(--mono); background: var(--paper-2); }
.detail-nav { padding-bottom: 6rem; }

.article-index { max-width: 900px; }
.article-index > article { padding: 2.7rem 0; border-bottom: 1px solid var(--line); }
.article-index h2 { margin: 0 0 .35rem; font-family: var(--serif); font-size: 2.5rem; }
.article-index h2 a { text-decoration: none; }
.article-header { min-height: 560px; padding: clamp(5rem, 10vw, 9rem) max(1.2rem, calc((100vw - 940px) / 2)); display: flex; flex-direction: column; justify-content: flex-end; color: var(--white); background: linear-gradient(90deg, rgba(5,17,22,.88), rgba(5,17,22,.5) 56%, rgba(5,17,22,.12)), url('/assets/images/header-articles-aurora.webp') center 50% / cover; }
.article-header > p:last-child { max-width: 760px; color: rgba(255,255,255,.82); font-size: 1.15rem; }
.article-hero-image { width: min(1200px, calc(100% - 2.4rem)); max-height: 720px; margin: -2rem auto 5rem; object-fit: cover; box-shadow: var(--shadow); }
.article-prose { width: min(720px, calc(100% - 2.4rem)); margin: 5rem auto; }

.about-hero { min-height: 720px; display: grid; grid-template-columns: 1fr .68fr; color: var(--white); background: var(--night); }
.about-hero > div { padding: clamp(4rem, 8vw, 8rem); display: flex; flex-direction: column; justify-content: flex-end; }
.about-hero h1 { max-width: 850px; font-size: clamp(3rem, 5.4vw, 5.7rem); }
.about-hero img { width: 100%; height: 100%; object-fit: cover; object-position: center top; }
.about-body { display: grid; grid-template-columns: minmax(0, 720px) 300px; justify-content: center; gap: clamp(3rem, 9vw, 9rem); }
.lead-prose > p:first-child { font-size: 1.35rem; line-height: 1.55; }
.about-facts div { padding: 1.25rem 0; display: grid; border-bottom: 1px solid var(--line); }
.about-facts span { color: var(--bathy); font: .65rem var(--mono); letter-spacing: .08em; text-transform: uppercase; }
.about-facts strong { margin-top: .4rem; font-size: .88rem; }
.about-path { border-top: 1px solid var(--line); }
.route-line { position: relative; margin-top: 3rem; display: grid; grid-template-columns: repeat(6, 1fr); gap: 1.2rem; }
.route-line::before { content: ""; position: absolute; top: 7px; right: 0; left: 0; height: 1px; background: var(--line-strong); }
.route-line article { position: relative; padding-top: 2rem; }
.route-line article::before { content: ""; position: absolute; top: 1px; left: 0; width: 13px; height: 13px; border: 2px solid var(--paper); border-radius: 50%; background: var(--signal); box-shadow: 0 0 0 1px var(--signal); }
.route-line span { color: var(--signal); font: .73rem var(--mono); font-weight: 800; }
.route-line h2 { margin: .75rem 0 .35rem; font-family: var(--serif); font-size: 1.35rem; line-height: 1.1; }
.route-line p { color: var(--ink-soft); font-size: .86rem; }
.about-actions { margin-top: 3rem; display: flex; gap: .8rem; }

.logbook-hero { min-height: 720px; padding: clamp(5rem, 11vw, 10rem) clamp(1.2rem, 8vw, 8rem); display: flex; align-items: flex-end; color: var(--white); background: linear-gradient(90deg, rgba(5,17,22,.84), rgba(5,17,22,.22)), url('/assets/images/logbook/sailing-board-2009.webp') center / cover; }
.logbook-hero > div { max-width: 820px; }
.logbook-hero h1 { font-size: clamp(3.2rem, 6vw, 6.2rem); }
.logbook-hero p:last-child { max-width: 700px; color: rgba(255,255,255,.78); font-size: 1.12rem; }
.logbook-intro { max-width: 850px; padding-bottom: 2rem; font-family: var(--serif); font-size: 1.25rem; }
.logbook-timeline { padding-top: 3rem; }
.logbook-entry { padding: 4rem 0; display: grid; grid-template-columns: 1.08fr .92fr; gap: clamp(2rem, 7vw, 7rem); align-items: center; border-top: 1px solid var(--line); }
.logbook-entry.reverse .logbook-photo { order: 2; }
.logbook-photo { aspect-ratio: 16 / 10; overflow: hidden; background: var(--paper-2); }
.logbook-photo img { width: 100%; height: 100%; object-fit: cover; }
.logbook-copy h2 { margin: .2rem 0 .5rem; font-family: var(--serif); font-size: clamp(2.2rem, 4.5vw, 4.4rem); letter-spacing: -.035em; line-height: 1; }
.logbook-copy > p:not(.kicker) { color: var(--ink-soft); }
.return-note { margin-bottom: 6rem; padding: clamp(3rem, 6vw, 6rem); border: 1px solid var(--line); background: var(--paper-2); }
.return-note h2 { margin: .2rem 0 .5rem; font-family: var(--serif); font-size: clamp(2.3rem, 5vw, 4.7rem); line-height: 1; }
.return-note p { max-width: 720px; }

.cv-heading { display: grid; grid-template-columns: 1fr auto; align-items: end; }
.cv-heading h1 { margin-bottom: .15em; }
.cv-body { max-width: 980px; }
.cv-section-title { margin: 4rem 0 0; padding-bottom: .5rem; border-bottom: 2px solid var(--bathy); color: var(--bathy); font: .78rem var(--mono); letter-spacing: .09em; text-transform: uppercase; }
.cv-entry { padding: 1.4rem 0; display: grid; grid-template-columns: 1fr auto; gap: .5rem 2rem; border-bottom: 1px solid var(--line); }
.cv-entry h3 { margin: 0; font-family: var(--serif); font-size: 1.25rem; }
.cv-entry div p, .cv-entry > p { margin: .15rem 0 0; color: var(--ink-soft); }
.cv-entry > p { grid-column: 1 / -1; }
.cv-entry time { font: .7rem var(--mono); color: var(--ink-soft); }
.cv-entry .cv-entry-links { margin-top: .4rem; display: flex; flex-wrap: wrap; gap: .6rem 1.2rem; }
.cv-entry-links a { color: var(--bathy); font-size: .75rem; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; }
.cv-additional ul { columns: 2; padding-left: 1.2rem; }
.cv-additional li { margin-bottom: .55rem; break-inside: avoid; }

.music-hero { position: relative; min-height: 610px; display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(420px, .95fr); align-items: center; overflow: hidden; color: var(--white); background: var(--night); }
.music-hero::before { content: ""; position: absolute; inset: 0; opacity: .15; background-image: linear-gradient(rgba(255,255,255,.12) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.12) 1px, transparent 1px); background-size: 42px 42px; }
.music-hero-copy { position: relative; z-index: 1; max-width: 850px; padding: clamp(5rem, 10vw, 9rem) clamp(1.2rem, 7vw, 7rem); }
.music-hero h1 { margin: .2em 0 .35em; font-family: var(--serif); font-size: clamp(3.2rem, 6.3vw, 6.7rem); font-weight: 600; letter-spacing: -.05em; line-height: .93; text-wrap: balance; }
.music-hero-copy > p:last-child { max-width: 650px; margin: 0; color: rgba(255,255,255,.72); font-size: clamp(1.02rem, 1.7vw, 1.3rem); }
.music-hero-meter { position: relative; z-index: 1; min-height: 330px; margin: clamp(4rem, 8vw, 7rem) clamp(1.2rem, 6vw, 6rem) clamp(5rem, 8vw, 7rem) 0; padding: 1.5rem 1.5rem 1.1rem; display: grid; grid-template-rows: auto 1fr auto; border: 1px solid rgba(255,255,255,.34); background: #112a34; box-shadow: 18px 18px 0 rgba(222,105,76,.72); }
.meter-label { color: #a9d1c8; font: .65rem var(--mono); font-weight: 800; letter-spacing: .12em; text-transform: uppercase; }
.meter-bars { height: 230px; margin: 1.2rem 0 .8rem; display: flex; align-items: end; gap: clamp(4px, .55vw, 9px); border-bottom: 1px solid rgba(255,255,255,.3); }
.meter-bars i { min-height: 8px; flex: 1; display: block; background: var(--signal); }
.meter-bars .count-1, .year-bar .count-1 { height: 6%; }
.meter-bars .count-2, .year-bar .count-2 { height: 12%; }
.meter-bars .count-4, .year-bar .count-4 { height: 24%; }
.meter-bars .count-5, .year-bar .count-5 { height: 29%; }
.meter-bars .count-6, .year-bar .count-6 { height: 35%; }
.meter-bars .count-8, .year-bar .count-8 { height: 47%; }
.meter-bars .count-11, .year-bar .count-11 { height: 65%; }
.meter-bars .count-12, .year-bar .count-12 { height: 71%; }
.meter-bars .count-14, .year-bar .count-14 { height: 82%; }
.meter-bars .count-17, .year-bar .count-17 { height: 100%; }
.meter-bars i:nth-child(4n + 2) { background: #91c3b8; }
.meter-readout { display: flex; justify-content: space-between; gap: 1rem; color: rgba(255,255,255,.56); font: .62rem var(--mono); letter-spacing: .08em; }
.meter-readout strong { color: var(--white); font-weight: 800; }
.music-frequency-rule { position: absolute; z-index: 1; right: clamp(1.2rem, 4vw, 4rem); bottom: 1.2rem; left: clamp(1.2rem, 4vw, 4rem); padding-top: .65rem; display: flex; justify-content: space-between; border-top: 1px solid rgba(255,255,255,.28); color: rgba(255,255,255,.42); font: .55rem var(--mono); }

.music-profiles, .collection-profile, .concert-profile, .music-source-note { padding-block: clamp(5rem, 10vw, 9rem); }
.music-profile-grid { display: grid; grid-template-columns: repeat(4, 1fr); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.music-profile-link { min-height: 200px; padding: 1.5rem; display: grid; grid-template-columns: auto 1fr auto; align-items: end; gap: 1rem; border-right: 1px solid var(--line); text-decoration: none; transition: color .18s ease, background .18s ease; }
.music-profile-link:last-child { border-right: 0; }
.music-profile-link:hover { color: var(--paper); background: var(--ink); }
.music-profile-mark { width: 52px; height: 52px; display: block; background: currentColor; -webkit-mask: var(--service-icon) center / contain no-repeat; mask: var(--service-icon) center / contain no-repeat; }
.service-icon-discogs { --service-icon: url('/assets/icons/discogs.svg'); }
.service-icon-lastdotfm { --service-icon: url('/assets/icons/lastdotfm.svg'); }
.service-icon-spotify { --service-icon: url('/assets/icons/spotify.svg'); }
.service-icon-soundcloud { --service-icon: url('/assets/icons/soundcloud.svg'); }
.music-profile-link strong, .music-profile-link small { display: block; }
.music-profile-link strong { font-family: var(--serif); font-size: 1.4rem; }
.music-profile-link small { margin-top: .2rem; color: var(--ink-soft); font-size: .72rem; }
.music-profile-link:hover small { color: rgba(255,255,255,.62); }
.music-profile-arrow { align-self: start; font-size: 1.1rem; }

.listening-profile { padding-block: clamp(5rem, 10vw, 9rem); background: var(--paper-2); }
.listening-grid { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr); gap: 1px; border: 1px solid var(--line); background: var(--line); }
.lastfm-panel, .spotify-panel { min-width: 0; padding: clamp(1.6rem, 4vw, 3.5rem); background: var(--paper); }
.panel-heading { display: flex; align-items: end; justify-content: space-between; gap: 1.5rem; }
.panel-heading h3 { margin: 0; font-family: var(--serif); font-size: clamp(1.8rem, 3vw, 2.7rem); letter-spacing: -.03em; line-height: 1.05; }
.panel-heading > p { max-width: 320px; margin: 0; color: var(--ink-soft); font-size: .82rem; text-align: right; }
.panel-heading > p strong { color: var(--signal-dark); }
.listening-totals { margin: 2.4rem 0; display: grid; grid-template-columns: repeat(3, 1fr); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.listening-totals div { padding: 1.2rem 1rem; border-right: 1px solid var(--line); }
.listening-totals div:first-child { padding-left: 0; }
.listening-totals div:last-child { border-right: 0; }
.listening-totals dt, .concert-totals dt { color: var(--ink-soft); font: .62rem var(--mono); letter-spacing: .08em; text-transform: uppercase; }
.listening-totals dd, .concert-totals dd { margin: .25rem 0 0; font-family: var(--serif); font-size: clamp(1.5rem, 3vw, 2.6rem); font-weight: 700; letter-spacing: -.03em; line-height: 1; }
.listening-totals div:last-child dd { font-size: clamp(1.05rem, 1.8vw, 1.45rem); line-height: 1.35; }
.horizontal-chart { margin: 0; padding: 0; display: grid; gap: .85rem; list-style: none; }
.horizontal-chart li { display: grid; grid-template-columns: minmax(110px, 160px) minmax(80px, 1fr) 2.2rem; align-items: center; gap: .9rem; }
.chart-label { overflow: hidden; font-size: .78rem; font-weight: 800; text-overflow: ellipsis; white-space: nowrap; }
.chart-track { height: 8px; display: block; background: var(--paper-2); }
.chart-track i { height: 100%; display: block; background: var(--bathy); }
.horizontal-chart strong { color: var(--ink-soft); font: .7rem var(--mono); text-align: right; }
.lastfm-chart .chart-track i { background: var(--signal); }
.lastfm-chart .count-53 { width: 100%; }
.lastfm-chart .count-40 { width: 75%; }
.lastfm-chart .count-39 { width: 74%; }
.lastfm-chart .count-38 { width: 72%; }
.long-chart { margin: 0; padding: 0; display: grid; gap: .7rem; list-style: none; }
.long-chart li { display: grid; grid-template-columns: minmax(120px, 170px) minmax(80px, 1fr) 3.2rem; align-items: center; gap: .8rem; }
.long-chart svg, .year-artist-list svg { width: 100%; height: 6px; overflow: visible; background: var(--paper-2); }
.long-chart strong, .year-artist-list strong { color: var(--ink-soft); font: .68rem var(--mono); text-align: right; }
.listening-bar-fill { fill: var(--signal); }
.playlist-stack { margin: 2.1rem 0 0; padding: 0; border-top: 1px solid var(--line); list-style: none; }
.playlist-stack li { border-bottom: 1px solid var(--line); }
.playlist-stack a { min-height: 82px; padding: .9rem 0; display: grid; grid-template-columns: 2.3rem 1fr auto; align-items: center; gap: .9rem; text-decoration: none; }
.playlist-stack a:hover strong { color: var(--signal-dark); }
.playlist-stack strong, .playlist-stack small { display: block; }
.playlist-stack strong { font-family: var(--serif); font-size: 1.05rem; }
.playlist-stack small { margin-top: .12rem; color: var(--ink-soft); font-size: .72rem; }
.playlist-number { color: var(--signal); font: .65rem var(--mono); }
.spotify-summary { margin: 2rem 0 0; padding: 1rem 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); color: var(--ink-soft); font-size: .82rem; }
.spotify-summary strong { color: var(--ink); font-family: var(--mono); font-size: .7rem; letter-spacing: .06em; text-transform: uppercase; }

.listening-history { margin-bottom: clamp(2rem, 5vw, 4rem); padding: clamp(1.5rem, 4vw, 3rem); border: 1px solid var(--line); background: var(--paper); }
.history-heading { display: grid; grid-template-columns: 1fr minmax(280px, .55fr); align-items: end; gap: 2rem; }
.history-heading h3, .collection-grid h3 { margin: 0; font-family: var(--serif); font-size: clamp(2rem, 3.5vw, 3.2rem); letter-spacing: -.035em; line-height: 1; }
.year-dial-control { display: grid; gap: .65rem; }
.year-dial-control label { display: flex; align-items: baseline; justify-content: space-between; color: var(--ink-soft); font: .64rem var(--mono); letter-spacing: .08em; text-transform: uppercase; }
.year-dial-control output { color: var(--signal-dark); font-family: var(--serif); font-size: 2rem; font-weight: 700; letter-spacing: -.03em; }
.year-dial-control input { width: 100%; accent-color: var(--signal); cursor: ew-resize; }
.history-note { max-width: 820px; margin: 1.6rem 0; color: var(--ink-soft); font-size: .82rem; }
.genre-legend { margin: 0 0 1.6rem; padding: 0; display: flex; flex-wrap: wrap; gap: .65rem 1.2rem; list-style: none; }
.genre-legend li { display: inline-flex; align-items: center; gap: .4rem; color: var(--ink-soft); font: .62rem var(--mono); }
.genre-swatch { width: .65rem; height: .65rem; flex: 0 0 auto; display: inline-block; border-radius: 50%; }
.genre-fill-rock { fill: #c75a48; background: #c75a48; }
.genre-fill-bass { fill: #2e7169; background: #2e7169; }
.genre-fill-dance { fill: #6aa99c; background: #6aa99c; }
.genre-fill-pop { fill: #a879a8; background: #a879a8; }
.genre-fill-roots { fill: #c49a3f; background: #c49a3f; }
.genre-fill-acoustic { fill: #6684a3; background: #6684a3; }
.genre-fill-alternative { fill: #7f9451; background: #7f9451; }
.genre-timeline { padding: .3rem .2rem .8rem; display: flex; gap: clamp(.22rem, .55vw, .55rem); overflow-x: auto; scrollbar-width: thin; }
.genre-timeline button { min-width: 31px; padding: 0 0 .35rem; flex: 1 0 31px; display: grid; gap: .5rem; border: 0; border-bottom: 2px solid transparent; color: var(--ink-soft); background: transparent; cursor: pointer; }
.genre-timeline button:hover, .genre-timeline button[aria-pressed="true"] { border-bottom-color: var(--signal); color: var(--ink); }
.genre-timeline svg { width: 100%; height: 190px; border-bottom: 1px solid var(--line-strong); background: color-mix(in srgb, var(--paper-2) 76%, transparent); }
.genre-timeline span { font: .58rem var(--mono); text-align: center; }
.year-detail { margin-top: 2rem; padding-top: 2rem; border-top: 1px solid var(--line); }
.year-detail section { display: grid; grid-template-columns: minmax(190px, .42fr) minmax(0, 1fr); gap: clamp(2rem, 6vw, 6rem); }
.year-detail section[hidden] { display: none; }
.year-detail-copy h4 { margin: 0; font-family: var(--serif); font-size: clamp(3rem, 6vw, 5.5rem); letter-spacing: -.05em; line-height: .9; }
.year-detail-copy > p:last-child { max-width: 360px; color: var(--ink-soft); font-size: .78rem; }
.year-artist-list { margin: 0; padding: 0; display: grid; gap: .8rem; list-style: none; }
.year-artist-list li { display: grid; grid-template-columns: .8rem minmax(120px, 170px) minmax(80px, 1fr) 3rem; align-items: center; gap: .75rem; }

.collection-profile { border-bottom: 1px solid var(--line); }
.collection-totals { margin: 0 0 clamp(3rem, 7vw, 6rem); display: grid; grid-template-columns: repeat(4, 1fr); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.collection-totals div { min-height: 150px; padding: 1.4rem; display: flex; justify-content: space-between; flex-direction: column; border-right: 1px solid var(--line); }
.collection-totals div:first-child { padding-left: 0; }
.collection-totals div:last-child { border-right: 0; }
.collection-totals dt { color: var(--ink-soft); font: .62rem var(--mono); letter-spacing: .08em; text-transform: uppercase; }
.collection-totals dd { margin: 0; font-family: var(--serif); font-size: clamp(2.8rem, 5vw, 5rem); font-weight: 700; letter-spacing: -.05em; line-height: .9; }
.collection-grid { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(340px, .9fr); gap: clamp(2rem, 6vw, 6rem); }
.pressing-years, .format-overlap { min-width: 0; }
.decade-chart { min-height: 330px; margin: 3rem 0 0; padding: 0; display: grid; grid-template-columns: repeat(8, 1fr); align-items: end; gap: clamp(.4rem, 1vw, 1rem); list-style: none; }
.decade-chart li { height: 310px; display: grid; grid-template-rows: 1.5rem 250px 2rem; align-items: end; gap: .35rem; text-align: center; }
.decade-chart strong { color: var(--signal-dark); font: .68rem var(--mono); }
.decade-chart svg { width: 100%; height: 250px; border-bottom: 1px solid var(--line-strong); background-image: repeating-linear-gradient(0deg, transparent 0 48px, color-mix(in srgb, var(--line) 65%, transparent) 49px 50px); }
.decade-chart rect { fill: var(--bathy); }
.decade-chart span { color: var(--ink-soft); font: .58rem var(--mono); }
.format-overlap > p { color: var(--ink-soft); font-size: .84rem; }
.format-overlap ol { margin: 2rem 0 0; padding: 0; border-top: 1px solid var(--line); list-style: none; }
.format-overlap li { min-height: 70px; padding: .8rem 0; display: grid; grid-template-columns: 1fr auto; align-items: center; gap: .1rem 1rem; border-bottom: 1px solid var(--line); }
.format-overlap li strong { grid-row: 1 / 3; font-family: var(--serif); font-size: 1.05rem; }
.format-overlap li span { color: var(--ink-soft); font: .62rem var(--mono); text-align: right; }

.concert-totals { margin: 0 0 clamp(4rem, 8vw, 7rem); display: grid; grid-template-columns: repeat(4, 1fr); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.concert-totals div { min-height: 170px; padding: 1.6rem; display: flex; justify-content: space-between; flex-direction: column; border-right: 1px solid var(--line); }
.concert-totals div:first-child { padding-left: 0; }
.concert-totals div:last-child { border-right: 0; }
.concert-totals dd { font-size: clamp(2.6rem, 5vw, 5.3rem); }
.year-chart-panel { padding: clamp(1.5rem, 4vw, 3rem); border: 1px solid var(--line); }
.year-chart { min-width: 850px; min-height: 330px; margin: 3rem 0 0; padding: 0; display: grid; grid-template-columns: repeat(19, minmax(30px, 1fr)); align-items: end; gap: clamp(5px, .7vw, 12px); list-style: none; }
.year-chart li { min-height: 330px; display: grid; grid-template-rows: 1.4rem 270px 1.4rem; align-items: end; text-align: center; }
.year-value { color: var(--signal-dark); font: .65rem var(--mono); font-weight: 800; opacity: 0; transform: translateY(.25rem); transition: opacity .18s ease, transform .18s ease; }
.year-bar { height: 260px; display: flex; align-items: end; border-bottom: 1px solid var(--line-strong); background-image: repeating-linear-gradient(0deg, transparent 0 51px, color-mix(in srgb, var(--line) 65%, transparent) 52px 53px); }
.year-bar i { width: 100%; min-height: 4px; display: block; background: var(--bathy); transition: background .18s ease; }
.year-chart li:hover .year-bar i, .year-chart li:focus-visible .year-bar i { background: var(--signal-dark); }
.year-chart li:hover .year-value, .year-chart li:focus-visible .year-value { opacity: 1; transform: translateY(0); }
.year-chart li:focus-visible { outline: 2px solid var(--signal); outline-offset: 4px; }
.year-chart time { color: var(--ink-soft); font: .6rem var(--mono); }
.concert-breakdowns { margin-top: clamp(2rem, 5vw, 4rem); display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(2rem, 6vw, 6rem); }
.concert-breakdowns article { min-width: 0; }
.concert-breakdowns .horizontal-chart { margin-top: 2.2rem; }
.concert-breakdowns .horizontal-chart li { grid-template-columns: minmax(110px, 150px) minmax(80px, 1fr) 2rem; }
.artist-chart .chart-track i { background: var(--signal); }
.city-chart .count-32 { width: 100%; }
.city-chart .count-20 { width: 63%; }
.city-chart .count-15 { width: 47%; }
.city-chart .count-8 { width: 25%; }
.city-chart .count-5 { width: 16%; }
.artist-chart .count-5 { width: 100%; }
.artist-chart .count-4 { width: 80%; }
.artist-chart .count-3 { width: 60%; }

.repeat-signal { padding-block: clamp(5rem, 10vw, 9rem); color: var(--white); background: var(--night); }
.repeat-signal .section-heading h2 { color: var(--white); }
.repeat-signal .section-heading > p { color: rgba(255,255,255,.64); }
.signal-grid { display: grid; grid-template-columns: repeat(2, 1fr); border-top: 1px solid rgba(255,255,255,.25); border-left: 1px solid rgba(255,255,255,.25); }
.signal-grid article { min-height: 250px; padding: clamp(1.5rem, 3vw, 2.5rem); display: flex; align-items: flex-start; flex-direction: column; border-right: 1px solid rgba(255,255,255,.25); border-bottom: 1px solid rgba(255,255,255,.25); }
.signal-grid h3 { margin: 1.8rem 0 .35rem; font-family: var(--serif); font-size: clamp(1.6rem, 2.5vw, 2.3rem); }
.signal-grid p { max-width: 330px; margin: 0 0 1.4rem; color: rgba(255,255,255,.62); font-size: .86rem; }
.signal-grid strong { margin-top: auto; color: #a9d1c8; font: .67rem var(--mono); letter-spacing: .08em; text-transform: uppercase; }
.signal-pulse { position: relative; width: 12px; height: 12px; display: block; border: 1px solid var(--signal); border-radius: 50%; }
.signal-pulse::after { content: ""; position: absolute; inset: 3px; border-radius: inherit; background: var(--signal); }
.music-source-note { max-width: 900px; }
.music-source-note > p:last-child { margin: 0; color: var(--ink-soft); font-size: .86rem; }

.outdoors-hero { position: relative; min-height: 610px; padding: clamp(5rem, 9vw, 8rem) clamp(1.2rem, 7vw, 7rem) 5rem; display: grid; grid-template-columns: minmax(0, 1.08fr) minmax(380px, .72fr); align-items: center; gap: clamp(3rem, 8vw, 8rem); overflow: hidden; color: var(--white); background-color: var(--night); }
.outdoors-hero::before { content: ""; position: absolute; inset: -20%; opacity: .18; background-image: repeating-radial-gradient(ellipse at 76% 52%, transparent 0 29px, rgba(149,201,188,.72) 30px 31px, transparent 32px 54px); transform: rotate(-8deg); }
.outdoors-hero-copy, .outdoors-hero-log { position: relative; z-index: 1; }
.outdoors-hero-copy { max-width: 820px; }
.outdoors-hero h1 { margin: .2em 0 .35em; font-family: var(--serif); font-size: clamp(3.4rem, 6.5vw, 7rem); font-weight: 600; letter-spacing: -.055em; line-height: .92; text-wrap: balance; }
.outdoors-hero-copy > p:last-child { max-width: 650px; margin: 0; color: rgba(255,255,255,.7); font-size: clamp(1.02rem, 1.7vw, 1.3rem); }
.outdoors-hero-log { min-height: 355px; padding: 1.35rem; border: 1px solid rgba(255,255,255,.35); background: #102933; box-shadow: 17px 17px 0 rgba(222,105,76,.7); }
.outdoors-log-heading { display: flex; justify-content: space-between; color: #a9d1c8; font: .64rem var(--mono); letter-spacing: .1em; text-transform: uppercase; }
.outdoors-log-heading strong { color: var(--white); }
.outdoors-elevation-profile { width: 100%; height: 205px; margin: .65rem 0 .35rem; overflow: visible; }
.outdoors-elevation-profile path { fill: rgba(106,169,156,.2); stroke: #8fd3c3; stroke-width: 2; vector-effect: non-scaling-stroke; }
.outdoors-elevation-profile line { stroke: rgba(255,255,255,.28); stroke-width: 1; vector-effect: non-scaling-stroke; }
.outdoors-hero-log dl { margin: 0; display: grid; grid-template-columns: repeat(3, 1fr); border-top: 1px solid rgba(255,255,255,.23); }
.outdoors-hero-log dl div { padding: .8rem .7rem 0; border-right: 1px solid rgba(255,255,255,.18); }
.outdoors-hero-log dl div:first-child { padding-left: 0; }
.outdoors-hero-log dl div:last-child { border-right: 0; }
.outdoors-hero-log dt { color: rgba(255,255,255,.58); font: .54rem var(--mono); letter-spacing: .06em; text-transform: uppercase; }
.outdoors-hero-log dd { margin: .25rem 0 0; font: 1.25rem var(--serif); }
.outdoors-coordinate-rule { position: absolute; right: clamp(1.2rem, 7vw, 7rem); bottom: 1.2rem; left: clamp(1.2rem, 7vw, 7rem); z-index: 1; display: flex; justify-content: space-between; color: rgba(255,255,255,.38); font: .53rem var(--mono); letter-spacing: .08em; }
.outdoors-coordinate-rule::before { content: ""; position: absolute; top: -.45rem; right: 0; left: 0; border-top: 1px solid rgba(255,255,255,.2); }

.adventure-record { padding-block: clamp(5rem, 10vw, 9rem) clamp(3rem, 7vw, 6rem); }
.adventure-controls { margin: 2.5rem 0 1rem; padding: 1rem; display: flex; align-items: center; justify-content: space-between; gap: 1.5rem; border: 1px solid var(--line); background: var(--paper-2); }
.adventure-filter-group { display: flex; flex-wrap: wrap; gap: .35rem; }
.adventure-filter-group button { border: 1px solid var(--line-strong); color: var(--ink); background: transparent; cursor: pointer; font: .61rem var(--mono); font-weight: 800; letter-spacing: .055em; text-transform: uppercase; }
.adventure-filter-group button { min-height: 36px; padding: .55rem .75rem; }
.adventure-filter-group button:hover, .adventure-filter-group button[aria-pressed="true"] { color: var(--white); border-color: var(--bathy); background: var(--bathy); }
.adventure-year-control { min-width: min(285px, 100%); display: grid; gap: .35rem; }
.adventure-year-control label { display: flex; justify-content: space-between; color: var(--ink-soft); font: .63rem var(--mono); font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }
.adventure-year-control output { color: var(--signal-dark); font-size: .8rem; }
.adventure-year-control input { width: 100%; accent-color: var(--signal); }
.adventure-map-layout { display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(245px, .45fr); border: 1px solid var(--line); }
.adventure-map-frame { position: relative; min-width: 0; min-height: 510px; display: grid; grid-template-rows: 1fr auto; border-right: 1px solid var(--line); background: #dbe4de; }
:root[data-theme="night"] .adventure-map-frame { background: #10232b; }
.adventure-map-svg { width: 100%; height: 100%; min-height: 450px; display: block; cursor: grab; touch-action: none; }
.adventure-map-svg.is-panning { cursor: grabbing; }
.adventure-map-graticule line { stroke: rgba(19,45,56,.16); stroke-width: 1; vector-effect: non-scaling-stroke; }
:root[data-theme="night"] .adventure-map-graticule line { stroke: rgba(217,228,223,.14); }
.adventure-map-land path { fill: rgba(242,240,232,.83); stroke: rgba(19,45,56,.35); stroke-width: .65; vector-effect: non-scaling-stroke; }
:root[data-theme="night"] .adventure-map-land path { fill: #1c3840; stroke: rgba(169,209,200,.38); }
.adventure-map-point { cursor: pointer; stroke: #fffdf6; stroke-width: 1.5; vector-effect: non-scaling-stroke; transition: r .15s ease, opacity .15s ease, stroke-width .15s ease; }
.adventure-map-point:hover, .adventure-map-point:focus { stroke: var(--signal); stroke-width: 3; outline: none; }
.adventure-map-point.is-muted { opacity: .25; }
.adventure-map-point-walk { fill: #2e7169; }
.adventure-map-point-run { fill: #de694c; }
.adventure-map-point-trail { fill: #173b47; }
.adventure-map-point-ride { fill: #c18d34; }
.adventure-map-point-water { fill: #3b7ea2; }
.adventure-map-point-snow { fill: #9cbab4; }
.adventure-map-point-other { fill: #667d78; }
.adventure-map-trip { fill: var(--signal); stroke: var(--white); stroke-width: 1.5; cursor: pointer; vector-effect: non-scaling-stroke; }
.adventure-map-trip:hover, .adventure-map-trip:focus { fill: #ffb09b; stroke-width: 3; outline: none; }
.adventure-map-legend { padding: .7rem 1rem; display: flex; gap: 1.4rem; color: #284951; border-top: 1px solid rgba(19,45,56,.16); font: .57rem var(--mono); letter-spacing: .055em; text-transform: uppercase; }
:root[data-theme="night"] .adventure-map-legend { color: #a9d1c8; border-color: rgba(217,228,223,.14); }
.adventure-map-legend span { display: flex; align-items: center; gap: .45rem; }
.adventure-map-legend i { width: 10px; height: 10px; display: inline-block; }
.adventure-map-legend .activity-mark { border-radius: 50%; background: var(--bathy); }
.adventure-map-legend .trip-mark { background: var(--signal); transform: rotate(45deg); }
.adventure-map-tools { position: absolute; top: .8rem; left: .8rem; z-index: 2; display: flex; box-shadow: 0 5px 18px rgba(13,27,34,.18); }
.adventure-map-tools button { min-width: 38px; min-height: 36px; padding: .35rem .65rem; color: #173b47; border: 1px solid rgba(19,45,56,.35); border-right: 0; background: rgba(255,253,246,.92); cursor: pointer; font: .65rem var(--mono); font-weight: 800; text-transform: uppercase; }
.adventure-map-tools button:last-child { border-right: 1px solid rgba(19,45,56,.35); }
.adventure-map-tools button:hover { color: var(--white); background: var(--bathy); }
.adventure-map-status { position: absolute; inset: 0; margin: 0; display: grid; place-items: center; color: var(--ink-soft); background: color-mix(in srgb, var(--paper) 88%, transparent); font: .67rem var(--mono); letter-spacing: .05em; text-transform: uppercase; }
.adventure-map-status[hidden] { display: none; }
.adventure-map-detail { min-height: 510px; padding: clamp(1.4rem, 3vw, 2.5rem); display: flex; flex-direction: column; }
.adventure-map-detail h3 { margin: .35rem 0 .7rem; font: clamp(1.8rem, 3vw, 2.8rem) var(--serif); letter-spacing: -.035em; line-height: 1; }
.adventure-map-detail > p:not(.kicker) { margin: 0; color: var(--ink-soft); font-size: .84rem; }
.adventure-map-detail dl { margin: auto 0 0; border-top: 1px solid var(--line); }
.adventure-map-detail dl div { padding: .75rem 0; display: flex; justify-content: space-between; border-bottom: 1px solid var(--line); }
.adventure-map-detail dt { color: var(--ink-soft); font: .58rem var(--mono); letter-spacing: .06em; text-transform: uppercase; }
.adventure-map-detail dd { margin: 0; font-family: var(--serif); }

.adventure-totals { margin: 0 auto clamp(5rem, 9vw, 8rem); display: grid; grid-template-columns: repeat(4, 1fr); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.adventure-totals div { min-height: 170px; padding: 1.5rem; display: flex; justify-content: space-between; flex-direction: column; border-right: 1px solid var(--line); }
.adventure-totals div:first-child { padding-left: 0; }
.adventure-totals div:last-child { border-right: 0; }
.adventure-totals dt { color: var(--ink-soft); font: .6rem var(--mono); letter-spacing: .06em; text-transform: uppercase; }
.adventure-totals dd { min-width: 0; margin: 0; display: flex; align-items: baseline; gap: .45rem; white-space: nowrap; font: clamp(2.35rem, 4.25vw, 5.2rem) var(--serif); letter-spacing: -.05em; line-height: .86; }
.adventure-totals small { flex: 0 0 auto; font: .62rem var(--mono); letter-spacing: .05em; text-transform: uppercase; }

.adventure-seasons, .adventure-records { padding-block: clamp(5rem, 10vw, 9rem); color: var(--white); background: var(--night); }
.adventure-seasons .section-heading h2, .adventure-records .section-heading h2 { color: var(--white); }
.adventure-seasons .section-heading > p, .adventure-records .section-heading > p { color: rgba(255,255,255,.63); }
.adventure-category-legend { margin: 2rem 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: .7rem 1.4rem; list-style: none; color: rgba(255,255,255,.7); font: .58rem var(--mono); letter-spacing: .05em; text-transform: uppercase; }
.adventure-category-legend li { display: flex; align-items: center; gap: .45rem; }
.adventure-swatch { width: 9px; height: 9px; display: inline-block; }
.adventure-fill-walk { fill: #6aa99c; background: #6aa99c; }
.adventure-fill-run { fill: #de694c; background: #de694c; }
.adventure-fill-trail { fill: #d7e3de; background: #d7e3de; }
.adventure-fill-ride { fill: #d7aa51; background: #d7aa51; }
.adventure-fill-water { fill: #4f88a8; background: #4f88a8; }
.adventure-fill-snow { fill: #a9d1c8; background: #a9d1c8; }
.adventure-fill-other { fill: #718981; background: #718981; }
.adventure-month-chart { min-height: 330px; margin: 3rem 0 0; padding: 0; display: grid; grid-template-columns: repeat(12, 1fr); align-items: end; gap: clamp(.35rem, 1vw, 1rem); list-style: none; }
.adventure-month-chart li { height: 320px; display: grid; grid-template-rows: 1.4rem 260px 1.5rem; align-items: end; gap: .25rem; text-align: center; }
.adventure-month-chart li:focus-visible { outline: 2px solid var(--signal); outline-offset: 4px; }
.adventure-month-chart strong { color: #a9d1c8; font: .62rem var(--mono); opacity: 0; transform: translateY(.2rem); transition: opacity .15s ease, transform .15s ease; }
.adventure-month-chart li:hover strong, .adventure-month-chart li:focus-visible strong { opacity: 1; transform: none; }
.adventure-month-chart svg { width: 100%; height: 260px; overflow: visible; border-bottom: 1px solid rgba(255,255,255,.32); background-image: repeating-linear-gradient(0deg, transparent 0 51px, rgba(255,255,255,.09) 52px 53px); }
.adventure-month-chart span { color: rgba(255,255,255,.58); font: .56rem var(--mono); text-transform: uppercase; }

.adventure-steps { padding-block: clamp(5rem, 10vw, 9rem); }
.adventure-step-layout { display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(245px, .45fr); border: 1px solid var(--line); }
.adventure-step-chart { min-width: 0; padding: clamp(1rem, 3vw, 2.2rem); overflow-x: auto; border-right: 1px solid var(--line); background: var(--paper-2); }
.adventure-step-chart svg { width: 100%; min-width: 720px; height: 350px; display: block; overflow: visible; }
.adventure-step-chart line { stroke: var(--line); stroke-width: 1; vector-effect: non-scaling-stroke; }
.adventure-step-chart text { fill: var(--ink-soft); font: 18px var(--mono); }
.adventure-step-chart .adventure-step-year { font-size: 15px; text-anchor: middle; }
.adventure-step-area { fill: color-mix(in srgb, var(--bathy) 20%, transparent); }
.adventure-step-line { fill: none; stroke: var(--bathy); stroke-width: 3; vector-effect: non-scaling-stroke; }
.adventure-step-totals { margin: 0; display: grid; grid-template-rows: repeat(4, 1fr); }
.adventure-step-totals div { padding: 1.1rem 1.4rem; display: flex; justify-content: space-between; flex-direction: column; border-bottom: 1px solid var(--line); }
.adventure-step-totals div:last-child { border-bottom: 0; }
.adventure-step-totals dt { color: var(--ink-soft); font: .56rem var(--mono); letter-spacing: .05em; text-transform: uppercase; }
.adventure-step-totals dd { margin: .25rem 0 0; font: clamp(1.8rem, 3vw, 2.8rem) var(--serif); letter-spacing: -.035em; }
.adventure-step-peaks { margin-top: clamp(2rem, 5vw, 4rem); display: grid; grid-template-columns: repeat(5, 1fr); border-top: 1px solid var(--line); border-left: 1px solid var(--line); }
.adventure-step-peaks article { min-height: 240px; padding: clamp(1.1rem, 2vw, 1.7rem); display: flex; flex-direction: column; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.adventure-step-peaks strong { margin: .8rem 0; font: clamp(1.7rem, 2.7vw, 2.8rem) var(--serif); letter-spacing: -.04em; white-space: nowrap; }
.adventure-step-peaks strong small { font: .55rem var(--mono); letter-spacing: .04em; text-transform: uppercase; }
.adventure-step-peaks article > p:last-child { margin: auto 0 0; color: var(--ink-soft); font-size: .77rem; }

.adventure-record-grid { margin-top: 3rem; display: grid; grid-template-columns: repeat(4, 1fr); border-top: 1px solid rgba(255,255,255,.23); border-left: 1px solid rgba(255,255,255,.23); }
.adventure-record-grid article { position: relative; min-height: 290px; padding: clamp(1.3rem, 2.8vw, 2.2rem); display: flex; flex-direction: column; border-right: 1px solid rgba(255,255,255,.23); border-bottom: 1px solid rgba(255,255,255,.23); }
.adventure-record-grid article > span { position: absolute; top: 1rem; right: 1rem; color: #a9d1c8; font: .6rem var(--mono); }
.adventure-record-grid strong { margin: 1.25rem 0 .8rem; display: flex; align-items: baseline; flex-wrap: wrap; gap: .45rem; font: clamp(2.2rem, 4vw, 4rem) var(--serif); letter-spacing: -.05em; line-height: .9; }
.adventure-record-grid strong small { font: .58rem var(--mono); letter-spacing: .05em; text-transform: uppercase; }
.adventure-record-grid article > p:not(.kicker) { margin: 0; color: rgba(255,255,255,.62); font-size: .79rem; }
.adventure-record-grid footer { margin-top: auto; padding-top: 1.5rem; color: #a9d1c8; font: .56rem var(--mono); letter-spacing: .03em; text-transform: uppercase; }

.media-body { max-width: 1080px; }
.media-intro { max-width: 760px; }
.media-intro h2 { margin: .15em 0 .5em; font-family: var(--serif); font-size: clamp(2.6rem, 5vw, 5rem); font-weight: 600; letter-spacing: -.04em; line-height: 1; }
.media-intro > p:last-child { max-width: 680px; color: var(--ink-soft); font-size: 1.12rem; }
.media-destinations { margin-top: clamp(3rem, 7vw, 6rem); display: grid; grid-template-columns: repeat(2, 1fr); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.media-destinations article { min-height: 330px; padding: clamp(2rem, 5vw, 4rem); display: flex; align-items: flex-start; flex-direction: column; border-right: 1px solid var(--line); }
.media-destinations article:last-child { border-right: 0; }
.media-service-heading { display: flex; align-items: center; align-self: stretch; }
.media-service-heading img { width: 58px; height: 58px; object-fit: contain; }
.media-destinations h2 { margin: 1.6rem 0 .4rem; font-family: var(--serif); font-size: clamp(2rem, 4vw, 3.5rem); letter-spacing: -.03em; }
.media-destinations p { max-width: 380px; margin: 0 0 2rem; color: var(--ink-soft); }
.media-destinations .button { margin-top: auto; }

.not-found { min-height: 72vh; padding: clamp(5rem, 10vw, 10rem); display: flex; flex-direction: column; justify-content: center; align-items: flex-start; }
.not-found p:not(.kicker) { color: var(--ink-soft); }

.site-footer { padding: clamp(2.5rem, 5vw, 4.5rem) clamp(1.2rem, 7vw, 7rem) 2rem; display: grid; grid-template-columns: auto 1fr; align-items: start; gap: 2.5rem 4rem; color: var(--white); background: var(--night); }
.footer-identity { display: grid; gap: .3rem; }
.footer-name { font-family: var(--serif); font-size: 1.2rem; font-weight: 700; letter-spacing: -.02em; text-decoration: none; }
.footer-identity p { margin: 0; color: rgba(255,255,255,.56); font-size: .72rem; }
.footer-links { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: .7rem 1.4rem; font-size: .72rem; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; }
.footer-links a { text-decoration: none; }
.disclaimer { grid-column: 1 / -1; max-width: 900px; padding-top: 2rem; border-top: 1px solid rgba(255,255,255,.17); color: rgba(255,255,255,.58); font-size: .76rem; }
.copyright { grid-column: 1 / -1; margin: 0; color: rgba(255,255,255,.42); font: .63rem var(--mono); }

.admin-body { background: var(--paper-2); }
.admin-bar { padding: .6rem clamp(1.2rem, 4vw, 4.5rem); display: flex; align-items: center; gap: 1.2rem; overflow-x: auto; color: #fff; background: var(--bathy); font-size: .72rem; font-weight: 800; text-transform: uppercase; }
.admin-bar a, .admin-bar button { white-space: nowrap; color: inherit; background: none; border: 0; cursor: pointer; }
.admin-bar form { margin-left: auto; }
.admin-login { min-height: 72vh; padding: 3rem 1.2rem; display: grid; place-items: center; }
.admin-card { width: min(460px, 100%); padding: clamp(2rem, 5vw, 4rem); border: 1px solid var(--line); background: var(--paper); box-shadow: var(--shadow); }
.admin-card h1, .admin-heading h1 { margin: .1em 0 .45em; font-family: var(--serif); font-size: clamp(2.5rem, 5vw, 4.5rem); letter-spacing: -.035em; }
.admin-shell { width: min(1120px, calc(100% - 2.4rem)); min-height: 65vh; margin: 0 auto; padding: 5rem 0 8rem; }
.admin-heading { margin-bottom: 2rem; }
.admin-heading > p:last-child { max-width: 700px; color: var(--ink-soft); }
.admin-heading.split { display: flex; justify-content: space-between; align-items: end; gap: 2rem; }
.admin-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; }
.admin-grid a { min-height: 180px; padding: 1.5rem; display: flex; flex-direction: column; justify-content: space-between; border: 1px solid var(--line); text-decoration: none; background: var(--paper); }
.admin-grid strong { font-family: var(--serif); font-size: 1.5rem; }
.admin-grid span { color: var(--ink-soft); font-size: .86rem; }
.admin-inline-action { margin-top: 1rem; padding: 1.5rem; display: flex; align-items: center; justify-content: space-between; gap: 1rem; border: 1px solid var(--line); background: var(--paper); }
.admin-inline-action div { display: grid; }
.admin-inline-action span { color: var(--ink-soft); font-size: .82rem; }
.admin-table-wrap { overflow-x: auto; border: 1px solid var(--line); background: var(--paper); }
.admin-table { width: 100%; border-collapse: collapse; }
.admin-table th, .admin-table td { padding: .9rem 1rem; text-align: left; border-bottom: 1px solid var(--line); }
.admin-table th { font: .64rem var(--mono); color: var(--ink-soft); letter-spacing: .07em; text-transform: uppercase; }
.admin-table td:first-child { min-width: 260px; }
.admin-table td small { margin-top: .15rem; display: block; color: var(--ink-soft); font: .64rem var(--mono); }
.text-button { padding: 0; color: var(--ink); border: 0; background: transparent; font-size: .74rem; font-weight: 800; cursor: pointer; text-decoration: underline; }
.text-button.danger { color: var(--signal-dark); }
.editor-form, .media-upload { padding: clamp(1.2rem, 4vw, 3rem); display: grid; gap: 1.25rem; border: 1px solid var(--line); background: var(--paper); }
.editor-form.narrow { max-width: 850px; }
.editor-form label, .admin-card label, .media-upload label { display: grid; gap: .35rem; color: var(--ink-soft); font-size: .78rem; font-weight: 800; letter-spacing: .03em; }
.editor-form input, .editor-form textarea, .editor-form select, .admin-card input, .media-upload input { width: 100%; padding: .75rem; border: 1px solid var(--line-strong); border-radius: 0; color: var(--ink); background: var(--paper); }
.editor-form textarea { resize: vertical; font-family: var(--mono); font-size: .85rem; line-height: 1.6; }
.field-row { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1rem; }
.field-row.thirds { grid-template-columns: repeat(3, 1fr); }
.check-label { display: flex !important; grid-template-columns: auto 1fr; align-items: center; }
.check-label input { width: auto; }
.editor-tabs { display: flex; border-bottom: 1px solid var(--line); }
.editor-tabs button { padding: .6rem .9rem; border: 0; color: var(--ink-soft); background: transparent; cursor: pointer; }
.editor-tabs button[aria-pressed="true"] { color: var(--ink); box-shadow: inset 0 -2px var(--signal); }
.markdown-preview { min-height: 360px; padding: 1rem; border: 1px solid var(--line); background: var(--paper-2); }
.editor-actions { display: flex; gap: 1rem; align-items: center; }
.form-alert { padding: .85rem 1rem; border-left: 4px solid var(--line-strong); background: var(--paper); }
.form-alert.success { border-color: var(--bathy); }
.form-alert.error { border-color: var(--signal); }
.media-upload { margin-bottom: 2rem; grid-template-columns: 1fr 1fr auto; align-items: end; }
.media-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; }
.media-grid figure { margin: 0; border: 1px solid var(--line); background: var(--paper); }
.media-grid img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.media-grid figcaption { padding: .75rem; display: grid; gap: .3rem; font-size: .72rem; }
.media-grid code { overflow-wrap: anywhere; }

@media (max-width: 1320px) and (min-width: 901px) {
  .arctic-wordmark .wordmark-coordinates { display: none; }
  .site-nav { gap: 1rem; font-size: .68rem; }
}

@media (max-width: 900px) {
  .site-header { min-height: 66px; }
  .menu-toggle { display: block; }
  .site-nav { position: absolute; top: 66px; right: 0; left: 0; padding: 1.5rem; display: none; align-items: stretch; flex-direction: column; border-bottom: 1px solid var(--line); background: var(--paper); box-shadow: var(--shadow); }
  .site-nav.open { display: flex; }
  .theme-toggle { justify-content: center; }
  .hero-content { width: 100%; }
  .hero h1 { max-width: 720px; }
  .identity-strip, .return-story, .project-detail-hero, .about-hero { grid-template-columns: 1fr; }
  .identity-strip article { min-height: 0; border-right: 0; border-bottom: 1px solid var(--line); }
  .return-image { min-height: 420px; }
  .section-heading, .index-project, .logbook-entry, .project-detail-body, .about-body { grid-template-columns: 1fr; }
  .media-destinations { grid-template-columns: 1fr; }
  .media-destinations article { border-right: 0; border-bottom: 1px solid var(--line); }
  .media-destinations article:last-child { border-bottom: 0; }
  .index-project:nth-child(even) .index-project-image, .logbook-entry.reverse .logbook-photo { order: 0; }
  .project-detail-hero > img { min-height: 420px; }
  .about-hero img { max-height: 620px; object-position: center 20%; }
  .route-line { grid-template-columns: 1fr; gap: 0; }
  .route-line::before { top: 0; bottom: 0; left: 6px; width: 1px; height: auto; }
  .route-line article { padding: 0 0 2.5rem 2.2rem; }
  .route-line article::before { top: 2px; }
  .music-hero { grid-template-columns: 1fr; }
  .music-hero-copy { padding-bottom: 3rem; }
  .music-hero-meter { width: min(720px, calc(100% - 2.4rem)); margin: 0 auto 6rem; }
  .music-profile-grid { grid-template-columns: repeat(2, 1fr); }
  .music-profile-link:nth-child(2) { border-right: 0; }
  .music-profile-link:nth-child(-n + 2) { border-bottom: 1px solid var(--line); }
  .listening-grid, .collection-grid, .concert-breakdowns { grid-template-columns: 1fr; }
  .concert-breakdowns { gap: 4rem; }
  .year-chart-panel { overflow-x: auto; }
  .signal-grid { grid-template-columns: repeat(2, 1fr); }
  .outdoors-hero { grid-template-columns: 1fr; }
  .outdoors-hero-copy { padding-top: 1rem; }
  .outdoors-hero-log { width: min(720px, 100%); margin-bottom: 2rem; }
  .adventure-controls { align-items: stretch; flex-direction: column; }
  .adventure-map-layout { grid-template-columns: 1fr; }
  .adventure-map-frame { border-right: 0; border-bottom: 1px solid var(--line); }
  .adventure-map-detail { min-height: 330px; }
  .adventure-step-layout { grid-template-columns: 1fr; }
  .adventure-step-chart { border-right: 0; border-bottom: 1px solid var(--line); }
  .adventure-step-totals { grid-template-columns: repeat(2, 1fr); grid-template-rows: repeat(2, 1fr); }
  .adventure-step-totals div { min-height: 120px; border-right: 1px solid var(--line); }
  .adventure-step-totals div:nth-child(2n) { border-right: 0; }
  .adventure-step-peaks { grid-template-columns: repeat(2, 1fr); }
  .adventure-record-grid { grid-template-columns: repeat(2, 1fr); }
  .admin-grid, .media-grid { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 620px) {
  body { font-size: 16px; }
  .site-header { gap: 1.5rem; }
  .wordmark-coordinates { display: none; }
  .wordmark-position { margin-top: .15rem; }
  .arctic-wordmark { width: 100%; column-gap: .45rem; }
  .arctic-wordmark > .arctic-signal { --arctic-signal-inset: .45rem; width: 100%; grid-template-columns: minmax(0, 1fr); grid-template-rows: 1.25rem 1.65rem auto; align-content: center; gap: 0; }
  .arctic-track { grid-column: 1; grid-row: 2; width: 6.25rem; max-width: 100%; }
  .arctic-label { grid-column: 1; grid-row: 3; max-width: 100%; font-size: .7rem; line-height: 1.2; white-space: normal; }
  .arctic-aurora { grid-column: 1; grid-row: 1; height: 1.25rem; }
  .hero { min-height: 700px; }
  .hero-content { padding-top: 7rem; }
  .bearing-track span:nth-child(even) { display: none; }
  .section-shell { width: min(100% - 2.4rem, 1240px); }
  .card-grid { grid-template-columns: 1fr; }
  .feature-frame, .feature-frame img { min-height: 400px; }
  .feature-caption { width: 100%; }
  .return-image { min-height: 330px; }
  .article-list a { grid-template-columns: 1fr; gap: .35rem; }
  .page-hero { min-height: 420px; }
  .cv-heading { grid-template-columns: 1fr; gap: 2rem; }
  .cv-entry { grid-template-columns: 1fr; }
  .cv-entry > p { grid-column: 1; }
  .cv-additional ul { columns: 1; }
  .music-hero { min-height: 760px; }
  .music-hero h1 { font-size: clamp(3rem, 15vw, 5rem); }
  .music-hero-meter { min-height: 260px; padding: 1.1rem; box-shadow: 10px 10px 0 rgba(222,105,76,.72); }
  .meter-bars { height: 170px; }
  .music-profile-grid { grid-template-columns: 1fr; }
  .music-profile-link { min-height: 145px; border-right: 0; border-bottom: 1px solid var(--line); }
  .music-profile-link:last-child { border-bottom: 0; }
  .listening-totals, .collection-totals, .concert-totals { grid-template-columns: repeat(2, 1fr); }
  .listening-totals div:nth-child(2) { border-right: 0; }
  .listening-totals div:last-child { grid-column: 1 / -1; padding-left: 0; border-top: 1px solid var(--line); }
  .history-heading, .year-detail section { grid-template-columns: 1fr; }
  .long-chart li { grid-template-columns: minmax(100px, 135px) minmax(55px, 1fr) 2.8rem; gap: .55rem; }
  .genre-timeline svg { height: 155px; }
  .year-artist-list li { grid-template-columns: .7rem minmax(100px, 125px) minmax(50px, 1fr) 2.7rem; gap: .5rem; }
  .collection-totals div { min-height: 125px; padding: 1.1rem; }
  .collection-totals div:nth-child(2) { border-right: 0; }
  .collection-totals div:nth-child(-n + 2) { border-bottom: 1px solid var(--line); }
  .collection-totals div:nth-child(3) { padding-left: 0; }
  .collection-totals dd { font-size: 3.2rem; }
  .decade-chart { gap: .3rem; }
  .decade-chart span { font-size: .5rem; writing-mode: vertical-rl; transform: rotate(180deg); }
  .concert-totals div { min-height: 135px; padding: 1.2rem; }
  .concert-totals div:nth-child(2) { border-right: 0; }
  .concert-totals div:nth-child(-n + 2) { border-bottom: 1px solid var(--line); }
  .concert-totals div:nth-child(3) { padding-left: 0; }
  .concert-totals dd { font-size: 3.2rem; }
  .panel-heading { align-items: flex-start; flex-direction: column; }
  .panel-heading > p { text-align: left; }
  .horizontal-chart li, .concert-breakdowns .horizontal-chart li { grid-template-columns: minmax(95px, 120px) minmax(60px, 1fr) 1.8rem; gap: .6rem; }
  .signal-grid { grid-template-columns: 1fr; }
  .signal-grid article { min-height: 220px; }
  .outdoors-hero { min-height: 760px; padding-top: 5rem; }
  .outdoors-hero h1 { font-size: clamp(3rem, 15vw, 5rem); }
  .outdoors-hero-log { min-height: 300px; padding: 1rem; box-shadow: 10px 10px 0 rgba(222,105,76,.7); }
  .outdoors-elevation-profile { height: 160px; }
  .outdoors-hero-log dl div { padding-inline: .45rem; }
  .outdoors-hero-log dt { font-size: .47rem; }
  .outdoors-hero-log dd { font-size: 1rem; }
  .adventure-record { width: 100%; }
  .adventure-record > .section-heading, .adventure-record > .adventure-controls { width: calc(100% - 2.4rem); margin-inline: auto; }
  .adventure-filter-group button { padding-inline: .55rem; }
  .adventure-map-layout { border-right: 0; border-left: 0; }
  .adventure-map-frame, .adventure-map-detail { min-height: 330px; }
  .adventure-map-svg { min-height: 300px; }
  .adventure-map-legend { flex-wrap: wrap; }
  .adventure-totals { grid-template-columns: repeat(2, 1fr); }
  .adventure-totals div { min-height: 130px; padding: 1rem; }
  .adventure-totals div:nth-child(2) { border-right: 0; }
  .adventure-totals div:nth-child(-n + 2) { border-bottom: 1px solid var(--line); }
  .adventure-totals div:nth-child(3) { padding-left: 0; }
  .adventure-totals dd { font-size: 3rem; }
  .adventure-month-chart { min-height: 285px; gap: .22rem; }
  .adventure-month-chart li { height: 275px; grid-template-rows: 1.2rem 220px 2.3rem; }
  .adventure-month-chart svg { height: 220px; }
  .adventure-month-chart span { writing-mode: vertical-rl; transform: rotate(180deg); }
  .adventure-step-chart { margin-inline: -1px; padding: .8rem; }
  .adventure-step-chart svg { height: 285px; }
  .adventure-step-totals dd { font-size: 1.8rem; }
  .adventure-step-peaks, .adventure-record-grid { grid-template-columns: 1fr; }
  .adventure-step-peaks article { min-height: 205px; }
  .adventure-record-grid article { min-height: 245px; }
  .site-footer { grid-template-columns: 1fr; }
  .footer-links { justify-content: flex-start; }
  .field-row, .field-row.thirds, .media-upload { grid-template-columns: 1fr; }
  .admin-heading.split, .admin-inline-action { align-items: flex-start; flex-direction: column; }
  .admin-grid, .media-grid { grid-template-columns: 1fr; }
  .admin-bar { gap: .8rem; }
}

@media (max-width: 380px) {
  .site-header { gap: 1rem; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; animation-duration: .01ms !important; }
  .arctic-ice-floe, .arctic-face, .arctic-aurora-line { animation: none !important; }
  .arctic-label::before, .arctic-label::after { animation: none !important; opacity: .3; }
}
