/*
 * EternaLink Nocturne
 * A dark, cinematic memorial with a full-bleed portrait hero.
 */
:root {
    --nc-black: #05090d;
    --nc-panel: #0a1117;
    --nc-panel-2: #111b23;
    --nc-ink: #f3eee4;
    --nc-muted: #8d9aa2;
    --nc-gold: #c9a85f;
    --nc-gold-soft: #e7d6aa;
    --nc-line: rgba(255,255,255,.11);
    --nc-serif: "Newsreader", Georgia, serif;
    --nc-sans: "Manrope", "DM Sans", Arial, sans-serif;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body.el-nocturne { margin: 0; color: var(--nc-ink); background: var(--nc-black); font-family: var(--nc-sans); -webkit-font-smoothing: antialiased; }

/* The profile itself is the entire opening scene. */
.nc-hero { position: relative; height: 100svh; min-height: 650px; overflow: hidden; isolation: isolate; background: var(--nc-black); }
.nc-hero-image { position: absolute; z-index: -3; inset: 0; background-color: var(--nc-black); background-image: var(--nc-portrait); background-position: left center; background-repeat: no-repeat; background-size: auto 100%; transform: scale(1.015); transform-origin: left center; }
.nc-hero::before { position: absolute; z-index: -2; inset: 0; background: linear-gradient(90deg, rgba(5,9,13,.08) 0%, rgba(5,9,13,.12) 35%, rgba(5,9,13,.74) 60%, rgba(5,9,13,.98) 100%); content: ""; }
.nc-hero::after { position: absolute; z-index: -1; inset: 0; background: linear-gradient(0deg, rgba(5,9,13,.7), transparent 32%, rgba(5,9,13,.22)); content: ""; }
.nc-hero-grain { position: absolute; inset: 0; opacity: .1; background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.35'/%3E%3C/svg%3E"); pointer-events: none; mix-blend-mode: soft-light; }
.nc-hero-copy { position: absolute; top: 50%; right: clamp(2rem, 7vw, 8rem); width: min(44vw, 620px); transform: translateY(-50%); }
.nc-memorial-line { display: flex; align-items: center; gap: 1rem; margin-bottom: 2.2rem; color: var(--nc-gold); font-size: .65rem; font-weight: 600; letter-spacing: .25em; text-transform: uppercase; }
.nc-memorial-line span { width: 54px; height: 1px; background: var(--nc-gold); }
.nc-hero h1 { max-width: 9ch; margin: 0; font: 400 clamp(4.2rem, 8vw, 8.5rem)/.83 var(--nc-serif); letter-spacing: -.055em; }
.nc-passing { display: flex; gap: 1.4rem; align-items: center; margin-top: clamp(2rem, 5vh, 4rem); padding-top: 1.4rem; border-top: 1px solid var(--nc-line); }
.nc-passing span { color: var(--nc-muted); font-size: .62rem; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; }
.nc-passing strong { color: var(--nc-gold-soft); font: 400 clamp(1.1rem, 1.7vw, 1.55rem) var(--nc-serif); }
.nc-lifespan { margin: .75rem 0 0; color: rgba(255,255,255,.44); font-size: .68rem; letter-spacing: .08em; }
.nc-enter { display: inline-flex; gap: 1rem; align-items: center; margin-top: 2.4rem; color: rgba(255,255,255,.72); font-size: .68rem; font-weight: 600; text-decoration: none; text-transform: uppercase; letter-spacing: .1em; }
.nc-enter i { display: grid; place-items: center; width: 2rem; height: 2rem; border: 1px solid var(--nc-line); border-radius: 50%; color: var(--nc-gold); font-style: normal; }
.nc-hero-index { position: absolute; left: 2rem; bottom: 2rem; color: rgba(255,255,255,.45); font-size: .58rem; letter-spacing: .16em; text-transform: uppercase; }

.nc-memorial-video { padding: clamp(4rem, 8vw, 7rem) max(1.25rem, calc((100vw - 1180px) / 2)); border-bottom: 1px solid var(--nc-line); background: var(--nc-panel); }
.nc-memorial-video > header { display: flex; align-items: end; justify-content: space-between; gap: 2rem; margin-bottom: 1.5rem; }
.nc-memorial-video > header span { color: var(--nc-gold); font-size: .62rem; font-weight: 600; letter-spacing: .2em; text-transform: uppercase; }
.nc-memorial-video > header p { margin: 0; color: var(--nc-muted); font: 400 1.1rem var(--nc-serif); }
.nc-video-frame { position: relative; overflow: hidden; aspect-ratio: 16 / 9; border: 1px solid var(--nc-line); background: #000; box-shadow: 0 35px 90px rgba(0,0,0,.38); }
.nc-video-frame::after { position: absolute; inset: 0; border: 1px solid rgba(201,168,95,.14); content: ""; pointer-events: none; }
.nc-video-frame iframe { width: 100%; height: 100%; display: block; border: 0; }

.nc-eyebrow { margin: 0 0 1.2rem; color: var(--nc-gold); font-size: .64rem; font-weight: 600; letter-spacing: .22em; text-transform: uppercase; }
.nc-prologue { padding: clamp(6rem, 12vw, 12rem) 1.25rem; text-align: center; background: var(--nc-black); }
.nc-prologue blockquote { max-width: 24ch; margin: auto; color: var(--nc-ink); font: 400 clamp(2.5rem, 5.5vw, 5.2rem)/1.04 var(--nc-serif); letter-spacing: -.04em; }
.nc-prologue-rule { display: flex; justify-content: center; align-items: center; gap: 1rem; margin-top: 3.5rem; color: var(--nc-gold); }
.nc-prologue-rule span { width: 70px; height: 1px; background: var(--nc-line); }
.nc-prologue-rule i { font: 400 1.3rem var(--nc-serif); }

.nc-story { display: grid; grid-template-columns: minmax(180px, .5fr) minmax(0, 1.5fr); gap: clamp(3rem, 9vw, 10rem); max-width: 1180px; margin: 0 auto; padding: clamp(5rem, 10vw, 10rem) clamp(1.25rem, 4vw, 3rem); border-top: 1px solid var(--nc-line); }
.nc-story-aside { position: sticky; top: 3rem; align-self: start; }
.nc-story-aside span,
.nc-section-head > div span { color: var(--nc-gold); font-size: .63rem; font-weight: 600; letter-spacing: .16em; }
.nc-story-aside p { margin: 1rem 0 0; color: rgba(255,255,255,.68); font: 400 clamp(1.7rem, 3vw, 2.5rem)/1.1 var(--nc-serif); }
.nc-biography { max-width: 690px; color: #aab3b7; font-size: clamp(1rem, 1.3vw, 1.13rem); line-height: 1.95; }
.nc-biography > *:first-child { margin-top: 0; }
.nc-biography p { margin: 0 0 1.35em; }
.nc-biography strong:first-child { display: block; margin-bottom: 1.4rem; color: var(--nc-ink); font: 400 clamp(1.8rem, 3vw, 2.6rem)/1.2 var(--nc-serif); }
.nc-biography > p:first-of-type::first-letter { float: left; margin: .08em .12em 0 0; color: var(--nc-gold); font: 400 4.8rem/.72 var(--nc-serif); }

/* Saved video links and testimonials continue the cinematic sequence. */
.el-nocturne .legacy-showcase { padding: clamp(6rem,10vw,9rem) max(1.25rem,calc((100vw - 1180px)/2)); border-top: 1px solid var(--nc-line); color: var(--nc-ink); background: var(--nc-panel); }
.el-nocturne .legacy-showcase--testimonials { background: var(--nc-black); }
.el-nocturne .legacy-showcase__heading { display: grid; grid-template-columns: 150px 1fr; gap: 2rem; align-items: end; margin-bottom: clamp(3rem,7vw,5rem); }
.el-nocturne .legacy-showcase__heading span { color: var(--nc-gold); font-size: .63rem; font-weight: 600; letter-spacing: .18em; text-transform: uppercase; }
.el-nocturne .legacy-showcase__heading h2 { margin: 0; color: var(--nc-ink); font: 400 clamp(3.4rem,7vw,7rem)/.9 var(--nc-serif); letter-spacing: -.05em; }
.el-nocturne .legacy-showcase__video-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 1rem; }
.el-nocturne .legacy-showcase__video-card { min-width: 0; border: 1px solid var(--nc-line); background: var(--nc-black); }
.el-nocturne .legacy-showcase__video-frame { aspect-ratio: 16/9; background: #000; }
.el-nocturne .legacy-showcase__video-frame iframe { display: block; width: 100%; height: 100%; border: 0; }
.el-nocturne .legacy-showcase__video-card h3 { margin: 0; padding: 1rem 1.15rem; color: var(--nc-ink); font: 400 1.2rem var(--nc-serif); }
.el-nocturne .legacy-showcase__testimonial-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 1px; background: var(--nc-line); }
.el-nocturne .legacy-showcase__testimonial { margin: 0; padding: clamp(1.7rem,3vw,3rem); color: var(--nc-ink); background: var(--nc-panel); }
.el-nocturne .legacy-showcase__testimonial blockquote { margin: 0 0 2rem; color: #c6ced0; font: 400 clamp(1.35rem,2.2vw,1.9rem)/1.45 var(--nc-serif); }
.el-nocturne .legacy-showcase__testimonial figcaption { display: flex; gap: .85rem; align-items: center; }
.el-nocturne .legacy-showcase__testimonial img,
.el-nocturne .legacy-showcase__monogram { display: grid; place-items: center; width: 48px; height: 48px; flex: 0 0 48px; border: 1px solid rgba(201,168,95,.45); border-radius: 50%; object-fit: cover; color: var(--nc-black); background: var(--nc-gold); font-weight: 700; }
.el-nocturne .legacy-showcase__testimonial strong,
.el-nocturne .legacy-showcase__testimonial small { display: block; }
.el-nocturne .legacy-showcase__testimonial strong { color: var(--nc-ink); }
.el-nocturne .legacy-showcase__testimonial small { margin-top: .15rem; color: var(--nc-muted); }

.nc-memories { padding: clamp(6rem, 11vw, 11rem) max(1.25rem, calc((100vw - 1240px) / 2)); border-top: 1px solid var(--nc-line); background: var(--nc-panel); }
.nc-section-head { display: grid; grid-template-columns: 150px 1fr; gap: 2rem; align-items: end; margin-bottom: clamp(3rem, 7vw, 6rem); }
.nc-section-head > div p { margin: .65rem 0 0; color: var(--nc-muted); font-size: .63rem; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; }
.nc-section-head h2 { margin: 0; color: var(--nc-ink); font: 400 clamp(3.4rem, 7vw, 7rem)/.9 var(--nc-serif); letter-spacing: -.05em; }
.nc-film-grid { display: grid; grid-template-columns: repeat(12, 1fr); gap: 1rem; }
.nc-film-grid figure { position: relative; grid-column: span 6; margin: 0; overflow: hidden; min-height: 420px; background: var(--nc-black); }
.nc-film-grid figure:nth-child(3n) { grid-column: span 12; }
.nc-film-grid img { width: 100%; height: 100%; display: block; object-fit: cover; filter: saturate(.78) contrast(1.04); transition: filter .25s, transform .25s; }
.nc-film-grid figure:hover img { filter: saturate(1); transform: scale(1.02); }
.nc-film-grid figcaption { position: absolute; inset: auto 0 0; padding: 2rem 1rem 1rem; color: rgba(255,255,255,.7); background: linear-gradient(transparent, rgba(5,9,13,.9)); font-size: .72rem; }
.nc-empty { padding: 2rem; border: 1px dashed var(--nc-line); color: var(--nc-muted); text-align: center; }
.nc-community-photos { margin-top: clamp(6rem, 10vw, 10rem); padding-top: 4rem; border-top: 1px solid var(--nc-line); }
.nc-community-photos > header { margin-bottom: 2.5rem; text-align: center; }
.nc-community-photos > header span { color: var(--nc-gold); font-size: .62rem; font-weight: 600; letter-spacing: .18em; text-transform: uppercase; }
.nc-community-photos h3 { margin: .8rem 0 0; font: 400 clamp(2.4rem, 5vw, 4.5rem)/1 var(--nc-serif); }

/* Shared gallery becomes a dark film reel. */
.el-nocturne .elag,
.el-nocturne .cp,
.el-nocturne .tribute-wall { font-family: var(--nc-sans) !important; }
.el-nocturne .elag-head,
.el-nocturne .cp-hd,
.el-nocturne .tribute-wall__header { display: none !important; }
.el-nocturne .elag-shell { padding: 0 !important; }
.el-nocturne .elag-tabs { padding-left: 0 !important; }
.el-nocturne .elag-tab { border: 1px solid var(--nc-line) !important; border-radius: 0 !important; color: var(--nc-muted) !important; background: transparent !important; box-shadow: none !important; }
.el-nocturne .elag-tab.elag-on { color: var(--nc-black) !important; background: var(--nc-gold) !important; }
.el-nocturne .elag-track { gap: .45rem !important; }
.el-nocturne .elag-slide { flex-basis: 72% !important; }
.el-nocturne .elag-card { min-height: 520px !important; border: 1px solid var(--nc-line); border-radius: 0 !important; background: var(--nc-black) !important; box-shadow: none !important; }
.el-nocturne .elag-card img { height: 520px !important; filter: saturate(.78); }
.el-nocturne .elag-overlay { background: linear-gradient(transparent, rgba(5,9,13,.9)) !important; }
.el-nocturne .elag-dot { background: rgba(255,255,255,.22) !important; }
.el-nocturne .elag-dot.elag-on { background: var(--nc-gold) !important; }

.el-nocturne .cp { padding: 0 !important; color: var(--nc-ink) !important; }
.el-nocturne .cp-wall { padding: 0 !important; gap: 3px !important; }
.el-nocturne .cp-wall__item { border-radius: 0 !important; }
.el-nocturne .cp-cta { margin-left: 0 !important; margin-right: 0 !important; border-radius: 0 !important; border-color: var(--nc-line) !important; background: var(--nc-panel-2) !important; }
.el-nocturne .cp-btn { border-radius: 0 !important; color: var(--nc-black) !important; background: var(--nc-gold) !important; }
.el-nocturne .cp-form-wrap { margin-left: 0 !important; margin-right: 0 !important; border-color: var(--nc-line) !important; border-radius: 0 !important; color: var(--nc-ink); background: var(--nc-panel-2) !important; }
.el-nocturne .cp-field { color: var(--nc-ink) !important; background: var(--nc-black) !important; }
.el-nocturne .cp-field::placeholder { color: rgba(255,255,255,.48) !important; }
.el-nocturne .cp-add-btn { border-color: var(--nc-line) !important; color: var(--nc-gold-soft) !important; background: var(--nc-black) !important; }
.el-nocturne .cp-add-btn:hover { border-color: var(--nc-gold) !important; color: var(--nc-gold) !important; background: rgba(201,168,95,.08) !important; }
.el-nocturne .cp-empty,
.el-nocturne .cp-ss-btn { border-color: var(--nc-line) !important; color: var(--nc-muted) !important; background: transparent !important; }
.el-nocturne .cp-cancel,
.el-nocturne .cp-cta-copy span { color: var(--nc-muted) !important; opacity: 1 !important; }
.el-nocturne .cp-form-title,
.el-nocturne .cp-cta-copy strong { color: var(--nc-ink) !important; }
.el-nocturne .cp-form-sub { color: var(--nc-muted) !important; opacity: 1 !important; }

.nc-tributes { padding: clamp(6rem, 11vw, 11rem) max(1.25rem, calc((100vw - 1180px) / 2)); border-top: 1px solid var(--nc-line); background: var(--nc-black); }
.nc-section-head--center { display: block; text-align: center; }
.nc-section-head--center h2 { margin-top: 1.2rem; }
.el-nocturne .tribute-wall { margin: 0 !important; padding: 0 !important; --tribute-accent: var(--nc-gold) !important; --tribute-accent-soft: rgba(201,168,95,.12) !important; --tribute-text: var(--nc-ink) !important; --tribute-muted: var(--nc-muted) !important; --tribute-surface: var(--nc-panel) !important; --tribute-border: var(--nc-line) !important; }
.el-nocturne .tribute-wall__feed { padding: 0 !important; }
.el-nocturne .tribute-wall__card { border-radius: 0 !important; border-color: var(--nc-line) !important; background: linear-gradient(145deg, var(--nc-panel-2), var(--nc-panel)) !important; box-shadow: none !important; }
.el-nocturne .tribute-wall__person { color: var(--nc-ink) !important; }
.el-nocturne .tribute-wall__message { color: #aeb7ba !important; }
.el-nocturne .tribute-wall__cta { margin-left: 0 !important; margin-right: 0 !important; border-radius: 0 !important; border-color: var(--nc-line) !important; background: var(--nc-panel) !important; }
.el-nocturne .tribute-wall__cta-copy strong { color: var(--nc-ink) !important; }
.el-nocturne .tribute-wall__button,
.el-nocturne .tribute-wall__submit,
.el-nocturne .tribute-wall__step-button { border-radius: 0 !important; color: var(--nc-black) !important; background: var(--nc-gold) !important; box-shadow: none !important; }
.el-nocturne .tribute-wall__empty { margin-left: 0 !important; margin-right: 0 !important; color: var(--nc-muted) !important; background: var(--nc-panel) !important; }
.el-nocturne .tribute-wall__form { margin-left: 0 !important; margin-right: 0 !important; border-color: var(--nc-line) !important; color: var(--nc-ink) !important; background: var(--nc-panel-2) !important; box-shadow: none !important; }
.el-nocturne .tribute-wall__choice,
.el-nocturne .tribute-wall__option,
.el-nocturne .tribute-wall__preview,
.el-nocturne .tribute-wall__recorder,
.el-nocturne .tribute-wall__voice-card { border-color: var(--nc-line) !important; color: var(--nc-ink) !important; background: var(--nc-panel) !important; }
.el-nocturne .tribute-wall__field { border-color: var(--nc-line) !important; color: var(--nc-ink) !important; background: var(--nc-black) !important; }
.el-nocturne .tribute-wall__field::placeholder { color: rgba(255,255,255,.42) !important; }
.el-nocturne .tribute-wall__meta,
.el-nocturne .tribute-wall__link,
.el-nocturne .tribute-wall__choice span:last-child { color: var(--nc-muted) !important; }
.el-nocturne .tribute-wall__link--back { color: var(--nc-gold-soft) !important; }
.el-nocturne .tribute-wall__error { color: #fecaca !important; }

.nc-footer { position: relative; padding: 7rem 1.25rem 9rem; border-top: 1px solid var(--nc-line); text-align: center; background: var(--nc-panel); }
.nc-footer p { margin: 0 0 1rem; color: var(--nc-gold); font-size: .62rem; font-weight: 600; letter-spacing: .2em; text-transform: uppercase; }
.nc-footer h2 { margin: 0; font: 400 clamp(3rem, 7vw, 6rem)/.9 var(--nc-serif); }
.nc-footer span { display: block; margin-top: 1rem; color: var(--nc-muted); font-size: .68rem; }
.nc-footer a { position: absolute; right: 2rem; bottom: 2rem; color: var(--nc-muted); font-size: .68rem; text-decoration: none; }

.nc-action-dock { position: fixed; z-index: 99990; left: 50%; bottom: 1rem; display: flex; width: min(1100px, calc(100% - 2rem)); padding: .32rem; border: 1px solid var(--nc-line); background: rgba(10,17,23,.88); box-shadow: 0 18px 55px rgba(0,0,0,.42); backdrop-filter: blur(18px); transform: translateX(-50%); }
.nc-action-dock a,
.nc-action-dock button { display: grid; flex: 1 1 0; place-items: center; width: 0; min-width: 0; height: 2.9rem; padding: 0; border: 0; border-right: 1px solid var(--nc-line); color: var(--nc-muted); background: transparent; appearance: none; cursor: pointer; }
.nc-action-dock > :last-child { border-right: 0; }
.nc-action-dock svg { width: 1.1rem; height: 1.1rem; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.nc-action-dock .nc-dock-primary { color: var(--nc-black); background: var(--nc-gold); }

.nc-locked { width: min(520px, calc(100% - 2rem)); margin: 12vh auto; padding: 3rem; border: 1px solid var(--nc-line); background: var(--nc-panel); }
.nc-locked h1 { font: 400 3rem/1 var(--nc-serif); }
.nc-locked input { width: 100%; margin: 1rem 0 .75rem; padding: .9rem; border: 1px solid var(--nc-line); color: var(--nc-ink); background: var(--nc-black); font: inherit; }
.nc-locked button { width: 100%; padding: .9rem; border: 0; color: var(--nc-black); background: var(--nc-gold); font: 700 .8rem var(--nc-sans); }

@media (max-width: 760px) {
    .nc-hero { height: 100svh; min-height: 650px; }
    .nc-hero-image { background-position: 48% 24%; background-size: cover; transform-origin: center; }
    .nc-hero::before { background: linear-gradient(0deg, rgba(5,9,13,.98) 0%, rgba(5,9,13,.82) 35%, rgba(5,9,13,.1) 68%); }
    .nc-hero::after { background: linear-gradient(0deg, rgba(5,9,13,.55), transparent 55%, rgba(5,9,13,.18)); }
    .nc-hero-copy { top: auto; right: 1rem; bottom: 7rem; left: 1rem; width: auto; transform: none; }
    .nc-memorial-line { margin-bottom: 1rem; font-size: .56rem; }
    .nc-memorial-line span { width: 30px; }
    .nc-hero h1 { max-width: 10ch; font-size: clamp(3.3rem, 15vw, 5.2rem); }
    .nc-passing { margin-top: 1.5rem; padding-top: 1rem; }
    .nc-passing span { font-size: .54rem; }
    .nc-passing strong { font-size: 1.1rem; }
    .nc-lifespan { display: none; }
    .nc-enter { display: none; }
    .nc-hero-index { display: none; }
    .nc-memorial-video { padding: 3.5rem 1rem; }
    .nc-memorial-video > header { align-items: start; flex-direction: column; gap: .45rem; }
    .nc-prologue { padding: 5.5rem 1rem; }
    .nc-prologue blockquote { font-size: 2.6rem; }
    .nc-story { grid-template-columns: 1fr; gap: 2.5rem; padding: 5rem 1rem; }
    .nc-story-aside { position: static; }
    .nc-biography { font-size: .98rem; line-height: 1.85; }
    .el-nocturne .legacy-showcase__heading { display: block; }
    .el-nocturne .legacy-showcase__heading h2 { margin-top: 1rem; }
    .el-nocturne .legacy-showcase__video-grid,
    .el-nocturne .legacy-showcase__testimonial-grid { grid-template-columns: 1fr; }
    .nc-memories,
    .nc-tributes { padding: 5rem 1rem; }
    .nc-section-head { display: block; }
    .nc-section-head h2 { margin-top: 1rem; font-size: 3.7rem; }
    .nc-film-grid { grid-template-columns: 1fr; }
    .nc-film-grid figure,
    .nc-film-grid figure:nth-child(3n) { grid-column: auto; min-height: 360px; }
    .el-nocturne .elag-slide { flex-basis: 90% !important; }
    .el-nocturne .elag-card,
    .el-nocturne .elag-card img { height: 410px !important; min-height: 410px !important; }
    .el-nocturne .tribute-wall__feed { grid-template-columns: 1fr !important; }
    .nc-footer { padding: 5rem 1rem 8rem; }
    .nc-footer a { position: static; display: inline-block; margin-top: 1.8rem; }
    .nc-action-dock { bottom: .75rem; width: calc(100% - 1.5rem); }
}

@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    *, *::before, *::after { transition-duration: .01ms !important; animation-duration: .01ms !important; }
}
