/* Joseph Barber Photography — shared site styles
   One stylesheet for every page: sidebar on desktop, "Menu" overlay on mobile. */
:root{
  --black:#080808; --cream:#faf8f5; --gold:#C4A86A;
  --muted:rgba(250,248,245,.55); --line:rgba(250,248,245,.09);
  --display:'Switzer','Inter',system-ui,sans-serif;
  --body:'Inter',system-ui,-apple-system,sans-serif;
  --sidebar-w:280px;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--black);color:var(--cream);font-family:var(--body);font-weight:300;line-height:1.5}
body.menu-open{overflow:hidden}
a{color:inherit;text-decoration:none}
button{font-family:inherit;color:inherit}
img{max-width:100%}
.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* ---------- Layout ---------- */
.site-layout{display:flex;align-items:flex-start;min-height:100vh}
.mobile-bar{display:none}

/* ---------- Sidebar (desktop) ---------- */
.sidebar{
  flex:0 0 var(--sidebar-w);width:var(--sidebar-w);
  position:sticky;top:0;height:100vh;overflow-y:auto;
  padding:56px 30px 40px 36px;border-right:1px solid var(--line);
}
.sidebar-name{display:block;font-family:var(--display);font-weight:400;font-size:26px;line-height:1.12;letter-spacing:.02em}
.sidebar-role{margin:10px 0 44px;font-size:11px;letter-spacing:.16em;color:var(--muted)}
.nav-link{display:block;font-size:16px;padding:8px 0;color:rgba(250,248,245,.86);transition:color .2s ease}
.nav-link:hover,.nav-link[aria-current="page"],.nav-group.is-current>.nav-row>.nav-link{color:var(--gold)}
.nav-row{display:flex;align-items:center;gap:8px}

/* Sub-menus: hidden until hover (desktop) or tap (touch) */
.nav-children{
  max-height:0;overflow:hidden;opacity:0;visibility:hidden;
  transition:max-height .3s ease,opacity .2s ease,visibility 0s linear .3s;
}
.nav-group.open>.nav-children{max-height:280px;opacity:1;visibility:visible;transition-delay:0s}
.nav-child{display:block;padding:5px 0 5px 16px;font-size:14px;color:var(--muted);transition:color .2s ease}
.nav-child:hover,.nav-child[aria-current="page"]{color:var(--gold)}

.sub-toggle{
  display:none;width:32px;height:32px;align-items:center;justify-content:center;
  background:none;border:0;cursor:pointer;color:var(--muted);font-size:20px;line-height:1;
}
.sub-toggle::before{content:"+"}
.sub-toggle[aria-expanded="true"]::before{content:"\2013"}

.sidebar-utility{margin-top:40px;padding-top:24px;border-top:1px solid var(--line)}
.util-link{
  display:block;padding:7px 0;font-size:11px;letter-spacing:.14em;color:rgba(250,248,245,.5);
  background:none;border:0;text-align:left;cursor:pointer;transition:color .2s ease;
}
.util-link:hover,.util-link[aria-current="page"]{color:var(--gold)}
.util-child{display:block;padding:5px 0 5px 16px;font-size:13px;letter-spacing:.04em;color:var(--muted);transition:color .2s ease}
.util-child:hover{color:var(--gold)}

/* Hover reveal — real mouse devices on desktop widths only */
@media (hover:hover) and (min-width:821px){
  .nav-group:hover>.nav-children,
  .nav-group:focus-within>.nav-children{max-height:280px;opacity:1;visibility:visible;transition-delay:0s}
}
/* Touch devices get +/– toggles instead of hover */
@media (hover:none),(max-width:820px){
  .sub-toggle{display:inline-flex}
}

/* ---------- Content area ---------- */
.wall{flex:1 1 auto;min-width:0;padding:2px}
.project-head{padding:44px 34px 26px}
.project-head h1{margin:0;font-family:var(--display);font-weight:300;font-size:28px;letter-spacing:.01em}
.sub-links{display:flex;flex-wrap:wrap;gap:6px 22px;margin-top:14px}
.sub-links a{font-size:13px;letter-spacing:.06em;color:var(--muted);transition:color .2s ease}
.sub-links a:hover{color:var(--gold)}

/* Image wall (columns are built by site.js; without JS it simply stacks) */
.wall-grid{display:flex;gap:2px;align-items:flex-start}
.wall-grid:not(.is-ready){display:block;visibility:hidden;animation:jb-reveal 0s 1.5s forwards}
.wall-grid:not(.is-ready) .wall-item{margin-bottom:2px}
.wall-grid.is-ready{visibility:visible}
@keyframes jb-reveal{to{visibility:visible}}
.wall-col{flex:1 1 0;min-width:0;display:flex;flex-direction:column;gap:2px}
.wall-item{margin:0;display:block;background:#0d0c0b}
.wall-item img{display:block;width:100%;height:auto}

.empty-state{padding:14vh 34px;max-width:560px}
.empty-state p{margin:0 0 14px;font-size:15px;line-height:1.7;color:var(--muted)}
.empty-state a{color:var(--gold)}

/* Text pages (Artist) */
.text-page{max-width:760px;padding:64px 48px 110px}
.text-page h1{margin:0 0 36px;font-family:var(--display);font-weight:300;font-size:clamp(30px,4vw,44px)}
.text-page h2{margin:44px 0 12px;font-family:var(--display);font-weight:300;font-size:20px}
.text-page p{margin:0 0 1.2em;font-size:16px;line-height:1.8;color:rgba(250,248,245,.82)}
.text-page a{color:var(--gold)}
.text-page blockquote{margin:0 0 44px;padding:0;font-family:var(--display);font-weight:200;font-size:clamp(22px,3vw,30px);line-height:1.45;color:var(--cream)}
.text-page .contact-block{line-height:1.9}
.text-page figure{margin:0 0 40px}
.text-page figure img{display:block;width:100%;height:auto}

/* ---------- Mobile: name + "Menu" bar, full-screen menu overlay ---------- */
@media (max-width:820px){
  .site-layout{display:block}
  .mobile-bar{
    display:flex;justify-content:space-between;align-items:baseline;
    position:sticky;top:0;z-index:60;background:var(--black);
    padding:20px 6vw 14px;
  }
  .mobile-name{font-family:var(--display);font-weight:400;font-size:22px;line-height:1.1;letter-spacing:.02em}
  .menu-btn{background:none;border:0;padding:8px 0 8px 16px;font-size:15px;letter-spacing:.04em;color:rgba(250,248,245,.6);cursor:pointer}

  .sidebar{
    position:fixed;inset:0;z-index:50;width:100%;height:100%;flex:none;
    padding:92px 6vw 8vh;border:0;background:var(--black);overflow-y:auto;
    opacity:0;visibility:hidden;pointer-events:none;transition:opacity .25s ease,visibility 0s linear .25s;
  }
  .sidebar.is-open{opacity:1;visibility:visible;pointer-events:auto;transition-delay:0s}
  .sidebar-name,.sidebar-role{display:none}

  .menu{text-align:center}
  .nav-link{font-size:20px;padding:12px 0;color:rgba(250,248,245,.78)}
  .nav-row{justify-content:center}
  .nav-child{padding:8px 0;font-size:16px;text-align:center}
  .sidebar-utility{width:64%;margin:36px auto 0;padding-top:28px;text-align:center}
  .util-link{width:100%;text-align:center;font-size:13px;padding:11px 0}
  .util-child{padding:8px 0;font-size:15px;text-align:center}

  .wall{padding:0}
  .wall-grid{gap:4px}
  .wall-col{gap:4px}
  .project-head{padding:22px 6vw 20px}
  .empty-state{padding:10vh 6vw}
  .text-page{padding:32px 6vw 90px}
}
@media (prefers-reduced-motion:reduce){
  *{transition:none!important;animation:none!important}
  .wall-grid:not(.is-ready){visibility:visible}
}
