/* ============================================================
   Dawn Marie Hayes — site.css
   Single shared stylesheet for all pages (EN + IT)
   ============================================================ */

/* ----------------------------------------------------------
   1. @font-face declarations (all fonts are self-hosted)
   ---------------------------------------------------------- */

/* Cinzel — display / navigation */
@font-face {
  font-family: 'cinzel';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/google/cinzel/v9/8vIJ7ww63mVu7gt79mT7PkRXMw.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
    U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'cinzel';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/google/cinzel/v9/8vIJ7ww63mVu7gt7-GT7PkRXM8Xx.woff2') format('woff2');
  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113,
    U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'cinzel';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('/fonts/google/cinzel/v9/8vIK7ww63mVu7gtzTUHuE2ZaGf_4-g.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
    U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'cinzel';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('/fonts/google/cinzel/v9/8vIK7ww63mVu7gtzTUHuHWZaGf_4-ial.woff2') format('woff2');
  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113,
    U+2C60-2C7F, U+A720-A7FF;
}

/* Cormorant Garamond — body text */
@font-face {
  font-family: 'cormorant garamond';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/google/cormorantgaramond/v16/co3bmX5slCNuHLi8bLeY9MK7whWMhyjYqXtKky2F7g.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
    U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'cormorant garamond';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/google/cormorantgaramond/v16/co3bmX5slCNuHLi8bLeY9MK7whWMhyjYp3tKky2F7i6C.woff2') format('woff2');
  unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
    U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'cormorant garamond';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/google/cormorantgaramond/v16/co3ZmX5slCNuHLi8bLeY9MK7whWMhyjYrEtImSqn7B6D.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
    U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'cormorant garamond';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/google/cormorantgaramond/v16/co3ZmX5slCNuHLi8bLeY9MK7whWMhyjYrEtGmSqn7B6DxjY.woff2') format('woff2');
  unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
    U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'cormorant garamond';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('/fonts/google/cormorantgaramond/v16/co3YmX5slCNuHLi8bLeY9MK7whWMhyjQEl5fvg-IxBSL_g.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
    U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'cormorant garamond';
  font-style: italic;
  font-weight: 700;
  font-display: swap;
  src: url('/fonts/google/cormorantgaramond/v16/co3WmX5slCNuHLi8bLeY9MK7whWMhyjYrEPzvD-KzhOp_D95.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
    U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Montserrat Light — small labels, footer */
@font-face {
  font-family: 'Montserrat';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url('/fonts/google/montserrat/montserrat-v31-light-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
    U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215,
    U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Montserrat';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url('/fonts/google/montserrat/montserrat-v31-light-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304,
    U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB,
    U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* ----------------------------------------------------------
   2. CSS reset
   ---------------------------------------------------------- */
*, *::before, *::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}
body {
  background: var(--bg);
  color: var(--text);
}
img {
  max-width: 100%;
  display: block;
}
a {
  color: inherit;
  text-decoration: none;
}

/* Skip-to-content link (visible on focus for keyboard users) */
.skip-link {
  position: absolute;
  top: -100%;
  left: 50%;
  transform: translateX(-50%);
  background: var(--gold);
  color: var(--bg);
  padding: 8px 20px;
  font-family: var(--font-sans);
  font-size: 13px;
  letter-spacing: 0.05em;
  border-radius: 0 0 8px 8px;
  z-index: 100;
  text-decoration: none;
}
.skip-link:focus {
  top: 0;
}

/* Focus indicators for keyboard navigation */
:focus-visible {
  outline: 2px solid var(--gold, #c9a84c);
  outline-offset: 2px;
}
.contact-form input:focus-visible,
.contact-form textarea:focus-visible {
  outline: none;
  border-bottom-color: var(--gold);
  box-shadow: 0 1px 0 0 var(--gold);
}

/* ----------------------------------------------------------
   3. CSS custom properties
   ---------------------------------------------------------- */
:root {
  --font-display:  'cinzel', serif;
  --font-body:     'cormorant garamond', Georgia, serif;
  --font-sans:     'Montserrat', 'Helvetica Neue', Arial, sans-serif;
  /* Dark theme: header/footer text on navy background */
  --text:          #e8e4de;
  --text-muted:    rgb(160, 160, 160);
  --text-light:    rgb(120, 120, 120);
  /* Content area: dark text on white background */
  --text-dark:     rgb(48, 49, 49);
  --text-dark-muted: rgb(110, 110, 110);
  --text-dark-light: rgb(176, 176, 176);
  --accent-blue:   rgb(140, 160, 180);
  --accent-mauve:  rgb(153, 94, 122);
  --gold:          #c9a84c;
  --bg:            #181a2c;
  --bg-content:    #ffffff;
  --max-width:     980px;
}

/* ----------------------------------------------------------
   4. Layout skeleton
   ---------------------------------------------------------- */
body {
  font-family: var(--font-sans);
  font-size: 16px;
  line-height: 1.5;
}

.site-wrapper {
  max-width: var(--max-width);
  margin: 0 auto;
  padding: 0 20px;
}

/* Header */
header {
  text-align: center;
  padding: 48px 20px 24px;
  margin-bottom: 0;
}

.site-title {
  font-family: var(--font-display);
  font-size: 39px;
  font-weight: 400;
  letter-spacing: 0.22em;
  color: var(--text);
  text-transform: uppercase;
  margin-bottom: 24px;
  display: block;
  text-decoration: none;
}

/* Navigation */
nav {
  margin-bottom: 12px;
}
nav ul {
  list-style: none;
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 0.4em 2em;
}
nav a {
  font-family: var(--font-display);
  font-size: 13px;
  font-weight: 400;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--text);
  padding-bottom: 2px;
}
nav a:hover {
  color: var(--gold);
}
nav a.active {
  border-bottom: 1px solid currentColor;
}

/* ----------------------------------------------------------
   5. Language switcher — flag dropdown
   ---------------------------------------------------------- */
.lang-switcher {
  position: relative;
  display: inline-block;
  margin-top: 10px;
}
.lang-trigger {
  display: flex;
  align-items: center;
  gap: 6px;
  font-family: var(--font-display);
  font-size: 11px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--text);
  background: rgba(255,255,255,0.1);
  border: 1px solid rgba(255,255,255,0.2);
  border-radius: 20px;
  padding: 6px 14px;
  cursor: pointer;
}
.lang-trigger:hover {
  background: rgba(255,255,255,0.15);
}
.lang-flag {
  font-style: normal;
  font-size: 14px;
  line-height: 1;
}
.lang-chevron {
  font-size: 8px;
  margin-left: 2px;
  transition: transform 0.2s;
}
.lang-menu {
  display: none;
  position: absolute;
  top: 100%;
  left: 50%;
  transform: translateX(-50%);
  margin-top: 4px;
  background: rgba(255,255,255,0.1);
  border: 1px solid rgba(255,255,255,0.2);
  border-radius: 12px;
  padding: 4px 0;
  min-width: 100%;
  backdrop-filter: blur(8px);
  z-index: 10;
}
.lang-switcher:hover .lang-menu,
.lang-switcher:focus-within .lang-menu,
.lang-switcher.open .lang-menu {
  display: block;
}
.lang-switcher:hover .lang-chevron,
.lang-switcher:focus-within .lang-chevron,
.lang-switcher.open .lang-chevron {
  transform: rotate(180deg);
}
.lang-menu a {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 6px 14px;
  font-family: var(--font-display);
  font-size: 11px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--text-muted);
  white-space: nowrap;
}
.lang-menu a:hover {
  color: var(--gold);
}

/* Header social links (Facebook + Academia.edu) */
.header-social {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 24px;
  margin-top: 20px;
}
.header-social a {
  text-decoration: none;
  display: flex;
  align-items: center;
}
.header-social svg {
  width: 36px;
  height: 36px;
  opacity: 0.8;
  transition: opacity 0.2s;
  color: var(--text);
}
.header-social a:hover svg {
  opacity: 1;
}
.academia-btn {
  display: inline-block;
  font-family: var(--font-display);
  font-size: 11px;
  font-weight: 400;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--bg);
  background: var(--gold);
  padding: 10px 24px;
  border-radius: 20px;
  transition: background-color 0.2s;
}
.academia-btn:hover {
  background: #d4b35a;
}

/* Main content area — dark bg matching header/footer */
main {
  padding: 48px 20px 64px;
  color: var(--text);
}

/* Footer */
footer {
  text-align: center;
  padding: 32px 20px 48px;
  font-family: var(--font-sans);
  font-size: 12px;
  color: var(--text-muted);
  line-height: 1.8;
}

footer a {
  color: var(--text-muted);
  text-decoration: underline;
  text-underline-offset: 2px;
}
footer a:hover {
  color: var(--gold);
}

.footer-social {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 20px;
  margin-top: 16px;
}
.footer-social a {
  text-decoration: none;
  display: flex;
  align-items: center;
}
.footer-social svg {
  width: 28px;
  height: 28px;
  opacity: 0.7;
  transition: opacity 0.2s;
  color: var(--text);
}
.footer-social a:hover svg {
  opacity: 1;
}
.footer-social .academia-link {
  font-family: var(--font-sans);
  font-size: 11px;
  letter-spacing: 0.08em;
  color: var(--text-muted);
  text-transform: uppercase;
}
.footer-social .academia-link:hover {
  color: var(--gold);
}

/* ----------------------------------------------------------
   6. Page-specific styles
   ---------------------------------------------------------- */

/* --- Home page --- */
/* Home page main has no content bg — hero sits on the dark navy */
.home main {
  background: transparent;
  padding: 0;
}
.hero-image-wrap {
  margin: 0 -20px;
}
.hero-image-wrap img {
  width: 100%;
  height: auto;
}

/* --- About / Projects page --- */
.page-heading {
  font-family: var(--font-display);
  font-size: 48px;
  font-weight: 400;
  letter-spacing: 0.06em;
  text-align: center;
  margin-bottom: 36px;
  line-height: 1.1;
  text-transform: uppercase;
}

/* Signature vanitas heading: layered cyan + red text-shadow effect */
.vanitas-heading {
  /* Three layers: base text on top, cyan offset behind, red offset further behind */
  text-shadow:
    2px 2px 0 #00b0ca,
    4px 4px 0 #ed1c24;
  color: var(--text);
}

.main-image {
  width: 100%;
  max-width: 700px;
  margin: 0 auto 36px;
}

/* Vanitas image map — clickable numbered hotspots */
.vanitas-map {
  position: relative;
}
.vanitas-map img {
  display: block;
  width: 100%;
}
.hotspot {
  position: absolute;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  text-decoration: none;
  cursor: pointer;
  transition: background-color 0.2s;
}
.hotspot span {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0,0,0,0);
}
.hotspot:hover {
  background: rgba(255,255,255,0.15);
}

.body-text {
  font-family: var(--font-body);
  font-size: 19px;
  font-weight: 400;
  line-height: 1.7;
  max-width: 720px;
  margin: 0 auto 40px;
}
.body-text p {
  margin-bottom: 1.25em;
}
.body-text p:last-child {
  margin-bottom: 0;
}
.body-text em {
  font-style: italic;
}

/* Image gallery row */
.image-row {
  display: flex;
  gap: 40px;
  justify-content: center;
  align-items: center;
  margin: 40px 0;
  flex-wrap: wrap;
}
.image-row img {
  height: auto;
  object-fit: cover;
}

/* 9 Objects list — two-column layout matching Wix */
.objects-list {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0 60px;
  max-width: 800px;
  margin: 0 auto 48px;
  text-align: center;
}
.objects-col {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.objects-center {
  grid-column: 1 / -1;
  text-align: center;
  margin-top: 8px;
}
.objects-list a {
  font-family: var(--font-display);
  font-size: 15px;
  font-weight: 400;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--text);
  text-decoration: none;
  line-height: 1.8;
}
.objects-list a:hover {
  color: var(--gold);
}

/* Family photo treatments */
.image-row .framed {
  width: 280px;
  border: 6px solid rgba(180,180,190,0.5);
  padding: 0;
}
.image-row .circular {
  width: 260px;
  height: 320px;
  border-radius: 50%;
  object-fit: cover;
  border: 6px solid rgba(255,255,255,0.8);
}

/* --- Projects page --- */
.projects-grid {
  display: flex;
  flex-direction: column;
  gap: 56px;
  max-width: 720px;
  margin: 0 auto;
}
.project-item {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 32px;
  align-items: start;
}
.project-item img {
  width: 100%;
  height: auto;
}
.project-info {
  padding-top: 8px;
}
.project-info h2 {
  font-family: var(--font-display);
  font-size: 14px;
  font-weight: 400;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--text);
  margin-bottom: 12px;
}
.project-info p {
  font-family: var(--font-body);
  font-size: 17px;
  line-height: 1.65;
  color: var(--text);
  margin-bottom: 16px;
}
.project-link {
  display: inline-block;
  font-family: var(--font-display);
  font-size: 11px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--text-muted);
  border-bottom: 1px solid var(--text-light);
  padding-bottom: 2px;
}
.project-link:hover {
  color: var(--text);
  border-color: var(--text);
}

/* --- Vita page --- */
.vita-center {
  text-align: center;
  padding: 60px 20px;
}
.vita-download-btn {
  display: inline-block;
  font-family: var(--font-display);
  font-size: 13px;
  font-weight: 400;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--text);
  border: 1px solid var(--text);
  padding: 14px 36px;
  text-decoration: none;
  transition: background-color 0.2s, color 0.2s;
}
.vita-download-btn:hover {
  background-color: var(--text);
  color: var(--bg);
}

/* --- Contact page --- */
.contact-intro {
  font-family: var(--font-body);
  font-size: 19px;
  line-height: 1.6;
  text-align: center;
  color: var(--text-muted);
  margin-bottom: 40px;
}

.contact-form {
  max-width: 560px;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  gap: 20px;
}
.contact-form label {
  display: flex;
  flex-direction: column;
  gap: 6px;
  font-family: var(--font-display);
  font-size: 11px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--text-muted);
}
.contact-form input,
.contact-form textarea {
  font-family: var(--font-body);
  font-size: 17px;
  color: var(--text-dark);
  background: rgba(255,255,255,0.9);
  border: none;
  border-bottom: 1px solid rgba(255,255,255,0.3);
  padding: 8px 4px;
  width: 100%;
  transition: border-color 0.2s;
  border-radius: 0;
  -webkit-appearance: none;
}
.contact-form input:focus,
.contact-form textarea:focus {
  border-bottom-color: var(--gold);
}
.contact-form textarea {
  resize: vertical;
  min-height: 120px;
}
.contact-form button[type="submit"] {
  align-self: flex-start;
  font-family: var(--font-display);
  font-size: 12px;
  font-weight: 400;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--text);
  background: transparent;
  border: 1px solid var(--text);
  padding: 12px 32px;
  cursor: pointer;
  transition: background-color 0.2s, color 0.2s;
}
.contact-form button[type="submit"]:hover {
  background-color: var(--text);
  color: var(--bg);
}

/* ----------------------------------------------------------
   7. Hamburger menu button (hidden on desktop)
   ---------------------------------------------------------- */
.hamburger {
  display: none;
  background: none;
  border: none;
  cursor: pointer;
  padding: 8px;
  margin: 0 auto;
}
.hamburger span {
  display: block;
  width: 24px;
  height: 2px;
  background: var(--text);
  margin: 5px 0;
  transition: transform 0.3s, opacity 0.3s;
}
/* Animate hamburger to X when open */
.nav-open .hamburger span:nth-child(1) {
  transform: rotate(45deg) translate(5px, 5px);
}
.nav-open .hamburger span:nth-child(2) {
  opacity: 0;
}
.nav-open .hamburger span:nth-child(3) {
  transform: rotate(-45deg) translate(5px, -5px);
}

/* ----------------------------------------------------------
   8. Responsive — tablet ≤ 820px
   ---------------------------------------------------------- */
@media (max-width: 820px) {
  .site-title {
    font-size: 30px;
    letter-spacing: 0.14em;
  }
  .page-heading {
    font-size: 36px;
  }
  .image-row {
    gap: 24px;
  }
  .image-row .framed {
    width: 200px;
  }
  .image-row .circular {
    width: 190px;
    height: 240px;
  }
  .project-item {
    gap: 24px;
  }
}

/* ----------------------------------------------------------
   9. Responsive — mobile ≤ 640px
   ---------------------------------------------------------- */
@media (max-width: 640px) {
  .site-title {
    font-size: 22px;
    letter-spacing: 0.08em;
  }
  .hamburger {
    display: block;
  }
  nav {
    display: none;
    margin-bottom: 0;
  }
  .nav-open nav {
    display: block;
  }
  nav ul {
    flex-direction: column;
    gap: 0.6em;
    padding: 12px 0;
  }
  nav a {
    font-size: 12px;
  }
  .header-social {
    margin-top: 12px;
  }
  main {
    padding: 32px 16px 48px;
  }
  .page-heading {
    font-size: 28px;
  }
  .vanitas-heading {
    text-shadow:
      1px 1px 0 #00b0ca,
      2px 2px 0 #ed1c24;
  }
  .body-text {
    font-size: 17px;
  }
  .objects-list {
    grid-template-columns: 1fr;
    gap: 0;
  }
  .objects-center {
    grid-column: 1;
  }
  .image-row {
    gap: 20px;
  }
  .image-row .framed {
    width: 160px;
  }
  .image-row .circular {
    width: 150px;
    height: 190px;
  }
  .project-item {
    grid-template-columns: 1fr;
  }
  .contact-form button[type="submit"] {
    align-self: stretch;
    text-align: center;
  }
}

/* ----------------------------------------------------------
   10. Print styles
   ---------------------------------------------------------- */
@media print {
  :root {
    --bg: #ffffff;
    --text: #000000;
    --text-dark: #000000;
    --text-muted: #333333;
  }
  body {
    background: #fff;
    color: #000;
  }
  .hamburger,
  .lang-switcher,
  .header-social,
  .footer-social,
  .skip-link {
    display: none !important;
  }
  nav {
    display: block !important;
  }
  nav a {
    color: #000;
  }
  .site-title {
    color: #000;
  }
  main {
    color: #000;
  }
  a[href]::after {
    content: " (" attr(href) ")";
    font-size: 0.8em;
    color: #555;
  }
  nav a[href]::after,
  .site-title::after,
  .objects-list a[href]::after,
  .hotspot::after {
    content: none;
  }
  .hero-image-wrap img,
  .main-image img {
    max-width: 100%;
  }
}
