/* Neue Haas Grotesk – add .woff2 files to /fonts/ or update paths */
@font-face {
  font-family: 'Neue Haas Grotesk';
  src: url('fonts/NeueHaasGrotesk.woff2') format('woff2'),
       url('fonts/NeueHaasGrotesk.woff') format('woff');
  font-weight: 400 500;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'Neue Haas Grotesk';
  src: url('fonts/NeueHaasGrotesk-Bold.woff2') format('woff2'),
       url('fonts/NeueHaasGrotesk-Bold.woff') format('woff');
  font-weight: 600 700;
  font-style: normal;
  font-display: swap;
}

/* Neumorphism theme – #e8e8e8 to match border in artwork photos */
:root {
  --font-body: 'Neue Haas Grotesk', 'Helvetica Neue', Helvetica, Arial, sans-serif;
  --page-bg: #e8e8e8;
  --neu-bg: #e8e8e8;
  --neu-light: #ffffff;
  --neu-dark: #d8d8d8;
  --neu-shadow: 8px 8px 16px var(--neu-dark), -8px -8px 16px var(--neu-light);
  --neu-shadow-sm: 4px 4px 8px var(--neu-dark), -4px -4px 8px var(--neu-light);
  --neu-inset: inset 4px 4px 8px var(--neu-dark), inset -4px -4px 8px var(--neu-light);
  --text-primary: #9a9a9a;
  --text-secondary: #9a9a9a;
  --text-engraved: -1px -1px 1px var(--neu-light), 2px 2px 3px var(--neu-dark);
  --text-engraved-sm: -1px -1px 1px var(--neu-light), 1px 1px 2px var(--neu-dark);
  --radius: 24px;
  --radius-sm: 16px;
}

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

html {
  font-size: 16px;
  -webkit-font-smoothing: antialiased;
  background: #e8e8e8;
}

body {
  margin: 0;
  min-height: 100vh;
  background: #e8e8e8;
  color: var(--text-primary);
  font-family: var(--font-body);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 2rem;
  position: relative;
}

/* Biography view: natural scroll, no fixed height or overflow hidden */
body.is-biography-view {
  align-items: flex-start;
  justify-content: flex-start;
  padding: 2rem 1rem 48px;
  padding-top: 5rem;
  font-size: 14px;
  box-sizing: border-box;
}

@media (max-width: 768px) {
  body.is-biography-view {
    padding: 1rem 2rem 48px;
  }

  body.is-biography-view .site-header {
    position: relative !important;
    top: auto !important;
    left: auto !important;
    right: auto !important;
    width: 100%;
    margin: 0 -2rem 0.5rem;
    padding: 1rem 2rem;
  }

  /* Index and contact: clear fixed header (artwork, biography, and events have their own handling) */
  body:not(.artwork-detail-page):not(:has(> .artwork-page)):not(.is-biography-view):not(.is-events-view) {
    padding-top: 5.5rem;
  }
}

.site-header {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  padding: 1.5rem 2rem;
  z-index: 1;
}

/* Artwork detail: fixed header so Menu/Back are exactly 2rem from viewport edges (solved alignment) */
body.artwork-detail-page .site-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  margin: 0;
  padding: 1.5rem 2rem;
  box-sizing: border-box;
}

body.artwork-detail-page .artwork-detail__back {
  position: absolute;
  top: 1.5rem;
  right: 2rem;
}

/* Menu: one Neumorphism shape, single slide-down, no separation */
.menu {
  position: relative;
  width: fit-content;
  transition: box-shadow 0.2s ease, background 0.2s ease;
}

.menu__trigger {
  font-family: inherit;
  font-size: 1rem;
  font-weight: 500;
  color: var(--text-primary);
  text-shadow: var(--text-engraved-sm);
  background: var(--neu-bg);
  border: none;
  padding: 0.5rem 1rem;
  width: 5.5rem;
  border-radius: var(--radius-sm);
  cursor: pointer;
  text-align: center;
  box-shadow: var(--neu-shadow-sm);
  transition: box-shadow 0.2s ease, background 0.2s ease, border-radius 0.2s ease;
}

.menu__trigger:hover {
  box-shadow: 6px 6px 12px var(--neu-dark), -6px -6px 12px var(--neu-light);
}

.menu__trigger:active {
  box-shadow: var(--neu-inset);
}

/* When open: one big button – single border, single shade */
.menu.menu--open {
  background: var(--neu-bg);
  box-shadow: var(--neu-shadow-sm);
  border-radius: var(--radius-sm);
  overflow: hidden;
}

.menu.menu--open .menu__trigger {
  box-shadow: none;
  background: transparent;
  border-radius: var(--radius-sm) var(--radius-sm) 0 0;
}

/* Dropdown: same surface, one continuous slide */
.menu__dropdown {
  width: 100%;
  max-height: 0;
  overflow: hidden;
  padding: 0 1rem;
  display: flex;
  flex-direction: column;
  gap: 0;
  background: transparent;
  box-shadow: none;
  transition: max-height 0.3s ease-out;
  pointer-events: none;
}

.menu.menu--open .menu__dropdown {
  max-height: 12rem;
  padding: 0 1rem 0.75rem;
  pointer-events: auto;
}

.menu__link {
  display: block;
  padding: 0.5rem 0;
  font-size: 0.95rem;
  font-weight: 500;
  color: var(--text-primary);
  text-decoration: none;
  text-shadow: var(--text-engraved-sm);
}

/* Hero: centered, hierarchical layout like the reference */
.hero {
  width: 100%;
  max-width: 560px;
  text-align: center;
}

.hero__card {
  padding: 3.5rem 2.5rem;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0;
  background: none;
  box-shadow: none;
  border: none;
}

.hero__brand {
  margin: 0;
  font-size: clamp(1.125rem, 3vw, 1.75rem);
  font-weight: 700;
  letter-spacing: 0.02em;
  color: var(--text-primary);
  line-height: 1.1;
  text-shadow: var(--text-engraved);
  white-space: nowrap;
}

.hero__artist {
  margin: 0.5rem 0 0;
  font-size: clamp(1rem, 2.5vw, 1.35rem);
  font-weight: 500;
  color: var(--text-primary);
  letter-spacing: 0.01em;
  text-shadow: var(--text-engraved);
}

.hero__datetime {
  margin: 3rem 0 0;
  font-size: clamp(1.05rem, 2.5vw, 1.25rem);
  font-weight: 500;
  color: var(--text-primary);
  text-shadow: var(--text-engraved-sm);
}

.hero__location {
  margin: 2rem 0 0;
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
}

.hero__venue {
  margin: 0;
  font-size: clamp(1rem, 2.2vw, 1.15rem);
  font-weight: 600;
  color: var(--text-primary);
  text-shadow: var(--text-engraved-sm);
}

.hero__city {
  margin: 0;
  font-size: clamp(0.9rem, 2vw, 1.05rem);
  font-weight: 400;
  color: var(--text-secondary);
  text-shadow: var(--text-engraved-sm);
}

/* Hide hero when viewing biography or contact */
body.is-biography-view .hero,
body.is-contact-view .hero {
  display: none;
}

/* Hide biography when viewing contact – contact page shows only contact */
body.is-contact-view .bio {
  display: none;
}

/* Biography section */
.bio {
  width: 100%;
  max-width: 56rem;
  margin-top: 0;
  display: flex;
  justify-content: center;
}

/* Fit bio in one viewport: fixed-height container, scale content so it’s not cropped */
body.is-biography-view .bio {
  max-width: none;
  width: 100%;
  display: flex;
  justify-content: center;
  align-items: flex-start;
}

@media (max-width: 768px) {
  body.is-biography-view .bio {
    margin-top: calc(2.5rem - 4vh);
  }
}

.bio__card {
  width: 100%;
  max-width: 52rem;
  border: 1px solid var(--neu-dark);
  border-radius: var(--radius-sm);
  padding: 1.25rem 1.5rem;
  box-sizing: border-box;
  background: var(--neu-bg);
  box-shadow: var(--neu-shadow-sm);
}

.bio__image-wrap {
  width: 18%;
  margin: 0 auto;
  border-radius: var(--radius);
  overflow: hidden;
  background: #e8e8e8;
  box-shadow: var(--neu-shadow-sm);
  padding: 0.5rem;
}

@media (max-width: 768px) {
  .bio__image-wrap {
    width: 35%;
    margin-top: 0;
  }
}

.bio__image {
  display: block;
  width: 100%;
  height: auto;
  object-fit: contain;
  border-radius: calc(var(--radius) - 4px);
}

.bio__header {
  margin: 0 0 0.5rem;
}

.bio__content {
  margin-top: 1rem;
  max-width: 52rem;
  margin-left: auto;
  margin-right: auto;
  padding: 0;
  text-align: left;
}

body.is-biography-view .bio__content {
  max-width: 64rem;
}

/* CV: 3-column grid, left = Education/Awards/Press, middle+right = Exhibitions (2 cols) */
.cvWrap {
  display: grid;
  grid-template-columns: 1.05fr 1fr 1fr;
  gap: 32px 56px;
  align-items: start;
  margin-top: 0.5rem;
}

.cvLeft {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.cvBlock {
  break-inside: avoid;
  margin: 0;
}

.cvHeading {
  margin: 0 0 8px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.cvText,
.cvWrap,
.cvBlock,
.cvExhibCol {
  font-size: 16px;
  line-height: 1.35;
}

.cvExhibitions {
  grid-column: 2 / 4;
}

.cvExhibGrid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 24px 48px;
  align-items: start;
}

.cvExhibCol {
  break-inside: avoid;
}

.cvList {
  list-style: none;
  padding: 0;
  margin: 0;
}

.cvList li {
  margin: 0;
  line-height: 1.35;
}

.cvList li strong {
  font-weight: 600;
}

@media (max-width: 1100px) {
  .cvWrap {
    grid-template-columns: 1fr;
  }
  .cvExhibitions {
    grid-column: auto;
  }
  .cvExhibGrid {
    grid-template-columns: 1fr;
  }
}

/* Mobile: biography text same size as artwork detail specs (0.875rem) */
@media (max-width: 768px) {
  .bio__content {
    font-size: 0.875rem;
  }
  .bio__content .bio__name {
    font-size: 1rem;
  }
  .bio__content .bio__details {
    font-size: 0.875rem;
  }
  .bio__content .cvWrap,
  .bio__content .cvBlock,
  .bio__content .cvExhibCol,
  .bio__content .cvHeading,
  .bio__content .cvList,
  .bio__content .cvList li {
    font-size: 0.875rem;
  }
}

.bio__name {
  margin: 0 0 0.3rem;
  font-size: clamp(1.2rem, 2.5vw, 1.5rem);
  font-weight: 600;
  color: var(--text-primary);
  text-shadow: var(--text-engraved-sm);
}

.bio__details {
  margin: 0 0 0.9rem;
  font-size: 1rem;
  color: var(--text-secondary);
  text-shadow: var(--text-engraved-sm);
}

/* Events page */
body.is-events-view {
  align-items: flex-start;
  justify-content: flex-start;
  padding: 2rem 1rem 48px;
  padding-top: 5rem;
  box-sizing: border-box;
}

.events {
  width: 100%;
  max-width: 56rem;
  margin: 0 auto;
  padding: 0 1.5rem;
}

.events__calendar {
  margin-bottom: 2rem;
}

.cal {
  background: var(--neu-bg);
  border-radius: var(--radius-sm);
  box-shadow: var(--neu-shadow-sm);
  padding: 1.25rem;
  max-width: 100%;
}

.cal__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 1rem;
}

.cal__month {
  font-size: 1rem;
  font-weight: 600;
  color: var(--text-primary);
  text-shadow: var(--text-engraved-sm);
}

.cal__nav {
  background: var(--neu-bg);
  border: none;
  border-radius: 50%;
  width: 2rem;
  height: 2rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-shadow: var(--neu-shadow-sm);
  color: var(--text-primary);
  cursor: pointer;
  transition: box-shadow 0.2s ease;
}

.cal__nav:hover {
  box-shadow: 6px 6px 12px var(--neu-dark), -6px -6px 12px var(--neu-light);
}

.cal__nav:active {
  box-shadow: var(--neu-inset);
}

.cal__grid {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 4px;
  text-align: center;
}

.cal__day-name {
  font-size: 0.7rem;
  font-weight: 600;
  color: var(--text-secondary);
  text-shadow: var(--text-engraved-sm);
  padding: 0.25rem 0;
}

.cal__cell {
  font-size: 0.8rem;
  color: var(--text-primary);
  padding: 0.4rem 0;
  border-radius: 8px;
  transition: background 0.15s ease;
}

.cal__cell--empty {
  visibility: hidden;
}

.cal__cell--today {
  background: var(--neu-bg);
  box-shadow: var(--neu-inset);
  font-weight: 600;
}

.cal__cell--event {
  background: #c4c4c4;
  color: #555;
  font-weight: 600;
  box-shadow: inset 2px 2px 4px rgba(0,0,0,0.1), inset -2px -2px 4px rgba(255,255,255,0.5);
  cursor: default;
}

.events__empty {
  color: var(--text-secondary);
  font-size: 0.9rem;
}

.event-card {
  display: flex;
  gap: 1.25rem;
  background: var(--neu-bg);
  border-radius: var(--radius-sm);
  box-shadow: var(--neu-shadow-sm);
  padding: 1.25rem;
  margin-bottom: 1rem;
}

.event-card__date-badge {
  flex-shrink: 0;
  width: 4.5rem;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  background: var(--neu-bg);
  border-radius: 12px;
  box-shadow: var(--neu-inset);
  padding: 0.75rem 0.5rem;
  text-align: center;
}

.event-card__date-month {
  font-size: 0.7rem;
  font-weight: 600;
  text-transform: uppercase;
  color: var(--text-secondary);
  letter-spacing: 0.05em;
}

.event-card__date-day {
  font-size: 1.5rem;
  font-weight: 700;
  color: var(--text-primary);
  text-shadow: var(--text-engraved);
  line-height: 1.2;
}

.event-card__date-weekday {
  font-size: 0.65rem;
  color: var(--text-secondary);
  text-shadow: var(--text-engraved-sm);
}

.event-card__info {
  flex: 1;
  min-width: 0;
}

.event-card__title {
  font-size: 1rem;
  font-weight: 600;
  color: var(--text-primary);
  text-shadow: var(--text-engraved-sm);
  margin: 0 0 0.35rem;
}

.event-card__time,
.event-card__venue {
  font-size: 0.8rem;
  color: var(--text-secondary);
  margin: 0 0 0.2rem;
}

.event-card__desc {
  font-size: 0.8rem;
  color: var(--text-secondary);
  margin: 0.5rem 0 0.75rem;
  line-height: 1.5;
}

.event-card__actions {
  display: flex;
  align-items: center;
  gap: 1rem;
}

.event-card__price {
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--text-primary);
  text-shadow: var(--text-engraved-sm);
}

.event-card__ticket {
  display: inline-block;
  font-family: inherit;
  font-size: 0.8rem;
  font-weight: 500;
  color: var(--text-primary);
  text-shadow: var(--text-engraved-sm);
  text-decoration: none;
  background: var(--neu-bg);
  padding: 0.45rem 1rem;
  border-radius: var(--radius-sm);
  box-shadow: var(--neu-shadow-sm);
  transition: box-shadow 0.2s ease;
}

.event-card__ticket:hover {
  box-shadow: 6px 6px 12px var(--neu-dark), -6px -6px 12px var(--neu-light);
}

.event-card__ticket:active {
  box-shadow: var(--neu-inset);
}

@media (max-width: 768px) {
  body.is-events-view {
    padding: 1rem 1.5rem 48px;
  }

  body.is-events-view .site-header {
    position: relative !important;
    top: auto !important;
    left: auto !important;
    right: auto !important;
    width: 100%;
    margin: 0 -1.5rem 0.5rem;
    padding: 1rem 1.5rem;
  }

  .events {
    padding: 0;
  }

  .cal {
    max-width: 100%;
  }

  .event-card {
    flex-direction: column;
    gap: 0.75rem;
  }

  .event-card__date-badge {
    flex-direction: row;
    width: auto;
    gap: 0.5rem;
    padding: 0.5rem 0.75rem;
  }

  .event-card__date-day {
    font-size: 1.2rem;
  }
}

/* Contact section – Neumorphism icon links */
.contact {
  width: 100%;
  max-width: 560px;
  margin: 0 auto;
  padding: 3rem 1.5rem 4rem;
  text-align: center;
}

/* Contact page only: just the contact card, centered in viewport */
body.is-contact-view .contact {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: calc(100vh - 7.5rem);
  padding: 0 1.5rem;
  box-sizing: border-box;
}

.contact__card {
  background: var(--neu-bg);
  border-radius: var(--radius);
  box-shadow: var(--neu-shadow-sm);
  padding: 2rem 2.5rem;
}

.contact__title {
  margin: 0 0 1.5rem;
  font-size: clamp(1.1rem, 2.5vw, 1.35rem);
  font-weight: 600;
  color: var(--text-primary);
  text-shadow: var(--text-engraved-sm);
}

.contact__icons {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 1.25rem;
}

.contact__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 3.5rem;
  height: 3.5rem;
  background: var(--neu-bg);
  border-radius: var(--radius-sm);
  box-shadow: var(--neu-shadow-sm);
  color: var(--text-primary);
  text-decoration: none;
  transition: box-shadow 0.2s ease, color 0.2s ease;
}

.contact__icon:hover {
  box-shadow: 6px 6px 12px var(--neu-dark), -6px -6px 12px var(--neu-light);
  color: var(--text-primary);
}

.contact__icon:active {
  box-shadow: var(--neu-inset);
}

.contact__icon-svg {
  width: 1.5rem;
  height: 1.5rem;
}

/* Artwork page: scroll snap to 2 rows, no cropping (desktop / large screens) */
.is-artwork-page {
  scroll-snap-type: y mandatory;
  scroll-padding-top: 5rem;
  scroll-padding-bottom: 2rem;
}

.artwork-page {
  width: 100%;
  max-width: 1200px;
  padding-top: 5rem;
  padding-bottom: 2rem;
  margin: 0 auto;
  align-self: flex-start;
}

.artwork-grid {
  display: block;
}

/*
  Right way: (1) Section = viewport height so snap shows exactly 2 rows.
  (2) Square cells so frame/border shape unchanged. (3) Frame styling untouched.
  (4) Only images in snap sections: contain so uncropped.
*/
/* Visible area when snapped = 100vh - scroll-padding-top - scroll-padding-bottom = 100vh - 7rem */
.artwork-snap-section {
  --artwork-cell: calc((100vh - 5rem - 2rem - 1.5rem) / 2);
  display: grid;
  grid-template-columns: repeat(3, var(--artwork-cell));
  grid-template-rows: var(--artwork-cell) var(--artwork-cell);
  gap: 1.5rem;
  width: max-content;
  max-width: 100%;
  height: calc(100vh - 5rem - 2rem);
  margin-left: auto;
  margin-right: auto;
  margin-bottom: 5rem;
  scroll-snap-align: start;
  scroll-snap-stop: always;
  box-sizing: border-box;
}

.artwork-snap-section:last-child {
  grid-template-rows: var(--artwork-cell);
}

.artwork-grid__link {
  display: block;
  min-height: 0;
  text-decoration: none;
  color: inherit;
}

.artwork-grid__frame {
  border-radius: var(--radius);
  overflow: hidden;
  background: #e8e8e8;
  box-shadow: var(--neu-shadow-sm);
  padding: 0.5rem;
  min-height: 0;
}

.artwork-grid__frame .artwork-grid__img {
  border-radius: calc(var(--radius) - 4px);
}

.artwork-grid__img {
  width: 100%;
  height: auto;
  display: block;
  object-fit: cover;
  aspect-ratio: 1;
}

.artwork-snap-section .artwork-grid__img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}

@media (max-width: 768px) {
  .artwork-snap-section {
    --artwork-cell: calc((100vh - 5rem - 2rem - 3rem) / 3);
    grid-template-columns: repeat(2, var(--artwork-cell));
    grid-template-rows: repeat(3, var(--artwork-cell));
  }

  .artwork-snap-section:last-child {
    grid-template-rows: var(--artwork-cell);
  }
}

@media (max-width: 480px) {
  .artwork-snap-section {
    --artwork-cell: calc((100vh - 5rem - 2rem - 7.5rem) / 6);
    grid-template-columns: var(--artwork-cell);
    grid-template-rows: repeat(6, var(--artwork-cell));
  }

  .artwork-snap-section:last-child {
    grid-template-rows: repeat(2, var(--artwork-cell));
  }

  body {
    padding: 1.25rem;
  }

  .hero__card {
    padding: 2.5rem 1.5rem;
  }
}

/* Mobile artwork layout: menu in flow, pair wrappers clip content */
@media (max-width: 768px) {
  html.is-artwork-page {
    scroll-snap-type: y mandatory;
    scroll-padding: 0;
  }

  body.artwork-page-body {
    margin: 0;
    padding: 0;
    height: auto;
    min-height: 0;
    display: block;
  }

  body.artwork-page-body .site-header {
    position: relative !important;
    top: auto !important;
    left: auto !important;
    right: auto !important;
    width: 100%;
    margin: 0;
    padding: 1rem 1.5rem;
  }

  body.artwork-page-body .artwork-page {
    width: 100%;
    max-width: 100%;
    padding: 0 1.5rem;
    margin: 0;
    box-sizing: border-box;
  }

  .artwork-grid {
    display: block;
    width: 100%;
  }

  .artwork-snap-section {
    display: contents;
  }

  .artwork-pair {
    overflow: hidden;
    display: flex;
    flex-direction: column;
    gap: 1rem;
  }

  .artwork-pair .artwork-grid__link {
    flex: 1;
    min-height: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
  }

  .artwork-grid__frame {
    width: 100%;
    height: 100%;
    max-width: 100%;
    min-height: 0;
    overflow: hidden;
    transform: scale(0.9);
  }

  .artwork-snap-section .artwork-grid__img,
  .artwork-grid__frame .artwork-grid__img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    object-position: center;
    aspect-ratio: auto;
  }
}

/* Artwork detail page: no scroll, specs fully visible */
html.is-artwork-detail-page,
body.artwork-detail-page {
  overflow: hidden;
  height: 100vh;
}

body.artwork-detail-page {
  min-height: 0;
  padding-top: 5.5rem;
  padding-bottom: 0;
  justify-content: flex-start;
}

.artwork-detail {
  width: 100%;
  max-width: 900px;
  margin: 0 auto;
  padding: 0.5rem 1.5rem 2rem;
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
  box-sizing: border-box;
}

@media (min-width: 1000px) {
  .artwork-detail {
    max-width: 1400px;
  }
}

/* Back: same look and width as Menu button */
.artwork-detail__back {
  display: inline-block;
  font-family: inherit;
  font-size: 1rem;
  font-weight: 500;
  color: var(--text-primary);
  text-shadow: var(--text-engraved-sm);
  text-decoration: none;
  background: var(--neu-bg);
  padding: 0.5rem 1rem;
  width: 5.5rem;
  text-align: center;
  border-radius: var(--radius-sm);
  box-shadow: var(--neu-shadow-sm);
  transition: box-shadow 0.2s ease, background 0.2s ease;
  flex-shrink: 0;
}

.artwork-detail__back:hover {
  box-shadow: 6px 6px 12px var(--neu-dark), -6px -6px 12px var(--neu-light);
}

.artwork-detail__back:active {
  box-shadow: var(--neu-inset);
}

.artwork-detail__content {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 1.5rem;
  position: relative;
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  overflow-x: hidden;
}

@media (min-width: 1000px) {
  .artwork-detail__specs {
    position: absolute;
    left: calc(50% + 647px / 2 + 2rem);
    top: 3.5rem;
    width: 220px;
    max-width: calc(100vw - (50% + 647px / 2 + 2rem) - 1.5rem);
  }

  .artwork-detail__coa {
    position: absolute;
    left: 0;
    margin-left: calc(50% - 647px / 2 - 2rem - 220px);
    top: 3.5rem;
    width: 220px;
    max-width: 220px;
    z-index: 2;
    overflow: visible;
  }
}

/* Artwork title: border, "Artwork Title:" on left, dynamic title on right (compact height) */
.artwork-detail__title-wrap {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  width: min(647px, 90vw, calc(100vh - 36rem));
  margin: 0 auto 0.5rem;
  padding: 0.3rem 0.75rem;
  border: 1px solid var(--neu-dark);
  border-radius: var(--radius-sm);
  background: var(--neu-bg);
  box-shadow: var(--neu-shadow-sm);
  flex-shrink: 0;
  box-sizing: border-box;
}

.artwork-detail__title-label {
  font-size: clamp(0.8rem, 2vw, 0.95rem);
  font-weight: 600;
  color: var(--text-primary);
  text-shadow: var(--text-engraved-sm);
  flex-shrink: 0;
}

.artwork-detail__title {
  margin: 0;
  font-size: clamp(1rem, 2.5vw, 1.2rem);
  font-weight: 500;
  color: var(--text-primary);
  text-shadow: var(--text-engraved-sm);
  text-align: left;
  flex: 1;
  min-width: 0;
  line-height: 1.25;
}

@media (min-width: 1000px) {
  .artwork-detail__title-wrap {
    position: absolute;
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    margin: 0 auto;
    width: min(647px, 90vw, calc(100vh - 10rem));
    z-index: 1;
  }
}

/* Wrapper: cell (arrows are inside the frame) */
.artwork-detail__cell-wrap {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

@media (min-width: 1000px) {
  .artwork-detail__cell-wrap {
    position: absolute;
    left: 50%;
    top: 3.5rem;
    transform: translateX(-50%);
  }
}

/* Frame on detail page: relative so arrows sit inside the border */
.artwork-detail__cell .artwork-detail__frame {
  position: relative;
  overflow: visible;
}

/* Prev/next arrows inside the artwork border */
.artwork-detail__arrow {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2.5rem;
  height: 2.5rem;
  border-radius: 50%;
  background: var(--neu-bg);
  box-shadow: var(--neu-shadow-sm);
  color: var(--text-primary);
  text-decoration: none;
  transition: box-shadow 0.2s ease;
  z-index: 1;
}

.artwork-detail__arrow--prev {
  left: 3%;
}

.artwork-detail__arrow--next {
  right: 3%;
}

.artwork-detail__arrow:hover {
  box-shadow: 6px 6px 12px var(--neu-dark), -6px -6px 12px var(--neu-light);
}

.artwork-detail__arrow:active {
  box-shadow: var(--neu-inset);
}

.artwork-detail__arrow svg {
  display: block;
}

/* Fullscreen: lock viewport so nothing scrolls */
html.is-artwork-detail-page:has(.artwork-detail-page--fullscreen),
body.artwork-detail-page--fullscreen {
  overflow: hidden !important;
  height: 100vh;
}

/* Fullscreen: header stays fixed so Menu/Back remain accessible */
body.artwork-detail-page--fullscreen .site-header {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  margin: 0;
  width: 100%;
}

/* Fullscreen view: only artwork + arrows, menu and back stay visible */
body.artwork-detail-page--fullscreen .artwork-detail__title-wrap,
body.artwork-detail-page--fullscreen .artwork-detail__specs,
body.artwork-detail-page--fullscreen .artwork-detail__price-block,
body.artwork-detail-page--fullscreen .artwork-detail__coa {
  display: none !important;
}

body.artwork-detail-page--fullscreen .artwork-detail__content {
  justify-content: center;
  overflow: visible;
}

/* Center in viewport – horizontally aligned with Menu/Back, vertically in space below header */
body.artwork-detail-page--fullscreen .artwork-detail__cell-wrap {
  position: fixed;
  left: 50%;
  right: auto;
  top: calc(5rem + (100vh - 5rem) / 2);
  transform: translate(-50%, -50%);
  width: auto;
  height: auto;
  margin: 0;
  z-index: 0;
  transition: top 0.3s ease-out;
}

body.artwork-detail-page--fullscreen:has(.menu--open) .artwork-detail__cell-wrap {
  top: calc(14rem + (100vh - 14rem) / 2);
}

body.artwork-detail-page--fullscreen .artwork-detail__cell {
  width: min(90vw, calc(100vh - 6rem));
  height: min(90vw, calc(100vh - 6rem));
  max-width: 95vw;
  max-height: calc(100vh - 5.5rem);
  box-sizing: border-box;
}

@media (max-width: 768px) {
  body.artwork-detail-page--fullscreen .artwork-detail__cell {
    width: min(calc(100vw - 1.5rem), calc(100vh - 4rem));
    height: min(calc(100vw - 1.5rem), calc(100vh - 4rem));
    max-width: calc(100vw - 1.5rem);
    max-height: calc(100vh - 4rem);
  }
}

body.artwork-detail-page--fullscreen .artwork-detail__cell .artwork-detail__frame {
  width: 100%;
  height: 100%;
  border-radius: var(--radius);
  box-shadow: var(--neu-shadow-sm);
  overflow: hidden;
  box-sizing: border-box;
}

.artwork-detail__frame {
  cursor: pointer;
}

/* Magnifying glass in fullscreen: cursor + loupe */
body.artwork-detail-page--fullscreen .artwork-detail__cell {
  cursor: none;
}

body.artwork-detail-page--fullscreen .artwork-detail__arrow {
  cursor: pointer;
}

.artwork-detail__magnifier {
  display: none;
  position: fixed;
  width: 140px;
  height: 140px;
  border-radius: 50%;
  border: 3px solid rgba(255, 255, 255, 0.9);
  box-shadow: 0 4px 24px rgba(0, 0, 0, 0.25), inset 0 0 0 1px rgba(0, 0, 0, 0.08);
  pointer-events: none;
  z-index: 100;
  overflow: hidden;
  background-color: #e8e8e8;
  background-repeat: no-repeat;
  transform: translate(-50%, -50%);
  box-sizing: border-box;
}

/* Cell: full 647px when room; shrinks so image + specs fit in one viewport (no scroll, specs fully visible) */
.artwork-detail__cell {
  width: min(647px, 90vw, calc(100vh - 36rem));
  aspect-ratio: 1;
  flex-shrink: 0;
}

@media (min-width: 1000px) {
  .artwork-detail__cell {
    width: min(647px, 90vw, calc(100vh - 10rem));
  }
}

/* Mobile product view: artwork + title central, image much larger */
@media (max-width: 768px) {
  html.is-artwork-detail-page,
  body.artwork-detail-page {
    overflow-y: auto;
    overflow-x: hidden;
    height: auto;
    min-height: 100vh;
  }

  /* Less top padding so header is in flow – scrolls with content, dropdown pushes content down */
  body.artwork-detail-page {
    padding: 0.75rem 2rem 1.5rem;
    align-items: center;
  }

  /* Mobile: header in flow so it scrolls up with content and dropdown expands/pushes content down */
  body.artwork-detail-page .site-header {
    position: relative;
    align-self: stretch;
    width: 100%;
    margin: 0 -2rem;
    padding: 1.5rem 2rem;
  }

  body.artwork-detail-page .artwork-detail__back {
    right: -2rem;
  }

  .artwork-detail {
    max-width: 100%;
    width: 100%;
    padding: 0 0 1.5rem;
    box-sizing: border-box;
    align-self: stretch;
  }

  .artwork-detail__content {
    gap: 0.5rem;
    overflow: visible;
    width: 100%;
    align-items: center;
    text-align: center;
  }

  /* Title first, centered – compact height */
  .artwork-detail__title-wrap {
    order: 1;
    flex-direction: column;
    align-items: center;
    text-align: center;
    width: 100%;
    max-width: 100%;
    margin: 0 0 0.05rem;
    padding: 0.2rem 0.5rem;
    border-radius: var(--radius-sm);
    background: var(--neu-bg);
    box-shadow: var(--neu-shadow-sm);
  }

  .artwork-detail__title-label {
    font-size: 0.6rem;
    letter-spacing: 0.08em;
    margin: 0 0 0.05rem;
  }

  .artwork-detail__title {
    text-align: center;
    font-size: clamp(0.9rem, 4vw, 1.1rem);
    margin: 0;
    line-height: 1.2;
  }

  /* Artwork cell: large, centered */
  .artwork-detail__cell-wrap {
    order: 2;
    width: 100%;
    display: flex;
    justify-content: center;
    align-items: center;
  }

  /* Artwork capped so info section fits in viewport */
  .artwork-detail__cell {
    width: min(calc(100vw - 4rem), min(45vh, 320px));
    max-width: calc(100vw - 4rem);
    aspect-ratio: 1;
    flex-shrink: 0;
  }

  /* Match desktop frame: neumorphism border, padding, radius */
  .artwork-detail__cell .artwork-grid__frame {
    width: 100%;
    height: 100%;
    border-radius: var(--radius);
    overflow: hidden;
    background: #e8e8e8;
    box-shadow: var(--neu-shadow-sm);
    padding: 0.5rem;
  }

  .artwork-detail__cell .artwork-grid__frame .artwork-grid__img {
    border-radius: calc(var(--radius) - 4px);
  }

  /* Specs, price, COA – tight spacing, visible on load */
  .artwork-detail__specs {
    order: 3;
    margin-top: 0.75rem;
    max-width: calc(100vw - 4rem);
    padding: 0.85rem 1rem;
  }

  .artwork-detail__specs .artwork-detail__list {
    font-size: 0.875rem;
    margin-bottom: 0.5rem;
  }

  .artwork-detail__specs .artwork-detail__list dt {
    margin-top: 0.5rem;
  }

  .artwork-detail__price-block {
    order: 4;
    max-width: calc(100vw - 4rem);
    justify-content: center;
    margin-top: 0.35rem;
  }

  .artwork-detail__coa {
    order: 5;
    max-width: calc(100vw - 4rem);
    margin-top: 0.5rem;
  }
}

.artwork-detail__cell .artwork-grid__frame {
  width: 100%;
  height: 100%;
  border-radius: var(--radius);
  overflow: hidden;
  background: #e8e8e8;
  box-shadow: var(--neu-shadow-sm);
  padding: 0.5rem;
}

.artwork-detail__cell .artwork-grid__frame .artwork-grid__img {
  border-radius: calc(var(--radius) - 4px);
}

.artwork-detail__cell .artwork-grid__img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}

.artwork-detail__specs {
  width: 100%;
  max-width: min(320px, 85vw);
  min-width: 0;
  background: var(--neu-bg);
  box-shadow: var(--neu-shadow-sm);
  border-radius: var(--radius-sm);
  padding: 1.25rem 1.5rem;
  overflow-wrap: break-word;
  word-wrap: break-word;
  word-break: break-word;
  box-sizing: border-box;
}

.artwork-detail__list {
  margin: 0 0 1rem;
  font-size: 0.95rem;
  color: var(--text-primary);
  overflow-wrap: break-word;
  word-wrap: break-word;
}

.artwork-detail__list dt {
  font-weight: 600;
  margin-top: 0.75rem;
  margin-bottom: 0.2em;
  overflow-wrap: break-word;
  word-wrap: break-word;
}

.artwork-detail__list dt:first-child {
  margin-top: 0;
}

.artwork-detail__list dd {
  margin: 0;
  overflow-wrap: break-word;
  word-wrap: break-word;
  max-width: 100%;
}

/* Price / enquiry above certificate */
.artwork-detail__price-block {
  position: static;
  margin-top: 1rem;
  width: 100%;
  max-width: min(320px, 85vw);
  min-width: 0;
  display: flex;
  align-items: center;
  gap: 0.75rem;
  flex-wrap: wrap;
}

@media (min-width: 1000px) {
  .artwork-detail__price-block {
    position: absolute;
    left: 0;
    margin-left: calc(50% - 647px / 2 - 2rem - 220px);
    top: 3.5rem;
    width: 220px;
  }
}

.artwork-detail__buy {
  display: inline-block;
  font-family: inherit;
  font-size: 1rem;
  font-weight: 500;
  color: var(--text-primary);
  text-shadow: var(--text-engraved-sm);
  text-decoration: none;
  background: var(--neu-bg);
  padding: 0.5rem 1.25rem;
  border-radius: var(--radius-sm);
  box-shadow: var(--neu-shadow-sm);
  transition: box-shadow 0.2s ease, background 0.2s ease;
}

.artwork-detail__buy:hover {
  box-shadow: 6px 6px 12px var(--neu-dark), -6px -6px 12px var(--neu-light);
}

.artwork-detail__buy:active {
  box-shadow: var(--neu-inset);
}

/* Certificate of Authenticity: to the left of image, top-aligned (outside image) */
.artwork-detail__coa {
  position: static;
  margin-top: 1.25rem;
  width: 100%;
  max-width: min(320px, 85vw);
  min-width: 0;
  overflow: visible;
}

@media (min-width: 1000px) {
  .artwork-detail__coa {
    position: absolute;
    left: 0;
    margin-left: calc(50% - 647px / 2 - 2rem - 220px);
    top: calc(9.5rem - 3vh);
    max-width: 220px;
  }
}

.coa-trigger {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  width: 100%;
  padding: 0.5rem 0;
  font-family: inherit;
  font-size: 0.95rem;
  font-weight: 500;
  color: var(--text-primary);
  text-shadow: var(--text-engraved-sm);
  background: none;
  border: none;
  cursor: pointer;
  text-align: left;
}

.coa-trigger:hover {
  color: var(--text-primary);
}

.coa-trigger__icon {
  flex-shrink: 0;
  line-height: 0;
  color: var(--text-primary);
}

.coa-trigger__icon svg {
  display: block;
}

.coa-trigger u {
  text-decoration: underline;
}

.coa-dropdown {
  max-height: 0;
  overflow: hidden;
  padding: 0;
  transition: max-height 0.3s ease-out;
  pointer-events: none;
  will-change: max-height;
}

.artwork-detail__coa.coa--open .coa-dropdown {
  max-height: 24rem;
  padding: 0.75rem 0 0;
  pointer-events: auto;
  overflow: visible;
}

.coa-dropdown__title {
  margin: 0 0 0.5rem;
  font-size: 0.95rem;
  font-weight: 600;
  color: var(--text-primary);
}

.coa-dropdown__text {
  margin: 0 0 0.5rem;
  font-size: 0.875rem;
  color: var(--text-secondary);
  line-height: 1.5;
}

.coa-dropdown__text:last-child {
  margin-bottom: 0;
}
