/* ==========================================================================
   martylovesfilm.com — v2 (light / editorial, in the style of
   kristoferbonnell.com). Separate stylesheet so the existing dark project
   pages (styles.css) are untouched.
   ========================================================================== */

:root{
  --bg:        #000000;
  --fg:        #f5f4f1;   /* near-white main typeface */
  --muted:     #8f8c85;
  --accent:    #c2a878;   /* warm gold (menus) */
  --accent-ink:#d8c193;   /* brighter gold for hover on black */
  --line:      rgba(255,255,255,.12);
  --panel:     #111111;   /* media block backing */
  --wrap:      1040px;
  --ease:      cubic-bezier(.22,.61,.36,1);
}

*{ box-sizing:border-box; }

html{ scroll-behavior:smooth; }

body{
  margin:0;
  background:var(--bg);
  color:var(--fg);
  font-family:"Jost", -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif;
  font-weight:300;
  font-size:16px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}

img,video{ max-width:100%; display:block; }
a{ color:inherit; text-decoration:none; }

@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior:auto; }
  *{ animation-duration:.01ms !important; transition-duration:.01ms !important; }
}

.wrap{ max-width:var(--wrap); margin:0 auto; padding:0 28px; }

.skip-link{ position:absolute; left:-999px; top:0; background:var(--fg); color:#000; padding:12px 18px; z-index:200; }
.skip-link:focus{ left:16px; top:16px; }

/* ---------- Header ---------- */
.masthead{
  text-align:center;
  padding:64px 20px 40px;
}
.masthead .name{
  font-size:clamp(1.5rem, 3.4vw, 2.1rem);
  font-weight:300;
  letter-spacing:.34em;
  text-transform:uppercase;
  margin:0;
  /* optical: pull the trailing letter-space back so it stays centered */
  text-indent:.34em;
}
.masthead .name .csc{ color:var(--accent); letter-spacing:.12em; }
.masthead .role{
  margin:14px 0 0;
  font-size:.72rem;
  letter-spacing:.42em;
  text-indent:.42em;
  text-transform:uppercase;
  color:var(--muted);
}

/* ---------- Nav ---------- */
.mainnav{
  position:sticky; top:0; z-index:100;
  background:rgba(0,0,0,.82);
  backdrop-filter:saturate(140%) blur(8px);
  border-bottom:1px solid var(--line);
}
.mainnav ul{
  list-style:none; margin:0; padding:18px 20px;
  display:flex; justify-content:center; flex-wrap:wrap; gap:36px;
}
.mainnav a{
  font-size:.72rem; letter-spacing:.22em; text-transform:uppercase;
  color:var(--accent); font-weight:400;
  padding:4px 0; position:relative;
  transition:color .25s var(--ease);
}
.mainnav a::after{
  content:""; position:absolute; left:0; right:0; bottom:-2px; height:1px;
  background:var(--accent-ink); transform:scaleX(0); transform-origin:center;
  transition:transform .3s var(--ease);
}
.mainnav a:hover, .mainnav a:focus-visible{ color:var(--accent-ink); }
.mainnav a:hover::after, .mainnav a:focus-visible::after,
.mainnav a.is-active::after{ transform:scaleX(1); }
.mainnav a.is-active{ color:var(--fg); }

/* ---------- Sections ---------- */
main{ padding:24px 0 0; }
.section{ padding:52px 0; }
.section-head{
  text-align:center; margin:0 0 34px;
}
.section-head h2{
  font-size:.78rem; font-weight:400; letter-spacing:.34em; text-indent:.34em;
  text-transform:uppercase; margin:0; color:var(--fg);
}
.section-head .kicker{
  display:block; margin-top:8px; font-size:.66rem; letter-spacing:.28em;
  text-transform:uppercase; color:var(--muted);
}

/* ---------- Media blocks ---------- */
.reel{ margin:0 auto; }
.media{
  position:relative; width:100%; aspect-ratio:16/9;
  background:var(--panel); overflow:hidden;
}
.media video{ width:100%; height:100%; object-fit:cover; }

/* still-first tiles: poster image by default, video fades in on hover */
.media.has-still .still,
.media.has-still video{
  position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
}
.media.has-still .still{ z-index:1; }
.media.has-still video{ z-index:2; opacity:0; transition:opacity .45s var(--ease); }
.media.has-still:hover video{ opacity:1; }

/* poster wall — 4 across, above the Narrative videos */
.posters{
  display:grid;
  grid-template-columns:repeat(4, 1fr);
  gap:22px;
  align-items:start;
  margin:0 0 60px;
}
.poster{ margin:0; overflow:hidden; }
.poster a{ display:block; }
.poster img{
  width:100%; height:auto; display:block;
  background:var(--panel);
  box-shadow:0 6px 20px rgba(0,0,0,.4);
  transition:transform .5s var(--ease), box-shadow .5s var(--ease), filter .5s var(--ease);
  will-change:transform;
}
.poster:hover img, .poster:focus-within img{
  transform:translateY(-6px) scale(1.02);
  box-shadow:0 22px 48px rgba(0,0,0,.6);
  filter:brightness(1.06);
}

/* work: single centered column of large videos (reference style) */
.stack{ display:flex; flex-direction:column; gap:64px; }
/* Two-across grid variant (Selected Work). */
.stack.grid-2{ display:grid; grid-template-columns:repeat(2, 1fr); gap:40px 28px; }
.piece{ margin:0 auto; width:100%; }
.piece .media{ box-shadow:0 0 0 1px rgba(255,255,255,.05); }

/* Title overlays the video, revealed on hover/focus. */
.media figcaption{
  position:absolute; inset:0; z-index:3;
  display:flex; align-items:center; justify-content:center;
  text-align:center; padding:24px;
  background:linear-gradient(180deg, rgba(0,0,0,.10), rgba(0,0,0,.48));
  opacity:0; transition:opacity .4s var(--ease);
  pointer-events:none;
}
.media:hover figcaption,
.piece:focus-within figcaption{ opacity:1; }
.piece .title{
  font-size:1rem; letter-spacing:.2em; text-indent:.2em; text-transform:uppercase;
  color:#fff; font-weight:400;
  transform:translateY(6px); transition:transform .4s var(--ease);
  text-shadow:0 1px 18px rgba(0,0,0,.5);
}
.media:hover .title,
.piece:focus-within .title{ transform:none; }

/* Table Top uses the same .stack / .piece treatment as Selected Work,
   so all its videos are one-per-row at identical size. */

/* Grid videos link through to their own page. */
.piece-link{ display:block; }

/* ---------- Single-video project page ---------- */
.project{ padding-top:36px; }
.project .media{ background:var(--panel); }
.project .media video{ object-fit:contain; }
.project-title{
  text-align:center;
  margin:30px 0 0;
  font-size:1rem; font-weight:400;
  letter-spacing:.22em; text-indent:.22em;
  text-transform:uppercase; color:var(--fg);
}
.project-back{
  display:block; text-align:center; margin:34px 0 0;
  font-size:.68rem; letter-spacing:.22em; text-indent:.22em;
  text-transform:uppercase; color:var(--accent);
  transition:color .25s var(--ease);
}
.project-back:hover, .project-back:focus-visible{ color:var(--accent-ink); }

/* ---------- Contact page (standalone) ---------- */
.contact-page{ padding-top:36px; }
.contact-details{ text-align:center; padding:60px 0 40px; }

/* ---------- Contact ---------- */
.contact{ text-align:center; padding:64px 0 20px; }
.contact h2,
.contact-details h2{
  font-size:.78rem; font-weight:400; letter-spacing:.34em; text-indent:.34em;
  text-transform:uppercase; margin:0 0 22px; color:var(--fg);
}
.contact .lines a, .contact .lines span,
.contact-details .lines a, .contact-details .lines span{
  display:block; margin:10px 0; font-size:1rem; letter-spacing:.04em;
}
.contact .lines a,
.contact-details .lines a{ color:var(--fg); transition:color .25s var(--ease); }
.contact .lines a:hover,
.contact-details .lines a:hover{ color:var(--accent-ink); }
.contact .loc,
.contact-details .loc{ color:var(--muted); font-size:.72rem; letter-spacing:.26em; text-transform:uppercase; }

/* Instagram mark stands in for the word; handle stays as the label.
   .handle must override the display:block that .lines span sets. */
.lines a .ig{ vertical-align:middle; margin-right:.55em; position:relative; top:-1px; }
.lines a .handle{ display:inline; margin:0; vertical-align:middle; }

/* ---------- Footer ---------- */
.foot{
  border-top:1px solid var(--line);
  text-align:center; padding:34px 20px 56px;
}
.foot p{ margin:0; font-size:.66rem; letter-spacing:.24em; text-transform:uppercase; color:var(--muted); }

/* reveal-on-scroll */
.reveal{ opacity:0; transform:translateY(14px); transition:opacity .7s var(--ease), transform .7s var(--ease); }
.reveal.in{ opacity:1; transform:none; }

/* ---------- Responsive ---------- */
@media (max-width:760px){
  .mainnav ul{ gap:22px; padding:14px 16px; }
  .mainnav a{ font-size:.66rem; letter-spacing:.16em; }
  .masthead{ padding:44px 16px 28px; }
  .stack{ gap:44px; }
  .stack.grid-2{ grid-template-columns:1fr; gap:44px; }
  .contact-details{ padding:40px 0 30px; }
  .posters{ grid-template-columns:repeat(2, 1fr); gap:14px; margin-bottom:40px; }
  .piece figcaption{ margin-top:12px; }
}
