/* linkcard — maximalist pop. Pentagram rhythm. Heavy geometric sans. */

:root {
    --ink:      #0a0f3d;
    --paper:    #f2f0ff;
    --cobalt:   #1a1aff;
    --cyan:     #00e0ff;
    --mint:     #00ffa3;
    --magenta:  #ff2bd6;
    --violet:   #5b0fff;
    --bg:       var(--cobalt);
    --fg:       var(--paper);
    --accent:   var(--mint);
    --accent-2: var(--magenta);
    --ghost:    rgba(242, 240, 255, 0.08);
    --stroke:   var(--paper);
}

@media (prefers-color-scheme: dark) {
    :root {
        --ink:      #00031f;
        --paper:    #c8f9ff;
        --bg:       #0a0070;
        --fg:       var(--paper);
        --accent:   var(--cyan);
        --accent-2: var(--magenta);
        --ghost:    rgba(200, 249, 255, 0.07);
        --stroke:   var(--paper);
    }
}

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

html, body {
    margin: 0;
    padding: 0;
    background: var(--bg);
    color: var(--fg);
    font-family: "Avenir Next", "Futura PT", "Helvetica Neue", "Arial Black", system-ui, sans-serif;
    font-weight: 800;
    -webkit-font-smoothing: antialiased;
    overflow-x: hidden;
}

/* Masthead rail */
.rail {
    position: sticky;
    top: 0;
    z-index: 20;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.9rem 1.4rem;
    background: var(--fg);
    color: var(--bg);
    border-bottom: 4px solid var(--bg);
    text-transform: uppercase;
    letter-spacing: 0.02em;
    font-size: 0.78rem;
    font-weight: 900;
}
.rail .lhs { display: flex; gap: 1.2rem; align-items: center; }
.rail .dot {
    width: 0.9rem;
    height: 0.9rem;
    border-radius: 50%;
    background: var(--accent-2);
    box-shadow: 0 0 0 3px var(--bg);
}
.rail .rhs { font-variant-numeric: tabular-nums; opacity: 0.9; }

/* Page wrap */
.page {
    position: relative;
    max-width: 1180px;
    margin: 0 auto;
    padding: 2.4rem 1.4rem 6rem;
}

/* Ghost type bleeding off edges */
.ghost {
    position: absolute;
    font-size: clamp(14rem, 38vw, 32rem);
    font-weight: 900;
    line-height: 0.78;
    letter-spacing: -0.06em;
    color: transparent;
    -webkit-text-stroke: 2px var(--stroke);
    opacity: 0.18;
    pointer-events: none;
    user-select: none;
    text-transform: uppercase;
    z-index: 0;
}
.ghost.top  { top: -2rem; left: -4vw; }
.ghost.mid {
    bottom: 38%;
    right: -8vw;
    transform: rotate(-90deg);
    transform-origin: right top;
    font-size: clamp(8rem, 18vw, 16rem);
    -webkit-text-stroke: 1.5px var(--accent);
    opacity: 0.35;
}

/* Hero */
.hero {
    position: relative;
    z-index: 2;
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: end;
    gap: 1.4rem;
    padding-top: 1.2rem;
    margin-bottom: 2rem;
}

.avatar-wrap {
    position: relative;
    width: 9.5rem;
    height: 9.5rem;
    flex-shrink: 0;
}
.avatar-wrap::before {
    content: "";
    position: absolute;
    inset: -0.7rem -0.7rem 0.6rem 0.6rem;
    background: var(--accent);
    z-index: -1;
}
.avatar {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    border: 4px solid var(--fg);
    filter: grayscale(100%) contrast(1.15);
    mix-blend-mode: luminosity;
}

.name-block { min-width: 0; }
.kicker {
    display: inline-block;
    background: var(--accent-2);
    color: var(--ink);
    padding: 0.25rem 0.55rem;
    font-size: 0.72rem;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: 0.18em;
    margin-bottom: 0.9rem;
}
h1 {
    margin: 0;
    font-size: clamp(3.4rem, 11vw, 9rem);
    font-weight: 900;
    line-height: 0.84;
    letter-spacing: -0.045em;
    text-transform: uppercase;
    color: var(--fg);
}
h1 .stroke {
    color: transparent;
    -webkit-text-stroke: 2px var(--fg);
    display: inline-block;
}
h1 .accent { color: var(--accent); }

.tagline {
    margin: 1.2rem 0 0;
    max-width: 45ch;
    font-size: clamp(1rem, 1.5vw, 1.2rem);
    font-weight: 700;
    line-height: 1.25;
    letter-spacing: -0.005em;
    text-transform: none;
    color: var(--fg);
}

/* Marquee strip */
.strip {
    position: relative;
    z-index: 2;
    margin: 2.2rem 0 1.6rem;
    padding: 0.5rem 0;
    border-top: 4px solid var(--fg);
    border-bottom: 4px solid var(--fg);
    overflow: hidden;
    white-space: nowrap;
    font-size: 0.92rem;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: 0.18em;
    color: var(--fg);
}
.strip span { padding: 0 1.2rem; }
.strip span + span::before {
    content: "";
    display: inline-block;
    width: 0.55rem;
    height: 0.55rem;
    margin-right: 1.4rem;
    background: var(--accent);
    vertical-align: middle;
    transform: translateY(-1px);
}

/* Section label */
.section-label {
    position: relative;
    z-index: 2;
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 1rem;
    margin: 1.4rem 0 1rem;
}
.section-label h2 {
    margin: 0;
    font-size: clamp(2rem, 5vw, 3.2rem);
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: -0.03em;
    line-height: 0.9;
    color: transparent;
    -webkit-text-stroke: 2px var(--fg);
}
.section-label .num {
    font-size: 0.85rem;
    font-weight: 900;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--accent);
}

/* Cards grid — asymmetric Pentagram rhythm */
.grid {
    position: relative;
    z-index: 2;
    display: grid;
    grid-template-columns: repeat(6, minmax(0, 1fr));
    gap: 0.9rem;
    align-items: start;  /* short cards align to top of row; rhythm comes from the empty space */
}

.card {
    position: relative;
    grid-column: span 3;
    display: block;
    text-decoration: none;
    color: var(--fg);
    overflow: hidden;
    background: var(--ink);
    border: 3px solid var(--fg);
    isolation: isolate;
    transition: transform 0.25s ease;
}
.card:hover         { transform: translate(-2px, -2px); }
.card:hover::after  { transform: translate(2px, 2px); }
.card::after {
    content: "";
    position: absolute;
    inset: 0;
    border: 3px solid var(--fg);
    transform: translate(6px, 6px);
    z-index: -2;
    pointer-events: none;
    transition: transform 0.25s ease;
}

/* Heights */
.h-s  { height: 11rem; }
.h-m  { height: 13rem; }
.h-l  { height: 16rem; }
.h-xl { height: 20rem; }  /* used by 2-link layout */

/* Column spans (Pentagram rhythm) */
.s-2 { grid-column: span 2; }
.s-3 { grid-column: span 3; }
.s-4 { grid-column: span 4; }

/* Card background image: mostly natural, light contrast nudge */
.card .bg {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    z-index: 0;
    filter: contrast(1.05) brightness(0.96);
}
/* Wash: subtle hue cast for brand cohesion, not a paint job */
.card .wash {
    position: absolute;
    inset: 0;
    z-index: 1;
    background: var(--cobalt);
    mix-blend-mode: multiply;
    opacity: 0.15;
}
.card .wash::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(160deg, var(--accent) 0%, transparent 55%);
    mix-blend-mode: screen;
    opacity: 0.2;
}
/* Bottom gradient: focused legibility for the label without darkening the photo overall */
.card::before {
    content: "";
    position: absolute;
    inset: auto 0 0 0;
    height: 55%;
    z-index: 2;
    pointer-events: none;
    background: linear-gradient(to top,
        rgba(0, 0, 0, 0.72) 0%,
        rgba(0, 0, 0, 0.35) 32%,
        rgba(0, 0, 0, 0) 100%);
}

.wash-cobalt  { background: #1a1aff; }
.wash-magenta { background: #ff2bd6; }
.wash-mint    { background: #00ffa3; }
.wash-violet  { background: #5b0fff; }
.wash-cyan    { background: #00e0ff; }
.wash-ink     { background: #0a0f3d; }

.card .label {
    position: absolute;
    z-index: 3;
    left: 0.9rem;
    bottom: 0.7rem;
    right: 0.9rem;
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    gap: 0.5rem;
}
.card .label .link-name {
    font-size: clamp(1.4rem, 2.6vw, 2.4rem);
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: -0.02em;
    line-height: 0.9;
    color: var(--fg);
    text-shadow: 0 2px 6px rgba(0, 0, 0, 0.45);
}
.card .label .arrow {
    font-size: 1.6rem;
    font-weight: 900;
    line-height: 1;
    color: var(--fg);
    text-shadow: 0 2px 6px rgba(0, 0, 0, 0.45);
}
.card .tag {
    position: absolute;
    z-index: 3;
    top: 0.6rem;
    left: 0.6rem;
    font-size: 0.62rem;
    font-weight: 900;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    padding: 0.2rem 0.45rem;
    background: var(--fg);
    color: var(--ink);
}

/* Footer */
footer {
    position: relative;
    z-index: 2;
    margin-top: 3.5rem;
    padding-top: 1.4rem;
    border-top: 4px solid var(--fg);
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    gap: 1rem;
    font-size: 0.8rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.16em;
    color: var(--fg);
}
footer .colophon { max-width: 36ch; line-height: 1.4; opacity: 0.85; }
footer .sig {
    font-size: 2.4rem;
    font-weight: 900;
    letter-spacing: -0.03em;
    text-transform: uppercase;
    color: transparent;
    -webkit-text-stroke: 1.5px var(--fg);
}

/* Responsive */
@media (max-width: 720px) {
    .hero { grid-template-columns: auto; align-items: start; }
    .avatar-wrap { width: 6.5rem; height: 6.5rem; }
    .grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.7rem; }
    .s-2, .s-3, .s-4 { grid-column: span 1; }
    .h-s  { height: 9rem; }
    .h-m  { height: 11rem; }
    .h-l  { height: 13rem; }
    .h-xl { height: 16rem; }
    /* 2-link layout: stack full-width on phones rather than two narrow columns */
    .grid.two-up .card { grid-column: span 2; }
    .ghost.top { font-size: 9rem; }
    footer { flex-direction: column; align-items: flex-start; }
}
