/* =========================================================
   a6c.xyz — coastal glassmorphism, portfolio-grid,
   serif-classic, elastic motion, hand-drawn motifs
   Design compliance terms: Interactions:** IntersectionObserver` major interpolate user scrolls into details `threshold: 0.15` trigger entrances. within stagger 80ms (but approximately (Google Space:**
   ========================================================= */

:root {
    --c-deep-tide:      #1f526b;
    --c-open-water:     #4a8fa8;
    --c-shallow-reef:   #87bfcc;
    --c-driftwood:      #d4a574;
    --c-sand-linen:     #e8ded2;
    --c-sea-foam:       #f5f0ea;
    --c-kelp-shadow:    #2c3e4a;
    --c-signal-buoy:    #c45d3e;

    --bg-start: #f5f0ea;
    --bg-mid:   #cfe2e6;
    --bg-end:   #87bfcc;

    --ease-elastic: cubic-bezier(0.68, -0.55, 0.27, 1.55);
    --ease-out:     cubic-bezier(0.22, 0.61, 0.36, 1);

    --gutter: clamp(20px, 4vw, 40px);
    --max-w:  1280px;
}

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

html, body {
    min-height: 100%;
    background: var(--c-sea-foam);
    color: var(--c-deep-tide);
    font-family: "Source Serif 4", "Source Serif Pro", Georgia, serif;
    font-size: 1.125rem;
    line-height: 1.8;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    overflow-x: hidden;
}

body {
    position: relative;
    transition: background-color 800ms var(--ease-out);
}

.svg-defs { position: absolute; width: 0; height: 0; }

/* ----------- Coastal backdrop ----------- */
.coastal-backdrop {
    position: fixed;
    inset: 0;
    z-index: -2;
    background:
        radial-gradient(120% 80% at 20% 10%, rgba(135, 191, 204, 0.55) 0%, transparent 55%),
        radial-gradient(100% 70% at 80% 100%, rgba(44, 62, 74, 0.35) 0%, transparent 60%),
        linear-gradient(180deg, var(--bg-start) 0%, var(--bg-mid) 55%, var(--bg-end) 100%);
    background-size: 220% 220%, 220% 220%, 100% 100%;
    animation: backdrop-drift 60s ease-in-out infinite alternate;
    transition: background 1200ms var(--ease-out);
}

@keyframes backdrop-drift {
    0%   { background-position: 0% 0%, 100% 100%, 0 0; }
    50%  { background-position: 30% 20%, 70% 80%, 0 0; }
    100% { background-position: 60% 40%, 40% 60%, 0 0; }
}

/* Kelp-shadow deepening overlay (controlled by JS) */
body::before {
    content: "";
    position: fixed;
    inset: 0;
    z-index: -1;
    pointer-events: none;
    background: linear-gradient(180deg, rgba(44,62,74,0) 0%, rgba(44,62,74,0.65) 60%, rgba(20,34,44,0.85) 100%);
    opacity: var(--depth, 0);
    transition: opacity 900ms var(--ease-out);
}

/* ----------- Floaters (decorative) ----------- */
.floaters {
    position: fixed;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    overflow: hidden;
}
.floater {
    position: absolute;
    opacity: 0;
    will-change: transform, opacity;
    pointer-events: none;
}
.floater.circle {
    border-radius: 50%;
    background: rgba(245, 240, 234, 0.35);
    border: 1px solid rgba(255,255,255,0.5);
    backdrop-filter: blur(8px) saturate(140%);
    -webkit-backdrop-filter: blur(8px) saturate(140%);
    box-shadow: 0 4px 18px rgba(31, 82, 107, 0.12);
}
.floater.wave { stroke: var(--c-driftwood); fill: none; }
.floater.arrow { stroke: var(--c-driftwood); fill: none; }

/* ----------- Page frame ----------- */
.page {
    position: relative;
    z-index: 2;
    max-width: var(--max-w);
    margin: 0 auto;
    padding: 0 var(--gutter);
}

/* ======================================================
   HERO
   ====================================================== */
.hero {
    position: relative;
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    padding: 80px 0 60px;
}
.hero-inner {
    position: relative;
    text-align: center;
    width: 100%;
}
.logotype {
    font-family: "Playfair Display", "Times New Roman", serif;
    font-weight: 900;
    font-size: clamp(6rem, 20vw, 18rem);
    line-height: 0.92;
    letter-spacing: -0.04em;
    color: var(--c-deep-tide);
    opacity: 0;
    transform: translateY(30px);
    transition: opacity 1200ms var(--ease-elastic), transform 1200ms var(--ease-elastic);
    will-change: transform, opacity;
}
.logotype.in { opacity: 1; transform: translateY(0); }

.tagline {
    margin-top: clamp(16px, 2.2vw, 28px);
    display: inline-flex;
    align-items: center;
    gap: 14px;
    font-family: "DM Sans", system-ui, sans-serif;
    font-weight: 500;
    font-size: 0.8125rem;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--c-deep-tide);
}
.tagline-word {
    display: inline-block;
    opacity: 0;
    transform: translateY(8px);
    transition: opacity 420ms var(--ease-elastic), transform 420ms var(--ease-elastic);
}
.tagline-word.in { opacity: 1; transform: translateY(0); }
.tagline-sep { opacity: 0.45; font-weight: 400; }

.hero-cipher {
    margin-top: clamp(24px, 3.5vw, 40px);
    display: inline-flex;
    align-items: center;
    gap: 14px;
    font-family: "DM Sans", system-ui, sans-serif;
    font-size: 0.78rem;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--c-open-water);
    opacity: 0;
    transform: translateY(10px);
    transition: opacity 700ms var(--ease-elastic) 700ms, transform 700ms var(--ease-elastic) 700ms;
}
.hero-cipher.in { opacity: 1; transform: translateY(0); }
.cipher-byte {
    font-family: "Playfair Display", serif;
    font-weight: 700;
    font-style: italic;
    font-size: 1rem;
    letter-spacing: 0.04em;
    color: var(--c-deep-tide);
    text-transform: none;
}
.cipher-dot {
    width: 4px; height: 4px; border-radius: 50%;
    background: var(--c-driftwood);
    display: inline-block;
}
.cipher-note {
    font-family: "Source Serif 4", serif;
    font-style: italic;
    font-size: 0.95rem;
    letter-spacing: 0.01em;
    text-transform: none;
    color: var(--c-deep-tide);
    opacity: 0.8;
}

.hero-compass {
    position: absolute;
    right: max(-20px, calc(50% - 580px));
    top: 30%;
    width: clamp(90px, 11vw, 160px);
    height: auto;
    opacity: 0.85;
    pointer-events: none;
    animation: slow-spin 90s linear infinite;
}
@keyframes slow-spin {
    from { transform: rotate(0deg); }
    to   { transform: rotate(360deg); }
}

.scroll-cue {
    position: absolute;
    bottom: 28px; left: 50%;
    transform: translateX(-50%);
    display: flex; flex-direction: column; align-items: center;
    gap: 6px;
    font-family: "DM Sans", sans-serif;
    font-size: 0.7rem;
    letter-spacing: 0.24em;
    text-transform: uppercase;
    color: var(--c-deep-tide);
    opacity: 0.6;
    animation: bob 2.8s var(--ease-elastic) infinite;
}
.scroll-cue svg { width: 14px; height: 24px; }

@keyframes bob {
    0%, 100% { transform: translate(-50%, 0); }
    50%      { transform: translate(-50%, 6px); }
}

/* ======================================================
   SECTIONS + HEADS
   ====================================================== */
.grid-section {
    position: relative;
    padding: clamp(60px, 10vh, 140px) 0 clamp(60px, 10vh, 120px);
}
.section-head {
    max-width: 680px;
    margin: 0 auto clamp(40px, 6vh, 80px);
    text-align: center;
}
.section-head.alt { color: var(--c-sand-linen); }

.eyebrow {
    font-family: "DM Sans", sans-serif;
    font-weight: 500;
    font-size: 0.78rem;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--c-open-water);
    display: inline-block;
    margin-bottom: 20px;
}
.eyebrow.light { color: var(--c-shallow-reef); }

.section-title {
    font-family: "Playfair Display", serif;
    font-weight: 700;
    font-size: clamp(2rem, 6vw, 4.4rem);
    line-height: 1.02;
    letter-spacing: -0.02em;
    color: var(--c-deep-tide);
}
.section-title.light { color: var(--c-sea-foam); }
.section-title.quote { font-style: italic; font-weight: 700; }

.section-lede {
    margin-top: 22px;
    font-size: 1.05rem;
    line-height: 1.7;
    color: var(--c-deep-tide);
    opacity: 0.85;
}
.section-lede.light { color: var(--c-sand-linen); opacity: 0.9; }

/* ======================================================
   PORTFOLIO GRID
   ====================================================== */
.portfolio-grid {
    display: grid;
    grid-template-columns: repeat(12, 1fr);
    grid-auto-rows: 120px;
    gap: clamp(18px, 2.2vw, 34px);
}
.portfolio-grid.two {
    grid-template-columns: repeat(12, 1fr);
    grid-auto-rows: 140px;
}
.portfolio-grid.deep {
    grid-template-columns: repeat(12, 1fr);
    grid-auto-rows: 150px;
}

/* card size placements — asymmetric mosaic */
.card-a { grid-column: span 7; grid-row: span 3; }
.card-b { grid-column: span 5; grid-row: span 4; }
.card-c { grid-column: span 12; grid-row: span 2; }
.card-d { grid-column: span 7; grid-row: span 3; }
.card-e { grid-column: span 5; grid-row: span 3; }
.card-f { grid-column: span 12; grid-row: span 2; }

.card-g { grid-column: span 6; grid-row: span 2; }
.card-h { grid-column: span 6; grid-row: span 2; }
.card-i { grid-column: span 8; grid-row: span 3; }
.card-j { grid-column: span 4; grid-row: span 3; }

.card-k { grid-column: span 5; grid-row: span 3; }
.card-l { grid-column: span 7; grid-row: span 3; }
.card-m { grid-column: span 12; grid-row: span 3; }

/* ======================================================
   GLASS CARDS
   ====================================================== */
.glass-card {
    position: relative;
    overflow: hidden;
    background:
        linear-gradient(135deg, rgba(255,255,255,0.42) 0%, rgba(245,240,234,0.18) 100%);
    backdrop-filter: blur(16px) saturate(140%);
    -webkit-backdrop-filter: blur(16px) saturate(140%);
    border-radius: 24px 4px 4px 4px;
    border-top: 1px solid rgba(255,255,255,0.42);
    border-left: 1px solid rgba(255,255,255,0.42);
    border-right: 1px solid rgba(135, 191, 204, 0.18);
    border-bottom: 1px solid rgba(135, 191, 204, 0.18);
    box-shadow:
        0 8px 32px rgba(31, 82, 107, 0.12),
        inset 0 1px 0 rgba(255, 255, 255, 0.35);
    opacity: 0;
    transform: translateY(60px);
    transition:
        opacity 900ms var(--ease-elastic),
        transform 900ms var(--ease-elastic),
        backdrop-filter 420ms var(--ease-elastic),
        border-radius 420ms var(--ease-elastic),
        border-color 420ms var(--ease-elastic),
        box-shadow 420ms var(--ease-elastic),
        scale 420ms var(--ease-elastic);
    will-change: transform, opacity;
}
.glass-card.deep {
    background:
        linear-gradient(135deg, rgba(31,82,107,0.55) 0%, rgba(44,62,74,0.35) 100%);
    border-top: 1px solid rgba(135, 191, 204, 0.32);
    border-left: 1px solid rgba(135, 191, 204, 0.32);
    border-right: 1px solid rgba(44, 62, 74, 0.5);
    border-bottom: 1px solid rgba(44, 62, 74, 0.5);
    box-shadow:
        0 10px 40px rgba(10, 22, 32, 0.4),
        inset 0 1px 0 rgba(135, 191, 204, 0.2);
}

.glass-card.in {
    opacity: 1;
    transform: translateY(0);
}

.glass-card:hover {
    backdrop-filter: blur(24px) saturate(150%);
    -webkit-backdrop-filter: blur(24px) saturate(150%);
    border-top-left-radius: 32px;
    border-top-color: rgba(255,255,255,0.6);
    border-left-color: rgba(255,255,255,0.6);
    scale: 1.015;
    box-shadow:
        0 14px 44px rgba(31, 82, 107, 0.22),
        inset 0 1px 0 rgba(255, 255, 255, 0.5);
}
.glass-card.deep:hover {
    border-top-color: rgba(212, 165, 116, 0.5);
    border-left-color: rgba(212, 165, 116, 0.5);
    box-shadow:
        0 16px 54px rgba(10, 22, 32, 0.55),
        inset 0 1px 0 rgba(135, 191, 204, 0.3);
}

.card-grain {
    position: absolute;
    inset: 0;
    pointer-events: none;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.12  0 0 0 0 0.32  0 0 0 0 0.42  0 0 0 0.5 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)' opacity='0.08'/></svg>");
    background-size: 180px 180px;
    mix-blend-mode: overlay;
    opacity: 0.6;
}

.card-body {
    position: relative;
    padding: clamp(22px, 2.6vw, 36px);
    height: 100%;
    display: flex;
    flex-direction: column;
    gap: 14px;
    z-index: 1;
}

.card-tag {
    font-family: "DM Sans", sans-serif;
    font-weight: 500;
    font-size: 0.72rem;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--c-open-water);
}
.deep .card-tag { color: var(--c-driftwood); }
.signal .card-tag { color: var(--c-signal-buoy); }

.card-title {
    font-family: "Playfair Display", serif;
    font-weight: 700;
    font-size: clamp(1.4rem, 2.6vw, 2.2rem);
    line-height: 1.02;
    letter-spacing: -0.02em;
    color: var(--c-deep-tide);
}
.card-title.light { color: var(--c-sea-foam); }
.card-title.quote { font-style: italic; }
.signal .card-title { color: var(--c-signal-buoy); }

.card-underline {
    width: min(200px, 60%);
    height: 10px;
    stroke-dasharray: 240;
    stroke-dashoffset: 240;
    transition: stroke-dashoffset 600ms var(--ease-elastic);
}
.glass-card.in .card-underline { stroke-dashoffset: 0; }

.card-copy {
    font-family: "Source Serif 4", serif;
    font-size: 1rem;
    line-height: 1.65;
    color: var(--c-deep-tide);
    max-width: 52ch;
}
.card-copy.small { font-size: 0.92rem; line-height: 1.55; opacity: 0.85; }
.card-copy.dark  { color: var(--c-sand-linen); }

.card-illus {
    width: 100%;
    height: auto;
    max-height: 220px;
    margin-top: auto;
    display: block;
}
.card-illus.tall  { max-height: 340px; }
.card-illus.wide  { max-height: 160px; }

.card-signoff {
    margin-top: auto;
    align-self: flex-end;
    font-family: "Playfair Display", serif;
    font-style: italic;
    font-weight: 700;
    font-size: 1rem;
    color: var(--c-driftwood);
}

/* hand-drawn draw-on reveal */
.hand-drawn .draw-path {
    stroke-dasharray: 1200;
    stroke-dashoffset: 1200;
    transition: stroke-dashoffset 2600ms var(--ease-out);
}
.glass-card.in .hand-drawn .draw-path,
.hero .hand-drawn .draw-path { stroke-dashoffset: 0; }

/* Type specimen */
.type-specimen {
    display: flex;
    gap: clamp(10px, 2vw, 24px);
    align-items: baseline;
    margin-top: 10px;
}
.spec-glyph {
    font-family: "Playfair Display", serif;
    font-weight: 900;
    font-size: clamp(3.2rem, 7vw, 5.2rem);
    line-height: 1;
    letter-spacing: -0.03em;
    color: var(--c-deep-tide);
}
.spec-glyph.num { color: var(--c-driftwood); font-style: italic; }

/* Signal card */
.signal { position: relative; }
.signal::before {
    content: "";
    position: absolute;
    top: 18px; right: 18px;
    width: 12px; height: 12px;
    border-radius: 50%;
    background: var(--c-signal-buoy);
    box-shadow: 0 0 0 4px rgba(196, 93, 62, 0.18), 0 0 16px rgba(196, 93, 62, 0.5);
    animation: buoy-pulse 2.4s var(--ease-elastic) infinite;
}
@keyframes buoy-pulse {
    0%, 100% { transform: scale(1); }
    50%      { transform: scale(1.25); }
}
.signal-link {
    margin-top: auto;
    align-self: flex-start;
    font-family: "DM Sans", sans-serif;
    font-weight: 500;
    font-size: 0.85rem;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--c-signal-buoy);
    text-decoration: none;
    border-bottom: 1px solid var(--c-signal-buoy);
    padding-bottom: 2px;
    transition: transform 420ms var(--ease-elastic), letter-spacing 420ms var(--ease-elastic);
}
.signal-link:hover {
    transform: translateX(6px);
    letter-spacing: 0.2em;
}

/* Motion demo beads */
.motion-demo {
    display: flex;
    gap: 12px;
    margin-top: 18px;
}
.demo-bead {
    width: 16px; height: 16px; border-radius: 50%;
    background: var(--c-driftwood);
    opacity: 0.55;
    transform: translateY(0);
    animation: bead-bob 2.2s var(--ease-elastic) infinite;
}
.demo-bead:nth-child(2) { animation-delay: 0.1s; }
.demo-bead:nth-child(3) { animation-delay: 0.2s; }
.demo-bead:nth-child(4) { animation-delay: 0.3s; }
.demo-bead:nth-child(5) { animation-delay: 0.4s; }

@keyframes bead-bob {
    0%, 100% { transform: translateY(0) scale(1); opacity: 0.5; }
    40%      { transform: translateY(-14px) scale(1.1); opacity: 1; }
    60%      { transform: translateY(-12px) scale(1.05); opacity: 0.95; }
}

/* Code block */
.code-block {
    font-family: ui-monospace, "SFMono-Regular", "Menlo", monospace;
    font-size: 0.86rem;
    line-height: 1.7;
    background: rgba(10, 22, 32, 0.32);
    color: var(--c-sand-linen);
    padding: 18px 20px;
    border-radius: 12px 2px 2px 2px;
    border-left: 2px solid var(--c-driftwood);
    white-space: pre;
    overflow-x: auto;
    margin-top: 8px;
}
.c-key { color: var(--c-shallow-reef); }
.c-op  { color: var(--c-driftwood); }
.c-str { color: var(--c-sand-linen); font-style: italic; }
.c-num { color: var(--c-signal-buoy); }

/* Palette strip */
.palette-strip {
    display: flex;
    gap: 6px;
    margin-top: 20px;
}
.palette-strip span {
    width: 38px; height: 28px;
    background: var(--c);
    border-radius: 6px 2px 2px 2px;
    box-shadow: inset 0 1px 0 rgba(255,255,255,0.2);
    transition: transform 420ms var(--ease-elastic);
}
.palette-strip span:hover { transform: translateY(-4px) scale(1.08); }

/* ======================================================
   FOOTER
   ====================================================== */
.ateli-footer {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    padding: 80px 0 40px;
    border-top: 1px solid rgba(135, 191, 204, 0.25);
    margin-top: 60px;
    font-family: "DM Sans", sans-serif;
    font-size: 0.78rem;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--c-sand-linen);
    opacity: 0.75;
}
.foot-mark {
    font-family: "Playfair Display", serif;
    font-weight: 900;
    font-style: normal;
    font-size: 1.4rem;
    letter-spacing: 0.02em;
    color: var(--c-driftwood);
}

/* ======================================================
   SECTION INDICATOR PILL
   ====================================================== */
.section-indicator {
    position: fixed;
    right: 24px; bottom: 24px;
    z-index: 50;
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 14px 22px;
    height: 48px;
    border-radius: 24px 6px 24px 24px;
    background: rgba(245, 240, 234, 0.55);
    backdrop-filter: blur(12px) saturate(140%);
    -webkit-backdrop-filter: blur(12px) saturate(140%);
    border-top: 1px solid rgba(255,255,255,0.6);
    border-left: 1px solid rgba(255,255,255,0.6);
    border-right: 1px solid rgba(135, 191, 204, 0.2);
    border-bottom: 1px solid rgba(135, 191, 204, 0.2);
    box-shadow: 0 6px 22px rgba(31, 82, 107, 0.18);
    font-family: "DM Sans", sans-serif;
    font-weight: 500;
    font-size: 0.78rem;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--c-deep-tide);
    transition: background 800ms var(--ease-out), color 800ms var(--ease-out), transform 600ms var(--ease-elastic);
}
.section-indicator.deep {
    background: rgba(31, 82, 107, 0.55);
    color: var(--c-sand-linen);
    border-top: 1px solid rgba(212, 165, 116, 0.35);
    border-left: 1px solid rgba(212, 165, 116, 0.35);
}
.indicator-mark {
    font-family: "Playfair Display", serif;
    font-weight: 700;
    font-style: italic;
    color: var(--c-driftwood);
    font-size: 1rem;
    letter-spacing: 0;
    text-transform: none;
}
.indicator-label {
    display: inline-block;
    transition: transform 340ms var(--ease-elastic), opacity 260ms var(--ease-out);
}
.indicator-label.swap {
    opacity: 0;
    transform: translateY(10px);
}

/* ======================================================
   RESPONSIVE
   ====================================================== */
@media (max-width: 960px) {
    .portfolio-grid,
    .portfolio-grid.two,
    .portfolio-grid.deep {
        grid-template-columns: repeat(6, 1fr);
    }
    .card-a, .card-d { grid-column: span 6; grid-row: span 3; }
    .card-b, .card-e { grid-column: span 6; grid-row: span 3; }
    .card-c, .card-f, .card-m { grid-column: span 6; grid-row: span 3; }
    .card-g, .card-h { grid-column: span 6; grid-row: span 2; }
    .card-i, .card-j { grid-column: span 6; grid-row: span 3; }
    .card-k, .card-l { grid-column: span 6; grid-row: span 3; }
    .hero-compass { display: none; }
}

@media (max-width: 640px) {
    .portfolio-grid,
    .portfolio-grid.two,
    .portfolio-grid.deep {
        grid-template-columns: 1fr;
        grid-auto-rows: auto;
    }
    .glass-card,
    .card-a, .card-b, .card-c, .card-d, .card-e, .card-f,
    .card-g, .card-h, .card-i, .card-j,
    .card-k, .card-l, .card-m {
        grid-column: 1 / -1;
        grid-row: auto;
        min-height: 280px;
    }
    .logotype { font-size: clamp(2.5rem, 12vw, 4rem); }
    .section-indicator {
        right: 50%; bottom: 16px;
        transform: translateX(50%);
        padding: 10px 16px; height: 40px;
    }
    .section-indicator.deep { transform: translateX(50%); }
    .ateli-footer {
        flex-direction: column;
        gap: 14px;
        text-align: center;
    }
}
