/* ==========================================================
   dylanderson.com — shared stylesheet (linked from every page)
   ========================================================== */
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;background:#fff;color:#111;
  -webkit-font-smoothing:antialiased;font-size:15px;line-height:1.5}
a{color:inherit;text-decoration:none}

/* ---------- header + nav ---------- */
header{position:fixed;top:0;left:0;right:0;display:flex;justify-content:space-between;
  align-items:center;padding:18px 28px;z-index:100;
  background:linear-gradient(to bottom,rgba(255,255,255,.94) 55%,rgba(255,255,255,0))}
.logo{display:block}
.logo img{height:26px;width:auto;display:block}

nav{display:flex;gap:26px;align-items:center}
.nav-item{position:relative}
.nav-link{font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;opacity:.85}
.nav-link:hover{opacity:.45}
.nav-link.active{text-decoration:underline;text-underline-offset:5px;opacity:1}

/* Hover dropdown (Work) — same font, lighter value.
   Top-level link still goes to the index page, so the dropdown is
   optional on touch devices where hover doesn't exist. */
.dropdown{position:absolute;top:100%;right:-10px;min-width:180px;
  padding:14px 10px 10px;text-align:right;background:rgba(255,255,255,.97);
  opacity:0;visibility:hidden;transition:opacity .18s ease;z-index:110}
.nav-item:hover .dropdown,
.nav-item:focus-within .dropdown{opacity:1;visibility:visible}
.dropdown a{display:block;padding:5px 0;font-size:12px;font-weight:700;
  text-transform:uppercase;letter-spacing:.06em;color:#b3b3af;white-space:nowrap}
.dropdown a:hover{color:#111}

/* ---------- wireframe placeholder blocks ---------- */
.ph{position:relative;background:#f0efed;display:flex;align-items:center;justify-content:center;overflow:hidden}
.ph::before{content:"";position:absolute;inset:0;
  background:linear-gradient(to top right,transparent calc(50% - .5px),#dcdad6 50%,transparent calc(50% + .5px))}
.ph::after{content:"";position:absolute;inset:0;
  background:linear-gradient(to bottom right,transparent calc(50% - .5px),#dcdad6 50%,transparent calc(50% + .5px))}
.ph span{position:relative;z-index:1;background:#fff;padding:6px 12px;font-size:11px;
  letter-spacing:.08em;text-transform:uppercase;color:#8a8a86;border:1px solid #e2e0dc;text-align:center;line-height:1.7}

/* ---------- shared page scaffolding ---------- */
main{padding:130px 28px 80px;max-width:1200px;margin:0 auto}
h1.page-title{font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.14em;
  color:#8a8a86;margin-bottom:52px}

footer{border-top:1px solid #eceae6;padding:24px 28px;display:flex;justify-content:space-between;
  font-size:12px;color:#8a8a86}
footer a:hover{color:#111}

/* ---------- home: hero carousel ---------- */
.carousel{position:relative;height:100vh;height:100svh;width:100%}
.slide{position:absolute;inset:0;opacity:0;transition:opacity .5s ease;pointer-events:none} /* ← fade duration */
.slide.active{opacity:1;pointer-events:auto}
.slide .ph{position:absolute;inset:0}
.slide-caption{position:absolute;left:28px;bottom:26px;z-index:2;font-size:14px}
.slide-caption em{font-style:normal;color:#8a8a86;margin-left:10px}
.counter{position:absolute;right:28px;bottom:26px;z-index:2;font-size:13px;color:#555;
  font-variant-numeric:tabular-nums;letter-spacing:.06em}

/* ---------- work index: project grid ---------- */
.work-grid{display:grid;grid-template-columns:1fr 1fr;gap:44px 28px}
.card .ph{aspect-ratio:16/10;margin-bottom:12px;transition:opacity .2s ease}
.card:hover .ph{opacity:.8}
.card-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px}
.card-head h2{font-size:16px;font-weight:600}
.card-head .meta{font-size:13px;color:#8a8a86}

/* ---------- project subpages ---------- */
.crumb{display:inline-block;margin-bottom:30px;font-size:13px;color:#8a8a86}
.crumb:hover{color:#111}
.subpage-head{display:flex;justify-content:space-between;align-items:baseline;gap:16px;
  flex-wrap:wrap;margin-bottom:22px}
.subpage-head h1{font-size:24px;font-weight:600;letter-spacing:-.01em}
.meta{font-size:13px;color:#8a8a86}
.hero{aspect-ratio:16/9;margin-bottom:22px}
.blurb{max-width:62ch;color:#444;margin-bottom:1em}
.thumbs{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:22px}
.thumbs .ph{aspect-ratio:4/3}
.pager{display:flex;justify-content:space-between;gap:16px;margin-top:72px;
  border-top:1px solid #eceae6;padding-top:22px;font-size:14px}
.pager a{color:#8a8a86}
.pager a:hover{color:#111}

/* ---------- about ---------- */
.about-grid{display:grid;grid-template-columns:minmax(240px,360px) 1fr;gap:56px;align-items:start}
.portrait{aspect-ratio:3/4}
.bio p{max-width:60ch;margin-bottom:1.1em;color:#333}
.bio p:first-child{font-size:19px;line-height:1.45;color:#111}
.facts{margin-top:40px;display:grid;grid-template-columns:1fr 1fr;gap:32px;max-width:60ch}
.facts h3{font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:#8a8a86;margin-bottom:10px}
.facts ul{list-style:none;font-size:14px;color:#444}
.facts li{padding:3px 0}

/* ---------- contact ---------- */
.contact-wrap{min-height:48vh;display:flex;flex-direction:column;justify-content:center}
.intro{font-size:17px;color:#444;max-width:52ch;margin-bottom:36px}
.big-link{display:inline-block;font-size:clamp(26px,5.5vw,54px);font-weight:600;letter-spacing:-.01em}
.big-link:hover{text-decoration:underline;text-underline-offset:8px}
.socials{margin-top:48px;display:flex;gap:28px;flex-wrap:wrap}
.socials a{font-size:14px;color:#8a8a86}
.socials a:hover{color:#111}

/* ---------- responsive ---------- */
@media (max-width:760px){
  .about-grid{grid-template-columns:1fr;gap:32px}
  .portrait{max-width:320px}
}
@media (max-width:640px){
  header{padding:14px 18px}
  nav{gap:16px}
  main{padding:110px 18px 60px}
  footer{padding:20px 18px}
  .slide-caption{left:18px;bottom:20px}
  .counter{right:18px;bottom:20px}
  .work-grid{grid-template-columns:1fr;gap:36px}
  .thumbs{grid-template-columns:1fr;gap:12px}
}
