:root {
    --bg: #0a0a0a;
    --panel: #111;
    --text: #fff;
    --text-inverse: #000;
    --muted: rgba(255, 255, 255, 0.65);
    --line: rgba(255, 255, 255, 0.12);
    --orange: #f97316;
    --btn-bg: #fff;
    --btn-fg: #000;
}
* {
    box-sizing: border-box;
}
html,
body {
    height: 100%;
}
body {
    margin: 0;
    font:
        16px/1.5 ui-sans-serif,
        system-ui,
        -apple-system,
        Segoe UI,
        Roboto,
        Helvetica,
        Arial,
        "Apple Color Emoji",
        "Segoe UI Emoji";
    color: var(--text);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}
body {
    position: relative; /* Essential for positioning the pseudo-element */
    height: initial;
}

body::before {
    content: ""; /* Required for pseudo-elements */
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-image: url("/assets/login-bg-2048x1148.png");
    background-size: cover; /* Adjust as needed */
    opacity: 0.6; /* Adjust the opacity value (0.0 to 1.0) */
    z-index: -1; /* Places the background behind other content */
    background-blend-mode: luminosity;
}
#app {
    min-height: 87vb;
}

a {
    color: var(--text);
    text-decoration: none;
}
a:hover {
    color: var(--orange);
}
img,
video {
    max-width: 100%;
    height: auto;
    display: block;
}
.container {
    padding: 2.5rem 1rem;
    max-width: 1200px;
    margin: 0 auto;
}
/* Vertical rhythm between sections inside page container */
.container > section + section {
    margin-top: 2rem; /* space between blocks */
    padding-top: 1.25rem; /* space above the divider */
    border-top: 1px solid var(--line); /* subtle divider */
}
@media (max-width: 700px) {
    .detail-actions + .mt-6 {
        margin-top: 0.5rem;
    }
}
@media (min-width: 900px) {
    .container > section + section {
        margin-top: 2.5rem;
        padding-top: 1.5rem;
    }
}

.header {
    position: sticky;
    top: 0;
    z-index: 50;
    backdrop-filter: saturate(150%) blur(6px);
    background: rgba(10, 10, 10, 0.85);
    border-bottom: 1px solid var(--line);
}
.navbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    height: 64px;
    padding: 0 1rem;
    max-width: 1200px;
    margin: 0 auto;
}
.nav-right {
    display: flex;
    align-items: center;
    gap: 16px;
}
/* Wallet block aligns with nav items */
#nav-wallet-slot {
    display: flex;
    align-items: center;
}
.nav-wallet {
    display: flex;
    align-items: center;
    gap: 10px;
}
/* tooltip below the disconnect button */
.nav-wallet__wrap {
    position: relative;
}
.nav-wallet__tip {
    position: absolute;
    top: calc(100% + 8px);
    right: 0;
    display: none;
    background: rgba(0, 0, 0, 0.92);
    color: #fff;
    border: 1px solid rgba(255, 255, 255, 0.15);
    border-radius: 6px;
    padding: 6px 10px;
    font-size: 12px;
    white-space: nowrap;
    z-index: 1001;
}
.nav-wallet__wrap:hover .nav-wallet__tip {
    display: block;
}
.locked {
    filter: blur(3px);
    pointer-events: none;
    position: relative;
}
.locked::after {
    content: "Verify to view";
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    background: rgba(0, 0, 0, 0.45);
    border-radius: 8px;
}
@media (pointer: fine) {
    .nav-wallet__pill:hover::after {
        content: attr(title);
        position: absolute;
        left: 50%;
        transform: translateX(-50%);
        bottom: calc(100% + 8px);
        white-space: nowrap;
        background: rgba(0, 0, 0, 0.9);
        color: #fff;
        border: 1px solid rgba(255, 255, 255, 0.15);
        border-radius: 6px;
        padding: 6px 8px;
        font-size: 12px;
        z-index: 1001;
    }
}

.nav-wallet__disconnect {
    padding: 6px 10px;
    font-size: 13px;
    line-height: 1;
}

.brand {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-weight: 600;
    letter-spacing: 0.02em;
}
.brand img {
    width: 38px;
    height: 38px;
    object-fit: contain;
}
/* When maintenance is active, ensure header UI can't show */
body.maintenance #menuToggle,
body.maintenance #nav {
    display: none !important;
}
.nav {
    display: flex;
    gap: 1rem;
}
.nav a {
    font-size: 0.8rem;
    letter-spacing: 0.12em;
    text-transform: uppercase;
}
.nav a.active {
    color: var(--orange);
}
.footer {
    border-top: 1px solid var(--line);
    padding: 2rem 1rem;
    color: var(--muted);
}
.footer-inner {
    display: flex;
    gap: 1rem;
    align-items: center;
    justify-content: space-between;
    max-width: 1200px;
    margin: 0 auto;
    flex-wrap: wrap;
}
.footer-logo {
    width: 24px;
    height: 24px;
    object-fit: contain;
}
.row {
    display: grid;
    gap: 2rem;
}
@media (min-width: 1024px) {
    .row-5 {
        grid-template-columns: repeat(5, 1fr);
    }
    .row-2 {
        grid-template-columns: repeat(2, 1fr);
    }
    .row-3 {
        grid-template-columns: repeat(3, 1fr);
    }
}
.section-head {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 1.25rem;
    flex-wrap: wrap;
}
h1,
.h1 {
    font-size: 2rem;
    margin: 0;
}
@media (min-width: 768px) {
    h1,
    .h1 {
        font-size: 2.5rem;
    }
}
.muted {
    color: var(--muted);
}
/* responsive 2-col helper used on maintenance */
.grid.md-cols-2 {
    grid-template-columns: 1fr;
}
@media (min-width: 800px) {
    .md-cols-2 {
        grid-template-columns: 1fr 1fr;
    }
}

/* Make all cards equal-height and pin the footer to the bottom */
.grid .card,
.card {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.card .aspect-4-3.cover {
    flex: 0 0 auto;
}

.card .card-body {
    flex: 1 1 auto; /* takes remaining vertical space */
    display: flex;
    flex-direction: column;
}

.card .price-row {
    margin-top: auto; /* pushes this row to the bottom */
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding-top: 12px;
}

/* Normalize button sizes (remove the small variant look) */
.btn {
    padding: 12px 18px;
    font-size: 16px;
    line-height: 1;
}
.btn.btn-sm {
    padding: 12px 18px;
    font-size: 16px;
} /* neutralize differences */

/* Price text should not be bold */
.price,
.price.sold {
    font-weight: 400; /* was bold somewhere */
}

.card {
    border: 1px solid var(--line);
    background: var(--bg);
    padding: 0.75rem;
    transition:
        border-color 0.2s,
        background 0.2s;
    width: inherit;
}
.card:hover {
    border-color: var(--orange);
    background: #141414;
}
/* HIGH-CONTRAST pill you’ll see in the pills row */
.pill--invert {
    background: #fff !important;
    color: #111 !important;
    border-color: #fff !important;
    font-weight: 700 !important;
}

/* Corner flag (unique class name to avoid collisions) */
.claim-flag {
    position: absolute;
    top: 10px;
    right: 10px; /* top-right corner */
    padding: 6px 10px;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.96);
    color: #111;
    font-weight: 800;
    font-size: 12px;
    line-height: 1;
    letter-spacing: 0.02em;
    box-shadow: 0 6px 18px rgba(0, 0, 0, 0.25);
    pointer-events: none;
    z-index: 2;
}

/* Optional: subtle global treatment for claimed cards */
.card--claimed img,
.card--claimed video {
    filter: saturate(0.75) contrast(0.95);
}

.grid {
    display: grid;
    gap: 1rem;
}
@media (min-width: 640px) {
    .grid-2 {
        grid-template-columns: repeat(2, 1fr);
    }
}
@media (min-width: 1024px) {
    .grid-3 {
        grid-template-columns: repeat(3, 1fr);
    }
}
/* ---- Aspect helpers: no stretching, works for <video>, <img>, <iframe> ---- */
.aspect-video,
.aspect-4-3,
.aspect-1-1 {
    position: relative;
    background: #000000;
    overflow: hidden;
}

/* Native aspect ratios (modern browsers) */
.aspect-video {
    aspect-ratio: 16 / 9;
}
.aspect-4-3 {
    aspect-ratio: 4 / 3;
}
.aspect-1-1 {
    aspect-ratio: 1 / 1;
}
/* Make direct children fill the box */
.aspect-video > *,
.aspect-4-3 > *,
.aspect-1-1 > * {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
}

/* Default fits: detail videos = contain (no crop), thumbs = cover (fill) */
.aspect-video > video,
.aspect-video > iframe,
.aspect-video > img {
    object-fit: contain;
}

.aspect-4-3 > img,
.aspect-4-3 > video,
.aspect-4-3 > iframe {
    object-fit: cover;
}
.aspect-1-1 > img,
.aspect-1-1 > video,
.aspect-1-1 > iframe {
    object-fit: cover;
}

/* Optional utility modifiers */
.cover > * {
    object-fit: cover !important;
}
.contain > * {
    object-fit: contain !important;
}

/* Fallback for older browsers without aspect-ratio support */
@supports not (aspect-ratio: 1 / 1) {
    .aspect-video {
        height: 0;
        padding-top: 56.25%;
    }
    .aspect-4-3 {
        height: 0;
        padding-top: 75%;
    }
    .aspect-1-1 {
        height: 0;
        padding-top: 0%;
    }
}
.cover > img,
.cover > video,
.cover > iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.meta {
    display: grid;
    grid-template-columns: 120px 1fr;
    gap: 0.5rem 0.75rem;
    font-size: 0.9rem;
}
.pills {
    gap: 0.35rem !important;
    position: absolute;
    top: 4%;
    right: 6%;
}
.pill {
    border: 1px solid var(--line);
    padding: 0rem 0.3rem;
    font-size: 0.75rem;
    color: rgb(0 0 0 / 70%);
    background: #ffffff87;
    border-radius: 4px;
}
.btn {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem 1rem;
    text-transform: none;
    letter-spacing: 0.02em;
    cursor: pointer;
}
.btn:hover {
    background: var(--orange);
    color: #000;
    border-color: var(--orange);
}

.btn-solid {
    background: var(--btn-bg);
    color: var(--btn-fg);
    border: 1px solid #fff;
}
.btn-outline:hover {
    border-color: #ff6a00; /* your accent */
    color: #ff6a00;
    background: rgba(255, 255, 255, 0.03);
}
.btn-outline:focus-visible {
    outline: 2px solid #ff6a00;
    outline-offset: 2px;
}
/* Small button variant */
.btn.btn-sm {
    padding: 6px 10px;
    font-size: 0.85rem;
}
.btn-outline {
    background: transparent;
    color: #e6e6e6;
    border: 1px solid rgba(255, 255, 255, 0.45);
}
.btn-outline:hover {
    border-color: #ff6a00; /* your accent */
    color: #ff6a00;
    background: rgba(255, 255, 255, 0.03);
}
.btn-outline:focus-visible {
    outline: 2px solid #ff6a00;
    outline-offset: 2px;
}

.input,
.textarea {
    width: 100%;
    background: #0f0f0f;
    border: 1px solid var(--line);
    color: var(--text);
    padding: 0.5rem 0.75rem;
    outline: none;
}
.input:focus,
.textarea:focus {
    border-color: var(--orange);
}
.hero-actions {
    display: flex;
    gap: 0.5rem;
    flex-wrap: wrap;
}
hr.line {
    border: 0;
    border-top: 1px solid var(--line);
    margin: 1.5rem 0;
}
.center {
    text-align: center;
}
.icon {
    width: 20px;
    height: 20px;
    fill: currentColor;
}
/* Lightbox */
.lightbox {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.9);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 1000;
}
.lightbox .controls {
    position: absolute;
    right: 1rem;
    bottom: 1rem;
    display: flex;
    gap: 0.5rem;
    z-index: 10050;
}
.lightbox .close {
    position: absolute;
    top: 1rem;
    right: 1rem;
    z-index: 10050;
}
/* Lightbox overlay */
.lb-overlay {
    position: fixed;
    inset: 0;
    z-index: 1000;
    display: none;
    background: rgba(0, 0, 0, 0.9);
}
.lb-overlay.open {
    display: grid;
    grid-template-rows: auto 1fr auto;
}

.lb-bar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 12px 16px;
    border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}
.lb-title {
    font-size: 1.1rem;
    font-weight: 700;
}
.lb-sub {
    color: #aaa;
    margin-top: 2px;
    font-size: 0.95rem;
}

.lb-media-wrap {
    position: relative;
    overflow: auto;
    display: flex;
    align-items: center;
    justify-content: center;
}
.lb-media {
    max-width: 92vw;
    max-height: 82vh;
    transition: transform 0.2s ease;
    cursor: zoom-in;
}
.lb-media.zoomed {
    transform: scale(4);
    cursor: zoom-out;
}

.lb-actions {
    display: flex;
    gap: 10px;
    padding: 12px 16px;
    border-top: 1px solid rgba(255, 255, 255, 0.1);
}

/* Small modal sheet re-used for the chooser/forms */
.modal-overlay {
    position: fixed;
    inset: 0;
    display: none;
    align-items: center;
    justify-content: center;
    background: rgba(0, 0, 0, 0.6);
    z-index: 1100;
    padding: 16px;
}
.modal-overlay.open {
    display: flex;
}
.modal-sheet {
    position: relative;
    width: min(720px, 96vw);
    background: #0e0e0e;
    color: #eee;
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: 12px;
    padding: 16px 16px 14px;
}
.modal-close {
    position: absolute;
    top: 8px;
    right: 10px;
    border: 1px solid rgba(255, 255, 255, 0.25);
    background: transparent;
    color: #fff;
    border-radius: 8px;
    width: 36px;
    height: 36px;
    line-height: 1;
    font-size: 22px;
}
.modal-close:hover {
    border-color: rgba(255, 255, 255, 0.5);
}
.modal-body .stack > * + * {
    margin-top: 8px;
}
/* Non-pass modal layout polish */
.modal-form .label {
    margin-top: 10px;
    display: block;
}
.modal-form .row {
    display: flex;
    gap: 8px;
    align-items: center;
}
.modal-form .row + .row {
    margin-top: 8px;
}
.modal-form .pay-row {
    gap: 16px;
    align-items: center;
    margin-top: 6px;
}
.modal-form .pay-row .price {
    min-width: 140px;
    white-space: nowrap;
}
.modal-form .pay-row .grow {
    flex: 1;
}
.modal-form .form-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-top: 12px;
}
.modal-form .form-footer .muted {
    text-decoration: underline;
    text-underline-offset: 2px;
}
/* Back button in modal header (visible, above content) */
.modal-back {
    position: absolute;
    top: 8px;
    left: 10px;
    z-index: 1102; /* above content */
    border: 1px solid rgba(255, 255, 255, 0.25);
    background: rgba(255, 255, 255, 0.06);
    color: #fff;
    border-radius: 8px;
    height: 36px;
    min-width: 44px;
    padding: 0 10px;
    line-height: 36px;
    font-size: 16px;
}
.modal-back:hover {
    border-color: rgba(255, 255, 255, 0.5);
}

/* Make sure header has enough top padding for the buttons */
.modal-sheet.has-back {
    padding-top: 0;
}
.modal-sheet .modal-title,
.modal-sheet .modal-sub {
    text-align: center;
}
.modal-header {
    margin-bottom: 10px;
}
.modal-body .initial {
    text-align: center;
}
.modal-body .stack .hero-actions {
    justify-content: center;
}

/* A footer that right-aligns content (for pass form) */
.form-footer.right {
    justify-content: flex-end;
}
/* make bullets compact and two columns on larger screens */
.bullets-compact .ul-2col {
    margin-top: 6px;
    display: grid;
    grid-template-columns: 1fr;
    gap: 6px 16px;
    list-style-position: inside;
}
@media (min-width: 720px) {
    .bullets-compact .ul-2col {
        grid-template-columns: 1fr 1fr;
    }
}
.pass-art img {
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.35);
}

@media (max-width: 720px) {
    .lb-media {
        max-width: 96vw;
        max-height: 70vh;
    }
}
/* Tabs */
.tabs {
    display: flex;
    gap: 0.5rem;
    flex-wrap: wrap;
    margin-top: 2.5rem;
    border-bottom: 1px solid #ffffff33;
    margin-bottom: 1rem;
}
.tabs .tab {
    border: solid var(--text);
    color: #ffffff;
    padding: 0.5rem 0.75rem;
    cursor: pointer;
    background: transparent;
    border-left: 0;
    border-right: 0;
    border-top: 0;
    border-bottom: 0;
}
.tabs .tab.active {
    background: #ffffff;
    color: #000;
}
.tabs .tab:hover {
    outline: 2px solid var(--orange);
    background: #ffffff33;
}
.tabs .active:hover {
    outline: 2px solid var(--orange);
    background: #ffffff;
    color: #000;
}
/* Timeline */
.timeline {
    position: relative;
}
.timeline::before {
    content: "";
    position: absolute;
    left: 8px;
    top: 0;
    bottom: 0;
    width: 1px;
    background: var(--line);
}
.timeline-item {
    position: relative;
    padding-left: 2rem;
    margin-bottom: 1.5rem;
}
.timeline-dot {
    position: absolute;
    left: 0;
    top: 0.4rem;
    width: 16px;
    height: 16px;
    border: 1px solid var(--line);
    background: #101010;
    display: flex;
    align-items: center;
    justify-content: center;
}
.timeline-dot::after {
    content: "";
    width: 6px;
    height: 6px;
    background: var(--orange);
    display: block;
}
/* Helper layouts */
.flex {
    display: flex;
    gap: 1rem;
    align-items: center;
}
.justify-between {
    justify-content: space-between;
}
.col-2 {
    display: grid;
    gap: 1.5rem;
}
@media (min-width: 1024px) {
    .col-2 {
        grid-template-columns: 2fr 1fr;
    }
}
.hidden {
    display: none !important;
}
/* Work page search row */
.search-row {
    display: flex;
    gap: 8px;
    margin-top: 8px;
    margin-bottom: 10px;
}
.search-row .input {
    min-width: 220px;
}
.icon-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    border: 1px solid rgba(255, 255, 255, 0.25);
    background: transparent;
    color: inherit;
    border-radius: 6px;
}
.icon-btn:hover {
    border-color: rgba(255, 255, 255, 0.5);
}
.icon-btn:focus {
    outline: 2px solid rgba(255, 255, 255, 0.4);
    outline-offset: 2px;
}
@media (max-width: 720px) {
    .search-row {
        flex-wrap: wrap;
    }
    .search-row > * {
        flex: 1 1 100%;
    }
    .search-row .input {
        width: 100%;
    }
    .search-row .icon-btn {
        width: 32px;
        height: 32px;
    }
}
/* Centered variant for section headers */
.section-head.center {
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
}

/* Mobile menu */
.hamburger {
    display: none;
    padding: 0.35rem 0.6rem;
    line-height: 1;
}
.navbar {
    position: relative;
}
/* Mobile: hide wallet row when it's in the header */
@media (max-width: 900px) {
    .site-nav .nav-right #nav-wallet-slot {
        display: none;
    }
    #nav.open #nav-wallet-slot {
        display: block; /* visible when inside the open menu */
        margin-top: 12px;
    }
    #nav.open .nav-wallet__wrap {
        display: flex;
        width: 100%;
    }
    #nav.open .nav-wallet__disconnect {
        width: 100%;
    }
}
@media (max-width: 768px) {
    .hamburger {
        display: inline-flex;
        position: absolute;
        right: 1rem;
    }

    /* ensure the absolute positioning is relative to the header bar */
    .header.site-nav .navbar {
        position: relative;
    }

    /* when the menu is open, make the wallet row behave like a full-width row */
    #nav.open #nav-wallet-slot {
        display: block;
        margin-top: 12px;
        width: fit-content;
    }
    #nav.open .nav-wallet__wrap {
        width: 100%;
        display: flex;
        justify-content: flex-start;
    }
    #nav.open .nav-wallet__disconnect {
        width: 100%;
    }
    .nav {
        display: none;
        position: absolute;
        right: 0;
        top: 64px;
        background: var(--panel);
        border: 1px solid var(--line);
        flex-direction: column;
        padding: 1.2rem;
        gap: 0.25rem;
        min-width: 200px;
        width: 100%;
        z-index: 50;
    }
    .nav.open {
        display: flex;
        height: 100vw;
        position: fixed;
        z-index: 100;
    }
    .nav.open a {
        font-size: 0.9rem;
        color: var(--text);
        letter-spacing: 0.12em;
        text-transform: uppercase;
        padding: 1.5rem 0px;
    }
}

/* ===== Collection hero ===== */
.collection-hero {
    position: relative;
    min-height: 48vh; /* adjust to taste */
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 4rem 1rem;
    color: #fff;
    overflow: hidden;
    background: #0b0b0b;
}

.collection-hero__bg {
    position: absolute;
    inset: 0;
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    filter: grayscale(100%) contrast(110%) brightness(55%);
    opacity: 0.75; /* fade strength */
    transform: scale(1.02); /* slight push to avoid gaps on resize */
}

.collection-hero__overlay {
    position: absolute;
    inset: 0;
    background: radial-gradient(
        ellipse at center,
        rgba(0, 0, 0, 0.15),
        rgba(0, 0, 0, 0.6) 60%,
        rgba(0, 0, 0, 0.8)
    );
    pointer-events: none;
}

.collection-hero__inner {
    position: relative;
    text-align: center;
    max-width: 90ch;
}
/* ===== Cards: hover emphasis + price row ===== */
.card-actions {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-top: 0.75rem;
}
.card-title-link {
    text-decoration: none;
    color: inherit;
}
.card-title-link:hover {
    color: #ff7a1a; /* your orange hover */
}
.card-hover {
    transition:
        transform 0.18s ease,
        border-color 0.18s ease,
        box-shadow 0.18s ease;
}
.card-hover:hover {
    transform: translateY(-2px);
    border-color: #ffffff;
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.35);
}
.price-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-top: 0.65rem;
}
.price {
    color: #fff;
    opacity: 0.9;
    font-size: 10pt;
}
.price.sold {
    opacity: 0.95;
}
/* Inline wallet + checkbox row */
.inline-row {
    display: flex;
    align-items: center;
    gap: 12px;
}

.inline-row .inline-check {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    white-space: nowrap; /* keeps the label on one line */
    user-select: none;
}

.inline-row .inline-check__box {
    width: 18px;
    height: 18px;
}

/* On narrow screens, let it wrap neatly under the input */
@media (max-width: 520px) {
    .inline-row {
        flex-wrap: wrap;
    }
    .inline-row .inline-check {
        margin-left: auto;
    } /* pushes to the right if it wraps */
}
/* Header actions under the piece title */
.detail-actions {
    margin: 12px auto 24px;
    max-width: 960px; /* line up with centered header content */
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
}
/* Multi-line clamp helper */
.line-clamp-2 {
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2; /* Safari/Chromium */
    line-clamp: 2; /* Spec */
    overflow: hidden;
    text-overflow: ellipsis;
    line-height: 1.45;
    min-height: calc(1.45em * 2); /* Reserve space so footers align */
}

/* (Optional) ensure card footers sit consistently */
.card .card-actions {
    margin-top: 12px;
}

/* --- Hover pan for image cards (centered + faster) --- */
.card .cover {
    overflow: hidden;
    position: relative;
    aspect-ratio: 1 / 1;
}
/* absolutely fill that square (works for img/video/iframe) */
.card .cover > img,
.card .cover > video,
.card .cover > iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
/* Base image setup */
.card .cover img.pan-img {
    width: 100%;
    height: 100%;
    display: block;
    object-fit: cover;
    will-change: object-position;
}
/* Starting positions by orientation */
.card .cover img.pan-img.pan-v {
    object-position: 50% 0%;
} /* TOP center */
.card .cover img.pan-img.pan-h {
    object-position: 0% 50%;
} /* LEFT center */

@media (hover: hover) {
    .card:hover .cover img.pan-img.pan-v {
        animation: panDown 6s ease-in-out forwards;
    }
    .card:hover .cover img.pan-img.pan-h {
        animation: panRight 6s ease-in-out forwards;
    }
}

/* Keyframes: full travel range */
@keyframes panDown {
    from {
        object-position: 50% 0%;
    }
    to {
        object-position: 50% 100%;
    }
}
@keyframes panRight {
    from {
        object-position: 0% 50%;
    }
    to {
        object-position: 100% 50%;
    }
}

/* Respect a11y */
@media (prefers-reduced-motion: reduce) {
    .card .cover img.pan-img {
        animation: none !important;
    }
}
/* Prevent offscreen cards from doing layout/paint work */
.card {
    content-visibility: auto;
    contain-intrinsic-size: auto;
}

/* 2-line clamp already in place; keep or add this */
.line-clamp-2 {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

/* Optional: show full image and pan with letterboxing */
.card .cover img.pan-contain {
    object-fit: contain; /* shows full image */
    background: #000; /* bars blend with site bg */
    transform: translateZ(0); /* no scale so you see edges */
}
/* Cursor hints for zoomable media */
.cursor-zoom-in {
    cursor: zoom-in;
}
.cursor-zoom-out {
    cursor: zoom-out;
}

/* Lightbox: show zoom-out (click to close).
   Image keeps grab/grabbing if you already set that inline. */
.lightbox {
    cursor: zoom-out;
}
@media (hover: hover) {
    .card:hover .cover img.pan-contain.pan-v {
        animation: panY 3s ease-in-out infinite alternate;
    }
    .card:hover .cover img.pan-contain.pan-h {
        animation: panX 3s ease-in-out infinite alternate;
    }
}

.chain-pill {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    padding: 0.15rem 0.45rem;
    border: 1px solid var(--line);
    font-size: 0.75rem;
    color: rgba(255, 255, 255, 0.8);
    border-radius: 999px;
    line-height: 1;
}

.price-row {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}
.price-compact {
    display: inline-flex;
    align-items: center;
}

/* ===== Exhibits hero (list) ===== */
.exhibits-hero {
    position: relative;
    min-height: 32vh;
    padding: 3.5rem 1rem;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    overflow: hidden;
    background: #0b0b0b;
}
.exhibits-hero__bg {
    position: absolute;
    inset: 0;
    background-size: cover;
    background-position: center;
    filter: grayscale(100%) contrast(110%) brightness(55%);
    opacity: 0.75;
    transform: scale(1.02);
}
.exhibits-hero__overlay {
    position: absolute;
    inset: 0;
    background: radial-gradient(
        ellipse at center,
        rgba(0, 0, 0, 0.15),
        rgba(0, 0, 0, 0.6) 60%,
        rgba(0, 0, 0, 0.8)
    );
}
.exhibits-hero__inner {
    position: relative;
    text-align: center;
    max-width: 90ch;
}

/* Timeline cards with background images */
.timeline-card {
    position: relative;
    display: block;
    padding: 1.1rem 1.2rem;
    border: 1px solid #2a2a2a;
    border-radius: 0;
    color: #fff;
    overflow: hidden;
    min-height: 7.5rem;
    background-size: cover;
    background-position: center;
}
.timeline-card__overlay {
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 0, 0.55);
}
.timeline-card__inner {
    position: relative;
}
.timeline .timeline-item + .timeline-item {
    margin-top: 1rem;
}

/* ===== Exhibit detail hero ===== */
.exhibit-hero {
    position: relative;
    min-height: 42vh;
    padding: 4rem 1rem;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    overflow: hidden;
    background: #0b0b0b;
}
.exhibit-hero__bg {
    position: absolute;
    inset: 0;
    background-size: cover;
    background-position: center;
    filter: grayscale(100%) contrast(110%) brightness(55%);
    opacity: 0.75;
    transform: scale(1.02);
}
.exhibit-hero__overlay {
    position: absolute;
    inset: 0;
    background: radial-gradient(
        ellipse at center,
        rgba(0, 0, 0, 0.2),
        rgba(0, 0, 0, 0.65) 60%,
        rgba(0, 0, 0, 0.85)
    );
}
.exhibit-hero__inner {
    position: relative;
    text-align: center;
    max-width: 90ch;
}

/* ===== About layout ===== */
.about-wrap {
    max-width: 900px;
    margin: 0 auto;
    padding: 0 1rem;
    text-align: center;
}
.about-portrait {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    margin: 0 auto 1rem auto;
    border: 1px solid #2a2a2a;
    background: #111;
}
.about-text {
    margin: 0 auto 0.75rem auto;
    max-width: 75ch;
}
.socials-row {
    display: flex;
    justify-content: center;
    gap: 0.75rem;
    margin: 0.5rem 0 0.25rem 0;
}
.social-link .icon {
    width: 22px;
    height: 22px;
    fill: currentColor;
}
.about-form {
    margin: 2rem 0;
}
.about-contact {
    display: flex;
    justify-content: space-between;
}
/* Reusable grid of buttons (for exhibit links & marketplaces) */
.btn-grid {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    justify-content: left;
}
/* ===== About two-column ===== */
.about-grid {
    display: grid;
    gap: 1.25rem;
    padding: 0 1rem;
    max-width: 1100px;
    margin: 0 auto;
    grid-template-columns: 1fr;
    align-items: start;
}
@media (min-width: 900px) {
    .about-grid {
        grid-template-columns: 1.15fr 1fr;
    }
}

.about-left {
    text-align: center;
}
@media (min-width: 900px) {
    .about-left {
        text-align: left;
    }
}

.about-text {
    margin: 0.25rem auto 0.75rem auto;
    max-width: 75ch;
}
@media (min-width: 900px) {
    .about-text {
        margin-left: 0;
        margin-right: 0;
    }
}

.about-email {
    margin-top: 0.5rem;
}

.socials-row {
    display: flex;
    gap: 0.75rem;
    justify-content: center;
    margin: 0.5rem 0 0.25rem 0;
}
@media (min-width: 900px) {
    .socials-row {
        justify-content: flex-start;
    }
}
.social-link .icon {
    width: 22px;
    height: 22px;
    fill: currentColor;
}

.about-right {
    padding: 0 0.5rem;
}
.about-right h3 {
    margin-top: 0;
    margin-bottom: 0.5rem;
}

.about-form .label {
    display: block;
    font-size: 0.9rem;
    color: #c8c8c8;
    margin: 0 0 0.25rem 0;
}

/* Reuse existing .btn-grid for marketplaces (already added earlier) */
/* ===== Timeline v2 (zig-zag) ===== */
.timeline-v2 {
    position: relative;
    padding: 1rem 0 2rem;
}
.timeline-spine {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 2px;
    background: #2a2a2a;
}
.timeline-year {
    text-align: center;
    margin: 1.25rem 0 0.5rem;
    font-weight: 600;
    color: #c9c9c9;
}

.timeline-row {
    position: relative;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 2rem;
    margin: 1rem 0;
}
.timeline-row .lane {
    min-height: 10rem;
}
.timeline-row.left .lane.right,
.timeline-row.right .lane.left {
    min-height: 0;
}

.timeline-dot {
    position: absolute;
    left: 50%;
    transform: translate(-50%, -50%);
    top: 50%;
    width: 12px;
    height: 12px;
    border-radius: 50%;
    background: #ff7a1a;
    border: 2px solid #111;
    box-shadow: 0 0 0 2px #111;
}

.timeline-card {
    position: relative;
    display: block;
    color: #fff;
    border: 1px solid #2a2a2a;
    overflow: hidden;
    min-height: 7.5rem;
    background-size: cover;
    background-position: center;
    border-radius: 0;
}
.timeline-card__overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(
        180deg,
        rgba(0, 0, 0, 0.55),
        rgba(0, 0, 0, 0.65)
    );
    filter: grayscale(100%) contrast(110%) brightness(60%);
}
.timeline-card__inner {
    position: relative;
    padding: 1rem 1.2rem;
}

/* card hover to match pieces */
.card-hover {
    transition:
        transform 0.18s ease,
        border-color 0.18s ease,
        box-shadow 0.18s ease;
}
.card-hover:hover {
    transform: translateY(-2px);
    border-color: #fff;
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.35);
}

/* Mobile stacking for timeline */

/* ===== Exhibit detail two-column ===== */
.exhibit-detail {
    display: grid;
    gap: 1.25rem;
    align-items: start;
    grid-template-columns: 1.1fr 1fr;
}
@media (max-width: 900px) {
    .exhibit-detail {
        grid-template-columns: 1fr;
    }
}

.exhibit-gallery {
    display: grid;
    gap: 0.75rem;
    grid-template-columns: 1fr 1fr;
}
@media (max-width: 700px) {
    .exhibit-gallery {
        grid-template-columns: 1fr;
    }
}
.gallery-cell {
    cursor: zoom-in;
}

/* Reuse existing .grid, .card-hover, etc. */
/* Keep header centered and aligned with timeline content */
/* Timeline layout */
.timeline-v2 {
    position: relative;
    z-index: 0;
    padding: 0 0 2rem;
} /* no horizontal pad so spine matches header center */
.timeline-spine {
    position: absolute;
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 2px;
    height: 100%;
    background: #2a2a2a;
    z-index: 0;
    pointer-events: none;
}

.timeline-year {
    text-align: center;
    margin: 1.25rem 0 0.5rem;
    font-weight: 600;
    color: #c9c9c9;
}

.timeline-row {
    position: relative;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 2rem;
    margin: 1rem 0;
}
.timeline-row .lane {
    min-height: 10rem;
}
.timeline-row.left .lane.right,
.timeline-row.right .lane.left {
    min-height: 0;
}

.timeline-dot {
    position: absolute;
    left: 50%;
    transform: translate(-50%, -50%);
    top: 50%;
    width: 12px;
    height: 12px;
    border-radius: 50%;
    background: #ff7a1a;
    border: 2px solid #111;
    box-shadow: 0 0 0 2px #111;
}

/* Big & labeled career-start dot */
.timeline-row.start {
    margin-top: 1.25rem;
    margin-bottom: 0.5rem;
}
.timeline-dot.start {
    width: 18px;
    height: 18px;
    cursor: pointer;
}
.timeline-start-label {
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
    top: calc(50% + 18px);
    color: #cfcfcf;
    font-size: 0.9rem;
}

/* Cards */
.timeline-card {
    position: relative;
    display: block;
    color: #fff;
    border: 1px solid #2a2a2a;
    overflow: hidden;
    min-height: 7.5rem;
    border-radius: 0;
    background-size: cover;
    background-position: center;
}
/* Darker, fully–grayscale exhibit cards for better legibility */
.timeline-card__overlay {
    /* stronger darkening than before */
    background: linear-gradient(
        180deg,
        rgba(0, 0, 0, 0.74),
        rgba(0, 0, 0, 0.86)
    );
    filter: grayscale(100%) contrast(112%) brightness(48%);
}

/* optional: ease the image slightly on hover while keeping text readable */
.timeline-card:hover .timeline-card__overlay {
    filter: grayscale(100%) contrast(112%) brightness(52%);
}

/* ensure timeline text stays bright over darkened bg */
.timeline-card .muted {
    color: rgba(255, 255, 255, 0.85);
}
/* ensure text is readable on bg images */
.timeline-card h3 {
    text-shadow: 0 2px 12px rgba(0, 0, 0, 0.55);
}

/* (separate rule) darken media a bit */
.timeline-card__media img,
.timeline-card__media video {
    filter: grayscale(100%) brightness(0.55) contrast(1.1);
}
.timeline-card__inner {
    position: relative;
    padding: 1rem 1.2rem;
    color: #fff;
}

.card-hover {
    transition:
        transform 0.18s ease,
        border-color 0.18s ease,
        box-shadow 0.18s ease;
}
.card-hover:hover {
    transform: translateY(-2px);
    border-color: #fff;
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.35);
}

/* Mobile */
/* --- Mobile timeline layout --- */
@media (max-width: 900px) {
    .timeline-spine {
        display: block;
        left: 50%;
        transform: translateX(-50%);
    }
    /* container */
    .timeline-v2 {
        padding: 0 1rem 2.25rem;
        position: relative;
    }

    /* hide the center spine on mobile; we stack cards instead */
    .timeline-spine {
        display: none;
    }

    /* year label becomes a centered separator */
    .timeline-year {
        text-align: center;
        margin: 1.25rem 0 0.75rem;
        padding: 0;
    }

    /* each row becomes a single stacked block */
    .timeline-row {
        display: block;
        position: relative;
        margin: 0 0 2rem;
        padding-top: 14px; /* space for the dot that sits above the card */
    }

    /* lanes expand to 100% width; hide only truly empty lanes */
    .timeline-row .lane {
        display: block;
        width: 100%;
        min-height: 0;
    }
    .timeline-row .lane:empty {
        display: none;
    }

    /* card fills width; ensure it paints under the dot */
    .timeline-card {
        margin: 0;
        position: relative;
        z-index: 1;
    }
    .timeline-card__inner {
        padding: 0.9rem 1rem;
    }

    /* dot sits top-center of each row */
    .timeline-dot {
        position: absolute;
        left: 50%;
        top: 0;
        transform: translate(-50%, -50%); /* sits just above the card */
        z-index: 3;
    }

    /* larger, thumb-friendly “Start” dot & label at the end */
    .timeline-dot.start {
        width: 24px;
        height: 24px;
    }
    .timeline-start-label {
        position: absolute;
        left: 50%;
        transform: translateX(-50%);
        top: calc(50% + 22px);
        font-size: 0.95rem;
        white-space: nowrap;
    }
}
.rich-text p {
    margin: 0 0 1rem;
    line-height: 1.7;
}
.rich-text a {
    color: #8ab4f8;
    text-decoration: underline;
}

/* Stack the top row on narrow screens */
@media (max-width: 980px) {
    .exhibit-top {
        grid-template-columns: 1fr !important;
    }
}
.play-overlay .pulse {
    animation: pulse 2s infinite;
}
@keyframes pulse {
    0% {
        transform: scale(1);
        opacity: 0.9;
    }
    70% {
        transform: scale(1.08);
        opacity: 0.6;
    }
    100% {
        transform: scale(1);
        opacity: 0.9;
    }
}

.toast-wrap {
    position: fixed;
    inset: 16px auto auto 50%;
    transform: translateX(-50%);
    z-index: 9999;
    display: flex;
    gap: 8px;
    flex-direction: column;
    pointer-events: none;
}
.toast {
    pointer-events: auto;
    background: #ffffff;
    border: 1px solid #fffffffa;
    color: #111111;
    padding: 10px 14px;
    border-radius: 10px;
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.35);
}
.toast.ok {
    border-color: #19c37d;
}
.toast.err {
    border-color: #ff5c5c;
}

/* === Preloader overlay === */
#preloader {
    position: fixed;
    inset: 0;
    z-index: 99999;
    display: grid;
    place-items: center;
    background: transparent;
    opacity: 1;
    transition: opacity 0.35s ease;
}
#preloader.hidden {
    opacity: 0;
    pointer-events: none;
}

/* Full-bleed background (no tiling; image set from JS) */
#preloader .bg {
    position: absolute;
    inset: 0;
    background-color: #000; /* solid (no .86 veil) */
    background-repeat: no-repeat;
    background-position: center center;
    background-size: cover; /* fill the viewport */
}

/* Centered stack (no card chrome) */
#preloader .inner {
    position: relative;
    display: grid;
    place-items: center;
    gap: 0; /* no extra spacing */
    padding: 0; /* remove panel padding */
    background: transparent; /* no background */
    border: 0; /* no border */
    border-radius: 0; /* no radius */
}

/* Make the spinner big and put the logo INSIDE it */

#preloader .spinner {
    position: relative;
    width: 120px; /* adjust size */
    height: 120px;
}
/* the rotating ring */
#preloader .spinner::before {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: 50%;
    box-sizing: border-box;
    border: 6px solid rgba(255, 255, 255, 0.18);
    border-top-color: #fff; /* the moving “slice” */
    animation: spin 0.9s linear infinite;
}

/* logo is centered and does NOT rotate */
#preloader .logo {
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    width: 74px; /* adjust to taste */
    height: 74px;
    background: url("/logo.svg") center/contain no-repeat;
    filter: drop-shadow(0 6px 20px rgba(0, 0, 0, 0.35));
}
/* keep the keyframes */
@keyframes spin {
    to {
        transform: rotate(360deg);
    }
}
