/* andreapistolesi.org — Prints
   Hand-built. No framework, no build step, no webfonts, no trackers, no cookies.

   The character is deliberately not the Portfolio's. That site sells a service
   and is set in sans on white — brisk, professional. This one sells an object
   that will hang on a wall for twenty years, so it is set in the serif, the
   images run one to a row at generous size, and nothing competes with them.
   A print catalogue should feel slower than a portfolio. */

:root{
  --paper:#ffffff;
  --ink:#16150f;
  --muted:#6f6a60;
  --rule:#e4e0d8;
  --wash:#f6f4ef;
  --measure:36rem;
  --max:1180px;
  --serif:"Iowan Old Style","Palatino Linotype",Palatino,"Book Antiqua",Georgia,serif;
  --sans:system-ui,-apple-system,"Segoe UI",Helvetica,Arial,sans-serif;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%; scroll-behavior:smooth}
body{margin:0; background:var(--paper); color:var(--ink);
  font-family:var(--serif); font-size:18px; line-height:1.6;
  -webkit-font-smoothing:antialiased}
img{display:block; max-width:100%; height:auto}
a{color:inherit}
h1,h2,h3{font-weight:600; line-height:1.15; letter-spacing:-.012em; margin:0}
p{margin:0 0 1em}
.wrap{max-width:var(--max); margin:0 auto; padding:0 26px}
.skip{position:absolute; left:-9999px}
.skip:focus{left:8px; top:8px; background:var(--ink); color:#fff; padding:8px 12px; z-index:99}

/* ---------- header ---------- */
header.site{border-bottom:1px solid var(--rule); background:var(--paper);
  position:sticky; top:0; z-index:20}
.bar{display:flex; align-items:baseline; justify-content:space-between;
  gap:20px; flex-wrap:wrap; padding-top:16px; padding-bottom:13px}
.ident{text-decoration:none; display:flex; flex-direction:column}
.ident .n{font-size:19px; font-weight:600; letter-spacing:.005em}
.ident .r{font-family:var(--sans); font-size:11px; letter-spacing:.13em;
  text-transform:uppercase; color:var(--muted); margin-top:3px}
nav.main{display:flex; gap:20px; flex-wrap:wrap}
nav.main a{font-family:var(--sans); font-size:11.5px; letter-spacing:.1em;
  text-transform:uppercase; text-decoration:none; color:var(--muted);
  padding-bottom:2px; border-bottom:1px solid transparent}
nav.main a:hover{color:var(--ink)}
nav.main a.on{color:var(--ink); border-bottom-color:var(--ink)}

/* ---------- the proposition, above everything ----------
   The line that was buried in the current site's footer. It is the whole
   argument for the site existing, so it opens it. */
.creed{max-width:var(--max); margin:0 auto; padding:52px 26px 8px}
.creed p{font-size:clamp(1.3rem,3vw,1.85rem); line-height:1.32; letter-spacing:-.015em;
  max-width:30ch; margin:0 0 .5em; text-wrap:balance}
.creed .sub{font-family:var(--sans); font-size:13.5px; line-height:1.6; color:var(--muted);
  max-width:56ch; letter-spacing:.01em}
.creed .sub a{color:var(--ink); text-decoration:none; border-bottom:1px solid var(--rule)}
.creed .sub a:hover{border-bottom-color:var(--ink)}

/* ---------- the galleries index, by family ---------- */
.fam{max-width:var(--max); margin:0 auto; padding:44px 26px 0}
.fam h2{font-family:var(--sans); font-size:11px; letter-spacing:.16em; text-transform:uppercase;
  color:var(--muted); font-weight:600; border-top:1px solid var(--rule); padding-top:15px}
.fam .note{font-family:var(--sans); font-size:12px; color:var(--muted); margin:5px 0 0}
.gals{list-style:none; margin:14px 0 0; padding:0}
.gals li{border-bottom:1px solid var(--rule)}
.gals a{display:flex; align-items:baseline; justify-content:space-between; gap:22px;
  padding:15px 2px; text-decoration:none}
.gals .t{font-size:1.5rem; letter-spacing:-.02em; font-weight:600}
.gals .s{font-family:var(--sans); font-size:12.5px; color:var(--muted); flex:1;
  margin-left:4px}
.gals .c{font-family:var(--sans); font-size:11px; letter-spacing:.1em; text-transform:uppercase;
  color:var(--muted); white-space:nowrap}
.gals a:hover .t{text-decoration:underline; text-underline-offset:5px; text-decoration-thickness:1px}
@media (max-width:700px){ .gals a{flex-wrap:wrap} .gals .s{flex:0 0 100%; margin:3px 0 0} }

/* ---------- gallery page head ---------- */
.gh{max-width:var(--max); margin:0 auto; padding:52px 26px 26px}
.gh h1{font-size:clamp(2rem,5vw,3rem)}
.gh .sub{font-size:1.15rem; color:var(--muted); margin-top:10px; max-width:46ch; font-style:italic}
.gh .prov{font-family:var(--sans); font-size:12.5px; color:var(--muted); margin-top:16px;
  max-width:60ch; line-height:1.65; border-top:1px solid var(--rule); padding-top:13px}
.gh .prov b{color:var(--ink); font-weight:600}

/* ---------- the plates ----------
   One to a row. Each print is an autonomous work and is shown as one, not as a
   cell in a grid. Nothing is cropped: every file keeps its own proportion. */
.plates{max-width:var(--max); margin:0 auto; padding:0 26px}
.plate{margin:0 0 62px}
.plate img{width:100%; background:var(--wash)}
.facts{display:flex; align-items:baseline; gap:18px; flex-wrap:wrap;
  font-family:var(--sans); font-size:12.5px; color:var(--muted); margin-top:12px}
.facts .code{color:var(--ink); letter-spacing:.06em; font-weight:600}
.facts .spec{flex:1; min-width:200px}
.facts .ask{text-decoration:none; color:var(--ink); border-bottom:1px solid var(--ink);
  padding-bottom:2px; white-space:nowrap}
.facts .ask:hover{background:var(--ink); color:#fff; border-bottom-color:var(--ink)}
.facts .sold{color:#9a3b3b; letter-spacing:.08em; text-transform:uppercase; font-size:11px}
@media (max-width:620px){ .plate{margin-bottom:44px} .facts{gap:10px} }

/* ---------- the close on every gallery ---------- */
.close{max-width:var(--max); margin:26px auto 0; padding:34px 26px 10px;
  border-top:1px solid var(--rule)}
.close p{font-family:var(--sans); font-size:13px; color:var(--muted); max-width:62ch}
.close a{color:var(--ink); text-decoration:none; border-bottom:1px solid var(--rule)}
.close a:hover{border-bottom-color:var(--ink)}

/* ---------- prose pages ---------- */
.prose{max-width:var(--max); margin:0 auto; padding:16px 26px 20px}
.prose h2{font-size:1.3rem; margin:36px 0 10px}
.prose h2:first-child{margin-top:0}
.prose p,.prose ul{max-width:var(--measure)}
.prose ul{padding-left:1.1em; margin:0 0 1em}
.prose li{margin-bottom:.3em}
.prose .k{font-family:var(--sans); font-size:12.5px; letter-spacing:.06em;
  text-transform:uppercase; color:var(--muted); margin-bottom:4px}
.price{font-size:1.5rem; letter-spacing:-.01em}

/* ---------- footer, the five properties ---------- */
footer.site{border-top:1px solid var(--rule); margin-top:74px}
.foot{max-width:var(--max); margin:0 auto; padding:26px 26px 46px;
  display:flex; justify-content:space-between; gap:20px; flex-wrap:wrap}
.foot p{margin:0; font-family:var(--sans); font-size:11.5px; letter-spacing:.05em; color:var(--muted)}
.foot a{text-decoration:none; border-bottom:1px solid var(--rule)}
.foot a:hover{border-bottom-color:var(--ink)}
.foot .here{color:var(--ink)}

@media (max-width:620px){
  body{font-size:17px}
  .bar{padding-top:13px; padding-bottom:0; gap:0}
  .ident{flex:0 0 100%} .ident .n{font-size:17px} .ident .r{display:none}
  nav.main{flex:0 0 100%; gap:16px; margin-top:11px; border-top:1px solid var(--rule);
    padding:9px 0 10px}
  .wrap,.creed,.fam,.gh,.plates,.close,.prose,.foot{padding-left:18px; padding-right:18px}
}
@media (prefers-reduced-motion:reduce){ html{scroll-behavior:auto} }

/* ---------- In evidence ----------
   One work, shown properly, before the index. A visitor arriving on a print
   site should meet a photograph and a reason, not a list of fourteen doors.
   It is also the only place on the site where the writing does any work, and
   that is what sells a print at this price. */
.evid{margin:46px 0 8px; padding:34px 0 0; border-top:1px solid var(--rule)}
.evid .k{font-family:var(--sans); font-size:11px; letter-spacing:.16em;
  text-transform:uppercase; color:var(--muted); margin:0 0 8px}
.evid h2{font-size:clamp(1.6rem,4vw,2.4rem); margin-bottom:22px}
.evfig{margin:0 auto 22px; max-width:var(--max); padding:0 26px}
.evfig img{width:100%; max-width:760px; margin:0 auto; background:var(--wash)}
.evtext p{max-width:var(--measure)}
.evtext .evfacts{font-family:var(--sans); font-size:12.5px; color:var(--muted);
  max-width:60ch; line-height:1.8; border-top:1px solid var(--rule); padding-top:13px; margin-top:20px}
.evtext .evfacts .code{color:var(--ink); font-weight:600; letter-spacing:.06em}
.evtext .evfacts .ask{display:inline-block; margin-top:6px; text-decoration:none; color:var(--ink);
  border-bottom:1px solid var(--ink); padding-bottom:2px}
.evtext .evfacts .ask:hover{background:var(--ink); color:#fff}
@media (max-width:620px){ .evfig{padding:0 18px} }

/* The tier table. Three rows; anything more elaborate would be a price list,
   and a price list is a shop. */
.tiers{border-collapse:collapse; margin:0 0 1.2em; font-family:var(--sans); font-size:14px}
.tiers td{border-bottom:1px solid var(--rule); padding:9px 0}
.tiers .num{color:var(--muted); width:7rem; letter-spacing:.04em}
.tiers .amt{color:var(--ink); font-weight:600; padding-left:26px}
