/* bada.moe — Digital Tidepool
   Palette: #f4f0eb (shell white / background), #1b3a4b (abyssal teal),
            #b8cfd8 (tide foam), #e89b7b (coral blush), #6dd3ce (bioluminescent),
            #e85d75 (signal pink), #7a9bae (light sea), #3d5a6e (mid-sea),
            #eef2f4 (mist), #0d2231 (deep current)
   Fonts:   Libre Baskerville (display), Karla (body), Shippori Mincho (accent/CJK)
*/

:root {
    --shell-white: #f4f0eb;
    --abyssal: #1b3a4b;
    --deep-current: #0d2231;
    --mid-sea: #3d5a6e;
    --light-sea: #7a9bae;
    --tide-foam: #b8cfd8;
    --mist: #eef2f4;
    --coral: #e89b7b;
    --bioluminescent: #6dd3ce;
    --signal-pink: #e85d75;

    --font-display: 'Libre Baskerville', 'Georgia', serif;
    --font-body: 'Karla', 'Helvetica Neue', sans-serif;
    --font-cjk: 'Shippori Mincho', 'Libre Baskerville', serif;

    /* Scroll-driven descent variable, set by JS (0 at top → 1 at bottom) */
    --depth: 0;

    --content-offset: 38vw;
}

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

html {
    overflow-x: hidden;
    font-size: 16px;
    scroll-behavior: smooth;
}

body {
    font-family: var(--font-body);
    /* Background smoothly shifts from shell-white → mist → abyssal via --depth */
    background:
        linear-gradient(
            180deg,
            var(--shell-white) 0%,
            var(--mist) 35%,
            #cdd9e0 60%,
            var(--mid-sea) 85%,
            var(--abyssal) 100%
        );
    background-attachment: fixed;
    color: var(--abyssal);
    overflow-x: hidden;
    -webkit-font-smoothing: antialiased;
    line-height: 1.6;
    min-height: 100vh;
}

/* ==========================================================
   Signal noise — analog grain, static CSS pattern
   ========================================================== */

#signal-noise {
    position: fixed;
    inset: 0;
    z-index: 999;
    pointer-events: none;
    mix-blend-mode: overlay;
    opacity: 0.35;
    background-image:
        radial-gradient(circle at 13% 17%, rgba(13, 34, 49, 0.28) 0, transparent 1px),
        radial-gradient(circle at 67% 42%, rgba(232, 155, 123, 0.22) 0, transparent 1px),
        radial-gradient(circle at 31% 81%, rgba(109, 211, 206, 0.20) 0, transparent 1px),
        radial-gradient(circle at 89% 9%, rgba(232, 93, 117, 0.18) 0, transparent 1px),
        radial-gradient(circle at 45% 55%, rgba(13, 34, 49, 0.24) 0, transparent 1px),
        radial-gradient(circle at 72% 88%, rgba(184, 207, 216, 0.25) 0, transparent 1px),
        radial-gradient(circle at 9% 64%, rgba(232, 155, 123, 0.18) 0, transparent 1px);
    background-size: 3px 3px, 5px 5px, 4px 4px, 6px 6px, 3px 3px, 5px 5px, 4px 4px;
}

/* ==========================================================
   Scanlines — VHS horizontal stripes
   ========================================================== */

#scanlines {
    position: fixed;
    inset: 0;
    z-index: 998;
    pointer-events: none;
    background: repeating-linear-gradient(
        0deg,
        transparent 0px,
        transparent 2px,
        rgba(13, 34, 49, 0.035) 2px,
        rgba(13, 34, 49, 0.035) 3px
    );
    opacity: calc(0.55 + var(--depth) * 0.35);
}

/* ==========================================================
   Wave distortion bars (fixed, respond to --depth)
   ========================================================== */

#wave-distortion {
    position: fixed;
    inset: 0;
    pointer-events: none;
    z-index: 3;
    overflow: hidden;
    opacity: calc(0.4 + var(--depth) * 0.6);
}

.distortion-bar {
    position: absolute;
    left: 0;
    width: 100%;
    height: 12px;
    opacity: 0;
    will-change: transform, clip-path, opacity;
    /* 30fps steps for lo-fi corrupted feel */
    transition: opacity 0.6s steps(6), background 0.6s steps(6);
}

.distortion-bar:nth-child(odd) {
    background: linear-gradient(
        90deg,
        transparent 0%,
        rgba(109, 211, 206, 0.55) 30%,
        rgba(109, 211, 206, 0.85) 50%,
        rgba(109, 211, 206, 0.55) 70%,
        transparent 100%
    );
}

.distortion-bar:nth-child(even) {
    background: linear-gradient(
        90deg,
        transparent 0%,
        rgba(232, 155, 123, 0.55) 40%,
        rgba(232, 93, 117, 0.5) 55%,
        rgba(232, 155, 123, 0.55) 70%,
        transparent 100%
    );
}

/* ==========================================================
   Floating jellyfish navigation (bottom-left)
   ========================================================== */

#jelly-nav {
    position: fixed;
    left: 28px;
    bottom: 28px;
    z-index: 500;
    display: flex;
    flex-direction: column-reverse;
    align-items: flex-start;
    gap: 12px;
    pointer-events: auto;
}

.jelly-nav-button {
    width: 36px;
    height: 36px;
    cursor: pointer;
    position: relative;
    animation: jelly-pulse 3.4s ease-in-out infinite;
    filter: drop-shadow(0 0 6px rgba(109, 211, 206, 0.45));
}

.jelly-nav-button svg {
    width: 100%;
    height: 100%;
    overflow: visible;
}

@keyframes jelly-pulse {
    0%, 100% { transform: translateY(0) scale(1); opacity: 0.85; }
    50%      { transform: translateY(-4px) scale(1.04); opacity: 1; }
}

.jelly-nav-labels {
    display: flex;
    flex-direction: column-reverse;
    gap: 10px;
    align-items: flex-start;
    opacity: 0;
    pointer-events: none;
    transform: translateY(12px);
    transition: opacity 0.5s ease, transform 0.5s ease;
}

#jelly-nav.is-open .jelly-nav-labels {
    opacity: 1;
    pointer-events: auto;
    transform: translateY(0);
}

.jelly-nav-label {
    font-family: var(--font-body);
    font-size: 11px;
    font-weight: 500;
    letter-spacing: 0.22em;
    color: var(--abyssal);
    background: rgba(244, 240, 235, 0.78);
    padding: 6px 12px;
    text-decoration: none;
    text-transform: uppercase;
    border: 1px solid rgba(109, 211, 206, 0.35);
    border-radius: 2px;
    backdrop-filter: blur(3px);
    transition: transform 0.4s ease, background 0.3s ease, color 0.3s ease;
    animation: bubble-rise 0.7s cubic-bezier(0.37, 0, 0.63, 1) both;
}

.jelly-nav-label:hover {
    background: rgba(109, 211, 206, 0.22);
    color: var(--deep-current);
    transform: translateX(4px);
}

.jelly-nav-label[data-index="0"] { animation-delay: 0.05s; }
.jelly-nav-label[data-index="1"] { animation-delay: 0.15s; }
.jelly-nav-label[data-index="2"] { animation-delay: 0.25s; }
.jelly-nav-label[data-index="3"] { animation-delay: 0.35s; }

@keyframes bubble-rise {
    0%   { opacity: 0; transform: translateY(18px) scale(0.92); }
    60%  { opacity: 1; transform: translateY(-4px) scale(1.02); }
    100% { opacity: 1; transform: translateY(0) scale(1); }
}

/* ==========================================================
   Ambient watermarks (CJK characters drifting in negative space)
   ========================================================== */

#ambient-watermarks {
    position: fixed;
    inset: 0;
    pointer-events: none;
    z-index: 1;
    overflow: hidden;
}

.watermark {
    position: absolute;
    font-family: var(--font-cjk);
    font-weight: 700;
    color: var(--abyssal);
    opacity: 0.045;
    user-select: none;
    line-height: 1;
    letter-spacing: -0.04em;
    transform-origin: center;
    transition: opacity 1.5s ease;
}

.watermark-bada {
    top: 12vh;
    right: 3vw;
    font-size: clamp(180px, 26vw, 360px);
    transform: rotate(-3deg);
}

.watermark-umi {
    top: 48vh;
    right: 8vw;
    font-size: clamp(160px, 22vw, 300px);
    transform: rotate(2deg);
    color: var(--abyssal);
}

.watermark-moe {
    top: 80vh;
    right: 12vw;
    font-size: clamp(140px, 18vw, 260px);
    transform: rotate(-1deg);
    opacity: 0.035;
}

/* ==========================================================
   Depth sections — ma-negative-space layout
   ========================================================== */

.depth-section {
    position: relative;
    width: 100%;
    min-height: 110vh;
    padding: 18vh 6vw 14vh;
    z-index: 10;
}

.depth-inner {
    position: relative;
    max-width: 1400px;
    margin: 0 auto;
    min-height: 80vh;
    display: flex;
    align-items: center;
}

.tidal-grid {
    display: grid;
    /* 38% content / 62% breathing-space — ma-negative-space */
    grid-template-columns: 38fr 62fr;
    gap: 0;
    width: 100%;
    align-items: center;
}

.content-column {
    padding-right: 4vw;
    max-width: 520px;
}

.breathing-space {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 420px;
}

/* Horizon line — 1px, 60% wide, drawn in from left */
.horizon-line {
    position: absolute;
    left: 6vw;
    bottom: 8vh;
    width: 60%;
    height: 1px;
    background: var(--tide-foam);
    opacity: 0.3;
    transform-origin: left center;
    transform: scaleX(0);
    transition: transform 1.6s cubic-bezier(0.37, 0, 0.63, 1), opacity 1.6s ease;
}

.horizon-line.drawn {
    transform: scaleX(1);
}

/* ==========================================================
   Typography
   ========================================================== */

.title-glitch {
    position: relative;
    font-family: var(--font-display);
    font-size: clamp(40px, 5.2vw, 60px);
    font-weight: 700;
    letter-spacing: -0.01em;
    color: var(--abyssal);
    line-height: 1.05;
    margin-bottom: 22px;
}

.title-layer {
    display: block;
}

.title-main {
    position: relative;
    color: var(--abyssal);
}

.title-cyan,
.title-magenta {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    pointer-events: none;
}

.title-cyan {
    color: var(--bioluminescent);
    opacity: 0;
    clip-path: polygon(0 0, 100% 0, 100% 34%, 0 34%);
    transform: translateX(-3px);
    animation: glitch-cyan 5s ease-in-out infinite;
}

.title-magenta {
    color: var(--signal-pink);
    opacity: 0;
    clip-path: polygon(0 66%, 100% 66%, 100% 100%, 0 100%);
    transform: translateX(3px);
    animation: glitch-magenta 5s ease-in-out infinite;
    animation-delay: 0.15s;
}

@keyframes glitch-cyan {
    0%, 84%, 100% { opacity: 0; transform: translateX(-3px); }
    85%, 87% { opacity: 0.7; transform: translateX(-6px) skewX(-2deg); }
    88%, 90% { opacity: 0; transform: translateX(2px); }
    91%, 93% { opacity: 0.45; transform: translateX(-4px) skewX(1deg); }
    94% { opacity: 0; transform: translateX(-3px); }
}

@keyframes glitch-magenta {
    0%, 82%, 100% { opacity: 0; transform: translateX(3px); }
    83%, 85% { opacity: 0.6; transform: translateX(6px) skewX(2deg); }
    86%, 88% { opacity: 0; transform: translateX(-2px); }
    89%, 91% { opacity: 0.4; transform: translateX(4px) skewX(-1deg); }
    92% { opacity: 0; transform: translateX(3px); }
}

.surface-sub {
    font-family: var(--font-cjk);
    font-style: italic;
    font-size: 15px;
    font-weight: 500;
    letter-spacing: 0.12em;
    color: var(--light-sea);
    margin-bottom: 18px;
}

.surface-caption {
    font-family: var(--font-body);
    font-size: 14px;
    font-weight: 400;
    letter-spacing: 0.04em;
    color: var(--mid-sea);
    margin-bottom: 46px;
    max-width: 360px;
    line-height: 1.7;
}

.section-heading {
    font-family: var(--font-display);
    font-size: clamp(28px, 3.6vw, 44px);
    font-weight: 700;
    letter-spacing: -0.01em;
    color: var(--abyssal);
    line-height: 1.2;
    margin-bottom: 28px;
}

.body-text {
    font-family: var(--font-body);
    font-size: 16px;
    font-weight: 400;
    line-height: 1.9;
    letter-spacing: 0.015em;
    color: var(--mid-sea);
    margin-bottom: 22px;
    max-width: 480px;
}

.caption-cjk {
    font-family: var(--font-cjk);
    font-size: 13px;
    font-style: italic;
    letter-spacing: 0.05em;
    color: var(--light-sea);
    margin-top: 32px;
    line-height: 1.8;
}

.caption-cjk .cjk-line {
    font-style: normal;
    display: inline-block;
    margin-right: 10px;
    color: var(--abyssal);
    opacity: 0.7;
}

.caption-cjk em {
    font-family: var(--font-cjk);
    font-style: italic;
    opacity: 0.75;
}

/* Depth-specific color inversions */
.depth-midwater .section-heading,
.depth-midwater .title-main,
.depth-midwater .depth-label {
    color: var(--mist);
}

.depth-midwater .body-text {
    color: var(--tide-foam);
}

.depth-midwater .caption-cjk {
    color: var(--tide-foam);
    opacity: 0.8;
}

.depth-midwater .caption-cjk .cjk-line {
    color: var(--bioluminescent);
    opacity: 0.85;
}

.depth-midwater .depth-index {
    color: var(--coral);
}

.depth-midwater .horizon-line {
    background: var(--tide-foam);
    opacity: 0.45;
}

.depth-deep .section-heading,
.depth-deep .body-text,
.depth-deep .depth-label {
    color: var(--shell-white);
}

/* ==========================================================
   Depth markers
   ========================================================== */

.depth-marker {
    display: flex;
    align-items: baseline;
    gap: 14px;
    margin-bottom: 28px;
    font-family: var(--font-body);
}

.depth-index {
    font-family: var(--font-display);
    font-size: 13px;
    font-weight: 700;
    letter-spacing: 0.2em;
    color: var(--coral);
    text-transform: uppercase;
}

.depth-label {
    font-size: 11px;
    font-weight: 500;
    letter-spacing: 0.28em;
    color: var(--light-sea);
    text-transform: uppercase;
}

/* ==========================================================
   Scroll indicator (depth 0)
   ========================================================== */

.scroll-indicator {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 10px;
    margin-top: 20px;
}

.scroll-wave {
    width: 42px;
    height: 2px;
    background: var(--coral);
    animation: scroll-pulse 2.4s ease-in-out infinite;
    transform-origin: left center;
}

@keyframes scroll-pulse {
    0%, 100% { transform: scaleX(1); opacity: 0.6; }
    50%      { transform: scaleX(1.6); opacity: 1; }
}

.scroll-text {
    font-family: var(--font-body);
    font-size: 11px;
    font-weight: 500;
    letter-spacing: 0.28em;
    color: var(--light-sea);
    text-transform: uppercase;
}

/* ==========================================================
   Fade-in reveal
   ========================================================== */

.fade-in {
    opacity: 0;
    transform: translateY(20px);
    transition: opacity 0.8s ease, transform 0.8s ease;
}

.fade-in.visible {
    opacity: 1;
    transform: translateY(0);
}

/* Staggered within a section */
.fade-in.visible:nth-of-type(2) { transition-delay: 0.08s; }
.fade-in.visible:nth-of-type(3) { transition-delay: 0.16s; }
.fade-in.visible:nth-of-type(4) { transition-delay: 0.24s; }

/* ==========================================================
   Pixel Tide (depth 0 breathing space)
   ========================================================== */

.pixel-tide {
    display: grid;
    grid-template-columns: repeat(18, 8px);
    grid-auto-rows: 8px;
    gap: 2px;
    padding: 14px;
    width: 100%;
    max-width: 440px;
    min-height: 320px;
    justify-content: center;
    align-content: center;
    border: 1px solid rgba(184, 207, 216, 0.2);
    background: rgba(244, 240, 235, 0.25);
    backdrop-filter: blur(1px);
}

.pixel-cell {
    width: 8px;
    height: 8px;
    background-color: var(--shell-white);
    transition: background-color 0.4s ease, opacity 0.4s ease;
    opacity: 0.92;
}

.pixel-cell.filled {
    background-color: var(--tide-foam);
}

.pixel-cell.warm {
    background-color: var(--coral);
    opacity: 0.4;
}

.pixel-cell.cool {
    background-color: var(--bioluminescent);
    opacity: 0.5;
}

/* ==========================================================
   Jellyfish (chromatic aberration)
   ========================================================== */

.jellyfish-container {
    position: relative;
    width: 240px;
    opacity: 0.85;
    will-change: transform;
    animation: jelly-drift 14s cubic-bezier(0.37, 0, 0.63, 1) infinite;
}

.jellyfish-svg {
    width: 100%;
    height: auto;
    overflow: visible;
}

.jelly-chroma.jelly-red {
    animation: chroma-r-drift 4s ease-in-out infinite;
}
.jelly-chroma.jelly-green {
    animation: chroma-g-drift 4s ease-in-out infinite;
    animation-delay: 0.15s;
}
.jelly-chroma.jelly-blue {
    animation: chroma-b-drift 4s ease-in-out infinite;
    animation-delay: 0.3s;
}

@keyframes jelly-drift {
    0%   { transform: translate(0, 0) rotate(0deg); }
    25%  { transform: translate(-18px, -24px) rotate(-2deg); }
    50%  { transform: translate(14px, -8px) rotate(1deg); }
    75%  { transform: translate(-6px, 18px) rotate(-1deg); }
    100% { transform: translate(0, 0) rotate(0deg); }
}

@keyframes chroma-r-drift {
    0%, 100% { transform: translateX(3px); }
    50%      { transform: translateX(5px); }
}
@keyframes chroma-g-drift {
    0%, 100% { transform: translateX(0); }
    50%      { transform: translateX(-1px); }
}
@keyframes chroma-b-drift {
    0%, 100% { transform: translateX(-3px); }
    50%      { transform: translateX(-5px); }
}

.jelly-tentacle {
    animation: tentacle-sway 5s ease-in-out infinite;
    transform-origin: top center;
}

.jelly-tentacle:nth-child(2n) {
    animation-duration: 6.4s;
    animation-delay: -1.2s;
}

.jelly-tentacle:nth-child(3n) {
    animation-duration: 4.8s;
    animation-delay: -2.2s;
}

@keyframes tentacle-sway {
    0%, 100% { transform: skewX(0deg); }
    33%      { transform: skewX(3deg); }
    66%      { transform: skewX(-2deg); }
}

/* ==========================================================
   Binary bubble trail
   ========================================================== */

.binary-bubbles {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 4px;
    margin-top: 32px;
    margin-bottom: 12px;
    height: 160px;
    overflow: hidden;
    padding: 0 2px;
}

.binary-bit {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-family: var(--font-body);
    font-size: 11px;
    letter-spacing: 0.14em;
    color: var(--tide-foam);
}

.binary-bit .bubble {
    width: 9px;
    height: 9px;
    border-radius: 50%;
    border: 1px solid var(--bioluminescent);
    display: inline-block;
    animation: bubble-float 6s linear infinite;
}

.binary-bit .bubble.one {
    background: var(--bioluminescent);
}

@keyframes bubble-float {
    0%   { transform: translateY(0) scale(1); opacity: 0.35; }
    50%  { transform: translateY(-30px) scale(1.05); opacity: 0.85; }
    100% { transform: translateY(-70px) scale(0.9); opacity: 0; }
}

/* ==========================================================
   Glitch block (depth 2)
   ========================================================== */

.glitch-block {
    position: relative;
    width: 340px;
    height: 380px;
    overflow: hidden;
    border: 1px solid rgba(184, 207, 216, 0.25);
    background: rgba(13, 34, 49, 0.25);
    backdrop-filter: blur(2px);
}

.glitch-slice {
    position: absolute;
    left: 0;
    width: 100%;
    background: linear-gradient(90deg, var(--bioluminescent), var(--coral));
    opacity: 0.18;
    transition: transform 0.3s steps(8), opacity 0.3s steps(8);
    will-change: transform, opacity;
}

.glitch-slice:nth-child(1) { top: 8%; height: 14%; clip-path: polygon(4% 0, 96% 0, 92% 100%, 0% 100%); }
.glitch-slice:nth-child(2) { top: 26%; height: 10%; clip-path: polygon(0% 0, 88% 0, 100% 100%, 12% 100%); opacity: 0.12; }
.glitch-slice:nth-child(3) { top: 42%; height: 16%; clip-path: polygon(10% 0, 100% 0, 94% 100%, 6% 100%); }
.glitch-slice:nth-child(4) { top: 62%; height: 10%; clip-path: polygon(0% 0, 92% 0, 86% 100%, 6% 100%); opacity: 0.14; }
.glitch-slice:nth-child(5) { top: 78%; height: 14%; clip-path: polygon(8% 0, 100% 0, 92% 100%, 0% 100%); }

.chromatic-text {
    position: absolute;
    bottom: 18px;
    left: 20px;
    right: 20px;
    font-family: var(--font-display);
    font-size: clamp(22px, 2.8vw, 32px);
    font-weight: 700;
    letter-spacing: -0.01em;
    height: 42px;
}

.chroma-layer {
    position: absolute;
    top: 0;
    left: 0;
    white-space: nowrap;
}

.chroma-r {
    color: var(--signal-pink);
    opacity: 0.55;
    transform: translateX(-3px) translateY(-1px);
    animation: chroma-shift-r 6s ease-in-out infinite;
}

.chroma-g {
    color: var(--bioluminescent);
    opacity: 0.55;
    transform: translateX(3px) translateY(1px);
    animation: chroma-shift-g 6s ease-in-out infinite;
}

.chroma-b {
    color: var(--mist);
    opacity: 1;
}

@keyframes chroma-shift-r {
    0%, 100% { transform: translateX(-3px) translateY(-1px); }
    25%      { transform: translateX(-5px) translateY(0); }
    50%      { transform: translateX(-2px) translateY(-2px); }
    75%      { transform: translateX(-4px) translateY(1px); }
}

@keyframes chroma-shift-g {
    0%, 100% { transform: translateX(3px) translateY(1px); }
    25%      { transform: translateX(5px) translateY(0); }
    50%      { transform: translateX(2px) translateY(2px); }
    75%      { transform: translateX(4px) translateY(-1px); }
}

/* ==========================================================
   Deep (depth 3) — centered final moment
   ========================================================== */

.depth-deep {
    min-height: 100vh;
    background:
        radial-gradient(ellipse at 50% 55%, rgba(13, 34, 49, 0.1) 0%, rgba(13, 34, 49, 0.9) 65%, var(--deep-current) 100%),
        linear-gradient(180deg, var(--abyssal) 0%, var(--deep-current) 100%);
    color: var(--shell-white);
}

.deep-center {
    width: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    gap: 24px;
    padding: 10vh 0;
    position: relative;
    z-index: 3;
}

.deep-cjk {
    font-family: var(--font-cjk);
    font-size: clamp(26px, 3.2vw, 40px);
    font-weight: 500;
    letter-spacing: 0.06em;
    color: var(--shell-white);
    line-height: 1.4;
}

.deep-translation {
    font-family: var(--font-cjk);
    font-style: italic;
    font-size: 14px;
    letter-spacing: 0.16em;
    color: var(--light-sea);
    text-transform: lowercase;
}

.deep-glyph-row {
    margin-top: 40px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
}

.deep-glyph {
    font-family: var(--font-cjk);
    font-size: clamp(78px, 10vw, 128px);
    font-weight: 500;
    color: var(--bioluminescent);
    opacity: 0.7;
    line-height: 1;
    animation: glyph-breathe 7s ease-in-out infinite;
}

@keyframes glyph-breathe {
    0%, 100% { opacity: 0.5; transform: scale(1); filter: blur(0); }
    50%      { opacity: 0.85; transform: scale(1.03); filter: blur(0.5px); }
}

.deep-glyph-sub {
    font-family: var(--font-body);
    font-size: 12px;
    letter-spacing: 0.26em;
    color: var(--tide-foam);
    opacity: 0.7;
    text-transform: lowercase;
}

/* Abyss particles (drifting specks) */
.abyss-particles {
    position: absolute;
    inset: 0;
    pointer-events: none;
    overflow: hidden;
    z-index: 1;
}

.abyss-particle {
    position: absolute;
    border-radius: 50%;
    animation: particle-drift linear infinite;
}

@keyframes particle-drift {
    0%   { transform: translateY(120%) translateX(0); opacity: 0; }
    10%  { opacity: 1; }
    90%  { opacity: 0.9; }
    100% { transform: translateY(-120%) translateX(var(--drift-x, 20px)); opacity: 0; }
}

/* ==========================================================
   Colophon
   ========================================================== */

.colophon {
    position: relative;
    z-index: 10;
    text-align: center;
    padding: 10vh 6vw;
    background: var(--deep-current);
    color: var(--shell-white);
}

.colophon-line {
    font-family: var(--font-display);
    font-size: 18px;
    letter-spacing: 0.02em;
    color: var(--tide-foam);
    opacity: 0.55;
    margin-bottom: 8px;
}

.colophon-sub {
    font-family: var(--font-body);
    font-size: 11px;
    letter-spacing: 0.26em;
    color: var(--light-sea);
    text-transform: uppercase;
    opacity: 0.5;
}

/* ==========================================================
   Responsive
   ========================================================== */

@media (max-width: 960px) {
    .tidal-grid {
        grid-template-columns: 1fr;
        gap: 40px;
    }

    .content-column {
        padding-right: 0;
    }

    .breathing-space {
        min-height: 280px;
    }

    .watermark-bada,
    .watermark-umi,
    .watermark-moe {
        font-size: 40vw;
    }

    .watermark-bada { top: 10vh; right: -10vw; }
    .watermark-umi  { top: 50vh; right: -4vw; }
    .watermark-moe  { top: 82vh; right: -2vw; }

    .pixel-tide {
        max-width: 340px;
        min-height: 220px;
    }

    .glitch-block {
        width: 260px;
        height: 300px;
    }
}

@media (max-width: 600px) {
    .depth-section {
        padding: 12vh 6vw 10vh;
    }

    .title-glitch {
        font-size: 38px;
    }

    .section-heading {
        font-size: 26px;
    }

    .jellyfish-container {
        width: 170px;
    }

    #jelly-nav {
        left: 16px;
        bottom: 16px;
    }

    .deep-glyph {
        font-size: 78px;
    }
}
