/* ==========================================================================
   Curatorial Program for Research — draft site
   Type: Arimo throughout. Ground: white. Ink: black. No accent colour —
   colour comes from the photography, as at whitney.org and guggenheim.org.
   ========================================================================== */

:root{
  --paper:#FFFFFF;
  --wash:#F2F2F0;
  --ink:#000000;
  --ink-2:#6B6B6B;
  --ink-3:#9A9A9A;
  --rule:#000000;
  --rule-soft:#DCDCDC;
  --ink-deep:#1D1D1D;
  --gut:clamp(18px,3.4vw,52px);
  --maxw:1560px;
  --measure:68ch;
}

*{box-sizing:border-box}
html{background:var(--paper);-webkit-text-size-adjust:100%}
body{
  margin:0;background:var(--paper);color:var(--ink);
  font-family:"Arimo",Arial,Helvetica,sans-serif;
  font-size:17px;line-height:1.55;
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%;display:block;border:0}
a{color:inherit}
::selection{background:var(--ink);color:var(--paper)}
.shell{max-width:var(--maxw);margin:0 auto;padding:0 var(--gut)}

/* ---------- masthead: wordmark row over a ruled nav row --------------- */
.masthead{background:var(--paper);position:sticky;top:0;z-index:60}
.brandrow{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;padding:22px 0 16px;flex-wrap:wrap}
.wordmark{text-decoration:none;display:block;width:clamp(104px,12vw,158px)}
.wordmark svg{display:block;width:100%;height:auto;overflow:visible}
.wordmark{transform-origin:left center;will-change:transform}
.wordmark .dot{transform-box:view-box;transform-origin:center;will-change:transform}
.sitefoot .wordmark{width:clamp(96px,10vw,132px);margin-bottom:16px}
@media (prefers-reduced-motion:reduce){.wordmark,.wordmark .dot{transform:none!important}}
.brandrow .util{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.util a{
  font-weight:700;font-size:13.5px;letter-spacing:.02em;text-decoration:none;
  border:1.5px solid var(--ink);padding:11px 17px;min-height:44px;
  display:inline-flex;align-items:center;background:var(--paper);color:var(--ink);
}
.util a:hover{background:var(--ink);color:var(--paper)}
.util a.solid{background:var(--ink);color:var(--paper)}
.util a.solid:hover{background:var(--paper);color:var(--ink)}
.util span{font-size:13.5px;color:var(--ink-2);padding-right:6px}

.navrow{border-top:1px solid var(--rule);border-bottom:1px solid var(--rule)}
.navrow .shell{display:flex;gap:clamp(16px,2.4vw,34px);align-items:center;overflow-x:auto}
.navrow a{
  font-weight:700;font-size:clamp(15px,1.5vw,19px);letter-spacing:.005em;
  text-transform:uppercase;text-decoration:none;color:var(--ink);
  padding:14px 0;white-space:nowrap;min-height:48px;display:flex;align-items:center;
}
.navrow a:hover{color:var(--ink-2)}
.navrow a[aria-current="page"]{box-shadow:inset 0 -4px 0 var(--ink)}

/* ---------- headings & type ------------------------------------------ */
h1,h2,h3,h4{margin:0;font-weight:700;letter-spacing:-.022em;text-wrap:balance}
h1{font-size:clamp(36px,5.6vw,74px);line-height:1.0}
h2{font-size:clamp(26px,3.4vw,44px);line-height:1.05}
h3{font-size:clamp(20px,2.1vw,26px);line-height:1.15;letter-spacing:-.015em}
h4{font-size:19px;line-height:1.25;letter-spacing:-.012em}

.kicker{
  font-weight:700;font-size:12px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--ink);margin:0 0 16px;
}
.kicker.grey{color:var(--ink-2)}
.sub{font-weight:700;color:var(--ink-3);font-size:clamp(19px,2.4vw,30px);line-height:1.1;letter-spacing:-.018em}
.lede{font-size:clamp(18px,1.6vw,22px);line-height:1.45;max-width:56ch}
.prose{max-width:var(--measure)}
.prose p{margin:0 0 20px}
.prose p:last-child{margin-bottom:0}
.dim{color:var(--ink-2)}
.small{font-size:15px;line-height:1.5}

/* ---------- section scaffolding --------------------------------------- */
.band{padding:clamp(40px,5.5vw,86px) 0}
.band.wash{background:var(--wash)}
.band.tight{padding-top:0}
.rulehead{border-top:1.5px solid var(--rule);padding-top:14px;margin-bottom:clamp(24px,3vw,44px)}
.rulehead .kicker{margin-bottom:12px}
.rulehead h2{max-width:24ch}
.hr{border:0;border-top:1px solid var(--rule-soft);margin:clamp(34px,4vw,58px) 0}

/* ---------- buttons ---------------------------------------------------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;
  min-height:48px;padding:13px 26px;border:1.5px solid var(--ink);
  font-weight:700;font-size:15.5px;text-decoration:none;
  background:var(--paper);color:var(--ink);
}
.btn:hover{background:var(--ink);color:var(--paper)}
.btn.solid{background:var(--ink);color:var(--paper)}
.btn.solid:hover{background:var(--paper);color:var(--ink)}
.btns{display:flex;gap:12px;flex-wrap:wrap}
.more{
  display:inline-flex;align-items:center;gap:9px;min-height:44px;
  font-weight:700;font-size:16px;text-decoration:none;
  border-bottom:2px solid var(--ink);padding-bottom:2px;
}
.more:hover{color:var(--ink-2);border-color:var(--ink-2)}

/* ---------- hero ------------------------------------------------------- */
.hero{padding:clamp(34px,4.5vw,64px) 0 0}
.hero h1{max-width:19ch;margin-bottom:24px}
.hero .lede{margin-bottom:30px}
.hero-media{margin-top:clamp(30px,4vw,54px)}

/* ---------- figures / image slots -------------------------------------- */
figure{margin:0}
figcaption{font-size:13px;line-height:1.45;color:var(--ink-2);margin-top:10px;max-width:58ch}
.ph{
  position:relative;background:var(--wash);width:100%;
  display:flex;align-items:flex-end;padding:14px;
}
.ph::before{
  content:"";position:absolute;inset:0;
  background:repeating-linear-gradient(135deg,transparent 0 13px,#E2E2DE 13px 14px);
}
.ph span{position:relative;font-size:11.5px;line-height:1.45;color:var(--ink-2);background:var(--paper);padding:6px 9px;border:1px solid var(--rule-soft);max-width:100%}
.r-16x9{aspect-ratio:16/9}
.r-4x3{aspect-ratio:4/3}
.r-3x4{aspect-ratio:3/4}
.r-1x1{aspect-ratio:1/1}
.r-21x9{aspect-ratio:21/9}
.r-3x2{aspect-ratio:3/2}
img.r-16x9,img.r-4x3,img.r-3x4,img.r-1x1,img.r-21x9,img.r-3x2{object-fit:cover;height:100%;width:100%}
.imgwrap{overflow:hidden;background:var(--wash)}
/* A portrait photograph in a landscape band gets tall fast; this keeps a lead
   band from running past most of the screen. */
.imgwrap.tallcap{max-height:70vh}
/* A lead photograph that runs the full width of the page, outside the shell's
   gutters — the band is the picture, edge to edge. */
figure.bleed{margin:0;width:100%}
/* An announcement card rather than a photograph: no fixed band, no crop,
   held to a narrower column so it doesn't read as a failed lead image. */
.imgwrap.r-free{aspect-ratio:auto;background:none}
img.r-free{display:block;width:100%;height:auto}
figure.poster{max-width:560px}

/* ---------- grids ------------------------------------------------------- */
.g2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(22px,3vw,44px)}
.g3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(22px,3vw,40px)}
.g4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(20px,2.4vw,34px)}
.split{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:clamp(26px,4vw,64px);align-items:start}
.split.rev{grid-template-columns:minmax(0,1fr) minmax(0,1.25fr)}
.split.even{grid-template-columns:repeat(2,minmax(0,1fr))}

/* ---------- editorial card (Guggenheim pattern) ------------------------- */
.card{display:block;text-decoration:none;color:var(--ink)}
.card .imgwrap{margin-bottom:16px}
.card:hover h3{color:var(--ink-2)}
.card .meta{font-weight:700;color:var(--ink-3);font-size:15px;margin:6px 0 0;letter-spacing:.005em}
.card p.desc{margin:12px 0 0;color:var(--ink-2);font-size:16px;line-height:1.5;max-width:52ch}

/* ---------- programme feature ------------------------------------------- */
.feature{border-top:1.5px solid var(--rule);padding-top:26px}
.feature + .feature{margin-top:clamp(38px,4.5vw,64px)}
.feature .tagline{font-weight:700;font-size:13px;letter-spacing:.13em;text-transform:uppercase;color:var(--ink-2);margin:0 0 14px}
.feature h2{margin-bottom:16px}
.factlist{list-style:none;margin:22px 0 0;padding:0;border-top:1px solid var(--rule-soft)}
.factlist li{display:grid;grid-template-columns:132px minmax(0,1fr);gap:14px;padding:11px 0;border-bottom:1px solid var(--rule-soft);font-size:15.5px}
.factlist b{font-weight:700;letter-spacing:.05em;text-transform:uppercase;font-size:12px;color:var(--ink-2);padding-top:3px}

/* ---------- statistics --------------------------------------------------- */
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:0;border-top:1.5px solid var(--rule)}
.stat{padding:22px 26px;border-right:1px solid var(--rule-soft)}
.stats > .stat:first-child{padding-left:0}
.stat:last-child{border-right:0}
.stat:last-child{padding-right:0}
.stat b{display:block;font-weight:700;font-size:clamp(34px,4.4vw,56px);line-height:1;letter-spacing:-.035em;font-variant-numeric:tabular-nums;margin-bottom:8px}
.stat span{display:block;font-weight:700;font-size:12px;letter-spacing:.11em;text-transform:uppercase;color:var(--ink-2);line-height:1.45}

/* ---------- supporter name lists ----------------------------------------- */
.roll{display:grid;grid-template-columns:repeat(auto-fit,minmax(212px,1fr));gap:clamp(24px,3vw,44px);align-items:start}
.roll h4{font-weight:700;font-size:12px;letter-spacing:.13em;text-transform:uppercase;border-bottom:1.5px solid var(--rule);padding-bottom:9px;margin:0 0 2px}
.roll ul{list-style:none;margin:0;padding:0}
.roll li{padding:9px 0;border-bottom:1px solid var(--rule-soft);font-size:15.5px;line-height:1.35}
.roll li i{display:block;font-style:normal;font-size:13px;color:var(--ink-2);margin-top:2px}
.roll li.key{font-weight:700}

/* ---------- people -------------------------------------------------------- */
.person .imgwrap{margin-bottom:14px}
.person h4{margin-bottom:3px}
.person .role{font-weight:700;font-size:12px;letter-spacing:.11em;text-transform:uppercase;color:var(--ink-2);margin:0 0 10px}
.person p{margin:0;font-size:15px;line-height:1.5;color:var(--ink-2)}

/* ---------- FAQ ----------------------------------------------------------- */
.faq{max-width:900px;border-top:1.5px solid var(--rule)}
.faq details{border-bottom:1px solid var(--rule-soft)}
.faq summary{
  font-weight:700;font-size:19px;letter-spacing:-.012em;
  padding:20px 46px 20px 0;cursor:pointer;list-style:none;position:relative;
  min-height:48px;display:flex;align-items:center;
}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{
  content:"";position:absolute;right:6px;top:50%;width:14px;height:14px;margin-top:-7px;
  background:linear-gradient(var(--ink),var(--ink)) center/14px 2px no-repeat,
             linear-gradient(var(--ink),var(--ink)) center/2px 14px no-repeat;
  transition:transform .18s ease;
}
.faq details[open] summary::after{transform:rotate(45deg)}
.faq .a{padding:0 0 24px;max-width:var(--measure);color:var(--ink-2)}
.faq .a p{margin:0 0 13px}
.faq .a p:last-child{margin:0}
.faq .a ul{margin:0 0 13px;padding-left:20px}
.faq .a li{margin-bottom:7px}

/* ---------- notice / status ----------------------------------------------- */
.notice{border:1.5px solid var(--ink);padding:clamp(22px,3vw,34px)}
.notice h3{margin-bottom:12px}
.notice p{margin:0 0 14px;color:var(--ink-2)}
.notice p:last-child{margin:0}
.statusline{display:flex;gap:14px;align-items:baseline;flex-wrap:wrap;border-bottom:1px solid var(--rule-soft);padding-bottom:10px;margin-bottom:16px}
.statusline b{font-weight:700;font-size:12px;letter-spacing:.13em;text-transform:uppercase;color:var(--ink-2)}

.flag{font-size:13px;color:#8A6A00;background:#FBF3D8;padding:2px 7px;border:1px dashed #B99400;white-space:normal}

/* ---------- signup ---------------------------------------------------------- */
.signup{display:flex;gap:10px;flex-wrap:wrap;max-width:540px;margin-top:18px}
.signup input{flex:1;min-width:230px;min-height:48px;padding:13px 15px;font:inherit;font-size:16px;border:1.5px solid var(--ink);background:var(--paper);color:var(--ink)}
.signup button{min-height:48px;padding:13px 26px;font:inherit;font-weight:700;font-size:15.5px;background:var(--ink);color:var(--paper);border:1.5px solid var(--ink);cursor:pointer}
.signup button:hover{background:var(--paper);color:var(--ink)}

/* ---------- directory --------------------------------------------------------- */
.filters{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:24px}
.filters select{min-height:48px;padding:12px 14px;font:inherit;font-size:15px;font-weight:700;border:1.5px solid var(--ink);background:var(--paper);color:var(--ink)}
.dirgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(216px,1fr));gap:1px;background:var(--rule-soft);border:1px solid var(--rule-soft)}
.dirgrid a{background:var(--paper);padding:17px 18px;text-decoration:none;min-height:96px;display:block}
.dirgrid a:hover{background:var(--wash)}
.dirgrid b{display:block;font-weight:700;font-size:16.5px;margin-bottom:6px;letter-spacing:-.01em}
.dirgrid span{display:block;font-size:12px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-2);line-height:1.5}

/* ---------- support + footer ---------------------------------------------------- */
.support{background:var(--ink-deep);color:var(--paper);padding:clamp(44px,5.5vw,80px) 0}
.support h2{max-width:20ch;margin-bottom:16px}
.support p{color:#B4B4B4;max-width:var(--measure);margin:0 0 26px}
.support .btn{border-color:var(--paper);color:var(--paper);background:transparent}
.support .btn:hover{background:var(--paper);color:var(--ink)}
.support .btn.solid{background:var(--paper);color:var(--ink)}
.support .btn.solid:hover{background:transparent;color:var(--paper)}

.sitefoot{padding:clamp(36px,4.5vw,60px) 0 36px;border-top:1.5px solid var(--rule)}
.footgrid{display:grid;grid-template-columns:minmax(0,1.5fr) repeat(auto-fit,minmax(136px,1fr));gap:clamp(22px,3vw,44px);margin-bottom:34px}
.sitefoot h5{font-weight:700;font-size:12px;letter-spacing:.13em;text-transform:uppercase;color:var(--ink-2);margin:0 0 10px}
.sitefoot ul{list-style:none;margin:0;padding:0}
.sitefoot li a{display:flex;align-items:center;min-height:44px;text-decoration:none;font-size:15.5px;font-weight:700}
.sitefoot li a:hover{color:var(--ink-2)}
.footabout p{margin:0 0 12px;font-size:15.5px;color:var(--ink-2);max-width:46ch}
.legal{border-top:1px solid var(--rule-soft);padding-top:20px;display:flex;gap:12px 34px;flex-wrap:wrap;justify-content:space-between;font-size:13px;color:var(--ink-2);line-height:1.55}
.legal p{margin:0;max-width:66ch}

.pagehead{padding:clamp(34px,4.5vw,64px) 0 clamp(24px,3vw,40px)}
.pagehead h1{max-width:20ch;margin-bottom:20px}
.err{min-height:58vh;display:flex;align-items:center}

a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--ink);outline-offset:2px}

@media (max-width:1000px){
  .g4{grid-template-columns:repeat(2,minmax(0,1fr))}
  .g3{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:760px){
  .split,.split.rev,.split.even,.g2,.g3,.g4{grid-template-columns:minmax(0,1fr)}
  .callgrid{grid-template-columns:minmax(0,1fr);grid-template-rows:none}
  .callgrid .callcard{display:block;grid-row:auto}
  .stats{grid-template-columns:repeat(2,minmax(0,1fr))}
  .stat{border-right:0;border-bottom:1px solid var(--rule-soft);padding-right:0}
  .factlist li{grid-template-columns:minmax(0,1fr);gap:2px}
  .legal{flex-direction:column}
  .brandrow{padding-bottom:12px}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}


/* ---------- interactive network map --------------------------------------- */
.netmap{border:1px solid var(--rule-soft);background:var(--paper)}
.netmap-controls{display:flex;gap:14px;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:14px clamp(12px,2vw,22px);border-bottom:1px solid var(--rule-soft)}
.chips{display:flex;gap:8px;flex-wrap:wrap}
.chip{font:inherit;font-weight:700;font-size:13px;letter-spacing:.03em;padding:9px 15px;min-height:40px;border:1.5px solid var(--rule-soft);background:var(--paper);color:var(--ink-2);cursor:pointer}
.chip:hover{border-color:var(--ink);color:var(--ink)}
.chip.is-on{background:var(--ink);border-color:var(--ink);color:var(--paper)}
.netmap-controls input[type=search]{flex:1;min-width:220px;min-height:40px;padding:10px 14px;font:inherit;font-size:15px;border:1.5px solid var(--rule-soft);background:var(--paper);color:var(--ink)}
.netmap-controls input[type=search]:focus{border-color:var(--ink)}
.netmap-stage{position:relative}
.netmap-stage svg{width:100%;height:auto;display:block}
.netmap .land{fill:#E9E9E5;stroke:none}
.netmap .pin{fill:var(--ink)}
.netmap .halo{fill:var(--ink);opacity:.09}
.netmap .mark{cursor:pointer}
.netmap .mark:hover .halo,.netmap .mark:focus .halo{opacity:.26}
.netmap .mark:focus{outline:none}
.netmap .mark:focus .pin{stroke:var(--ink);stroke-width:1.4}
.netmap .mark.is-open .halo{opacity:.32}
.netpanel{position:absolute;top:0;right:0;width:min(360px,86%);height:100%;overflow-y:auto;background:var(--paper);border-left:1px solid var(--rule);padding:20px 22px 26px}
.netpanel h3{margin:0 0 4px;padding-right:30px}
.netsub{font-size:12px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2);margin:0 0 16px}
.netclose{position:absolute;top:12px;right:12px;width:34px;height:34px;border:1px solid var(--rule-soft);background:var(--paper);font-size:20px;line-height:1;cursor:pointer;color:var(--ink)}
.netclose:hover{background:var(--ink);color:var(--paper)}
.netitem{padding:11px 0;border-bottom:1px solid var(--rule-soft)}
.netitem b{display:block;font-weight:700;font-size:15.5px;line-height:1.3}
.netitem span{display:block;font-size:14px;color:var(--ink-2);margin-top:2px;line-height:1.4}
.netitem em{display:block;font-style:normal;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);margin-top:4px}
.maplegend{display:flex;gap:22px;flex-wrap:wrap;padding:14px clamp(12px,2vw,22px);border-top:1px solid var(--rule-soft);font-size:13px;color:var(--ink-2)}
.maplegend b{color:var(--ink);font-weight:700}

/* ---------- the letter, folded ---------------------------------------- */
.letter{margin-top:4px}
.letter summary{display:inline-flex;align-items:center;gap:9px;min-height:44px;font-weight:700;font-size:16px;cursor:pointer;list-style:none;border-bottom:2px solid var(--ink);padding-bottom:2px}
.letter summary::-webkit-details-marker{display:none}
.letter summary::after{content:"\2193";font-weight:700}
.letter[open] summary{margin-bottom:20px}
.letter[open] summary::after{content:"\2191"}
.letter summary:hover{color:var(--ink-2);border-color:var(--ink-2)}
.letter-rest p{margin:0 0 20px}
.letter-rest p:last-child{margin-bottom:0}

/* ---------- four-column supporter list --------------------------------- */
.roll.roll-plain{grid-template-columns:repeat(4,minmax(0,1fr))}
.roll.roll-plain h4{display:none}
.roll.roll-plain li{padding:8px 0}
@media (max-width:900px){.roll.roll-plain{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:520px){.roll.roll-plain{grid-template-columns:minmax(0,1fr)}}

/* ---------- supporters record, compact accordion --------------------------- */
.yearacc{border-top:1px solid var(--rule)}
.yearacc details{border-bottom:1px solid var(--rule-soft)}
.yearacc summary{display:flex;align-items:center;gap:16px;padding:15px 40px 15px 0;cursor:pointer;list-style:none;position:relative;min-height:48px}
.yearacc summary::-webkit-details-marker{display:none}
.yearacc summary::after{content:"";position:absolute;right:6px;top:50%;width:12px;height:12px;margin-top:-6px;background:linear-gradient(var(--ink),var(--ink)) center/12px 1.6px no-repeat,linear-gradient(var(--ink),var(--ink)) center/1.6px 12px no-repeat;transition:transform .18s ease}
.yearacc details[open] summary::after{transform:rotate(45deg)}
.yearacc .y{font-weight:700;font-size:18px;letter-spacing:-.01em;min-width:52px}
.yearacc .p{font-weight:700;font-size:15.5px;letter-spacing:-.01em;flex:1}
.yearacc .c{font-size:12px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-2);white-space:nowrap}
.yearacc .body{padding:0 0 18px 68px}
.yearacc .body ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap}
.yearacc .body li{font-size:15.5px;color:var(--ink-2)}
.yearacc .body li:not(:last-child)::after{content:"·";padding:0 9px;color:var(--ink-3)}
@media (max-width:700px){.yearacc .body{padding-left:0}.yearacc summary{flex-wrap:wrap;gap:4px 12px}}

/* ---------- directory ----------------------------------------------------- */
.dirbar{display:flex;gap:12px;flex-wrap:wrap;align-items:center;margin-bottom:20px}
.dirbar input[type=search]{flex:1;min-width:220px;min-height:48px;padding:12px 15px;font:inherit;font-size:16px;border:1.5px solid var(--ink);background:var(--paper);color:var(--ink)}
.dircount{font-size:13px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2)}
.people-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:clamp(18px,2.2vw,30px)}
.pcard{text-decoration:none;color:inherit;display:block}
.pcard .imgwrap{margin-bottom:11px}
.pcard b{display:block;font-weight:700;font-size:16px;letter-spacing:-.01em;line-height:1.25}
.pcard span{display:block;font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);margin-top:5px;line-height:1.45}
.pcard em{display:block;font-style:normal;font-size:14px;color:var(--ink-2);margin-top:6px;line-height:1.4}
.noresults{padding:36px 0;color:var(--ink-2);font-size:16px}

/* ---------- cohort pages --------------------------------------------------- */
.resident{display:grid;grid-template-columns:200px minmax(0,1fr);gap:clamp(18px,2.6vw,36px);padding:clamp(24px,3vw,38px) 0;border-bottom:1px solid var(--rule-soft);align-items:start}
.resident:first-of-type{border-top:1px solid var(--rule)}
.resident h3{margin-bottom:5px}
.resident .role{font-weight:700;font-size:12px;letter-spacing:.11em;text-transform:uppercase;color:var(--ink-2);margin:0 0 12px}
.resident p{margin:0;color:var(--ink-2);max-width:var(--measure);font-size:16px;line-height:1.55}
.resident p strong{color:var(--ink)}
.editionmeta{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:0;border-top:1px solid var(--rule);margin-top:26px}
.editionmeta div{padding:18px 26px 18px 0;border-right:1px solid var(--rule-soft)}
.editionmeta div:last-child{border-right:0}
.editionmeta b{display:block;font-weight:700;font-size:12px;letter-spacing:.11em;text-transform:uppercase;color:var(--ink-2);margin-bottom:7px}
.editionmeta span{font-size:16px;line-height:1.4}
.backlink{display:inline-flex;align-items:center;gap:8px;min-height:44px;font-weight:700;font-size:13px;letter-spacing:.1em;text-transform:uppercase;text-decoration:none;color:var(--ink-2)}
.backlink:hover{color:var(--ink)}

/* ---------- edition index rows --------------------------------------------- */
.edrow{display:grid;grid-template-columns:96px minmax(0,1fr) minmax(0,220px);gap:0 clamp(16px,2.5vw,36px);padding:20px 0;border-bottom:1px solid var(--rule-soft);align-items:baseline;text-decoration:none;color:inherit}
.edrow:first-of-type{border-top:1px solid var(--rule)}
.edrow:hover{background:var(--wash)}
.edrow .yr{font-weight:700;font-size:19px;letter-spacing:-.01em}
.edrow .ti{font-weight:700;font-size:19px;letter-spacing:-.012em}
.edrow .lo{display:block;font-weight:400;font-size:15px;color:var(--ink-2);margin-top:4px;line-height:1.45}
.edrow .rt{font-size:13px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-2);text-align:right}

/* ---------- open call status ------------------------------------------------ */
/* The two open calls sit side by side, so their headings, date boxes and
   descriptions have to start on the same lines even though the labels above
   them are different lengths. The cards inherit the parent's rows rather than
   laying out their own. */
.callgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
  column-gap:clamp(22px,3vw,44px);row-gap:0;grid-template-rows:auto auto auto 1fr auto}
.callgrid .callcard{display:grid;grid-row:span 5;grid-template-rows:subgrid}
.callcard .when{justify-self:start}
.callcard{border-top:1px solid var(--rule);padding-top:22px}
.callcard .who{font-weight:700;font-size:12px;letter-spacing:.13em;text-transform:uppercase;color:var(--ink-2);margin:0 0 10px}
.callcard h3{font-size:clamp(21px,2.4vw,28px);margin-bottom:12px}
.callcard .when{display:inline-block;border:1.5px solid var(--ink);padding:8px 14px;font-weight:700;font-size:13px;letter-spacing:.08em;text-transform:uppercase;margin-bottom:16px}
.callcard p{color:var(--ink-2);margin:0 0 14px;max-width:52ch}

/* ---------- supporters by year ---------------------------------------------- */
.yearblock{padding:22px 0;border-bottom:1px solid var(--rule-soft);display:grid;grid-template-columns:120px minmax(0,1fr);gap:0 clamp(16px,2.4vw,34px);align-items:baseline}
.yearblock:first-of-type{border-top:1px solid var(--rule)}
.yearblock b{font-weight:700;font-size:19px;letter-spacing:-.01em}
.yearblock .prog{display:block;font-size:12px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-2);margin-top:4px}
.yearblock ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px 0}
.yearblock li{font-size:15.5px;color:var(--ink-2)}
.yearblock li:not(:last-child)::after{content:"·";padding:0 9px;color:var(--ink-3)}

/* ---------- phone -------------------------------------------------------
   Below 760px the two masthead rows are replaced by a single bar with a menu
   button, and the sections become a full page of taps. The desktop header is
   untouched above that width.
   ---------------------------------------------------------------------- */
.tap-only{display:none}
.mobilebar{display:none}
.mobilemenu{display:none}

/* The seven sections need about 850px to sit across; below that the desktop
   nav row starts scrolling sideways, so a tablet in portrait gets the phone
   header too. Page layout still switches at 760. */
@media (max-width:900px){
  .brandrow,.navrow,.tap-hide{display:none}
  .tap-only{display:inline}
  .masthead{border-bottom:1px solid var(--rule)}
  .mobilebar{
    display:flex;align-items:center;justify-content:space-between;
    gap:16px;padding:12px var(--gut);background:var(--paper);
  }
  .mobilebar .wordmark{width:96px}
  .menubtn{
    font:inherit;font-weight:700;font-size:13px;letter-spacing:.1em;
    text-transform:uppercase;display:inline-flex;align-items:center;gap:10px;
    min-height:48px;padding:0 4px;background:none;border:0;color:var(--ink);cursor:pointer;
  }
  .menubtn .bars{display:block;width:26px}
  .menubtn .bars i{display:block;height:2px;background:var(--ink)}
  .menubtn .bars i + i{margin-top:7px}

  .mobilemenu{
    display:block;position:fixed;inset:0;z-index:200;
    background:var(--paper);overflow-y:auto;overscroll-behavior:contain;
    padding-bottom:calc(28px + env(safe-area-inset-bottom));
  }
  .mobilemenu[hidden]{display:none}
  body.menu-open{position:fixed;width:100%;overflow:hidden}
  .mm-top{
    display:flex;align-items:center;justify-content:space-between;
    gap:16px;padding:12px var(--gut);border-bottom:1px solid var(--rule);
  }
  .mm-top .wordmark{width:96px}
  .menubtn.close{width:48px;justify-content:flex-end}
  .menubtn.close .x{position:relative;display:block;width:22px;height:22px}
  .menubtn.close .x::before,.menubtn.close .x::after{
    content:"";position:absolute;top:10px;left:0;width:22px;height:2px;background:var(--ink);
  }
  .menubtn.close .x::before{transform:rotate(45deg)}
  .menubtn.close .x::after{transform:rotate(-45deg)}

  .mm-nav{display:block;padding:6px var(--gut) 0}
  .mm-nav a{
    display:flex;align-items:center;min-height:64px;
    border-bottom:1px solid var(--rule-soft);text-decoration:none;color:var(--ink);
    font-weight:700;font-size:26px;line-height:1.1;letter-spacing:-.02em;
  }
  .mm-nav a[aria-current="page"]{color:var(--ink-3)}
  .mm-foot{display:flex;flex-direction:column;gap:12px;padding:26px var(--gut) 0}
  .mm-foot .btn{width:100%}
  .mm-contact{margin:12px 0 0;font-size:14px;line-height:1.6;color:var(--ink-2)}
  .mobilebar .wordmark{padding:10px 0}
}

@media (max-width:760px){
  /* One column of 156 portrait cards ran to seventy thousand pixels — about
     ninety screens. Two columns and tighter type cut that to a quarter. */
  .dirbar input[type=search]{flex:1 1 100%;min-width:0}
  .dirbar select{flex:1 1 0;min-width:0;min-height:44px}
  .dircount{flex:1 1 100%}
  .people-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 12px}
  .pcard .imgwrap{margin-bottom:8px}
  .pcard b{font-size:14px;line-height:1.2}
  .pcard span{font-size:10.5px;letter-spacing:.06em;margin-top:4px}
  .pcard em{font-size:12px;margin-top:4px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

  /* At phone width the world is 119px tall and the pins are four pixels
     across — visible, but not something a thumb can hit. The map keeps its
     own scroll at roughly twice the screen, which doubles every pin. */
  .netmap-stage{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .netmap-stage svg{min-width:720px}
  .netmap-controls input[type=search]{min-width:0;width:100%}

  .resident{grid-template-columns:minmax(0,1fr)}
  .resident .imgwrap{max-width:220px}
  .edrow{grid-template-columns:70px minmax(0,1fr)}
  .edrow .rt{grid-column:2;text-align:left;margin-top:6px}
  .editionmeta{grid-template-columns:repeat(2,minmax(0,1fr))}
  .editionmeta div{padding-right:16px}
  .yearblock{grid-template-columns:minmax(0,1fr);gap:10px}
}

/* ---------- smart crops -------------------------------------------------
   object-position per image, from face detection at build time.
   Group photographs are cropped around the people, not the frame centre.
   ---------------------------------------------------------------------- */
img.r-3x2,img.r-16x9,img.r-4x3,img.r-3x4,img.r-1x1,img.r-21x9{object-position:center 55%}
/* The community photograph is a portrait selfie of six. Cropped to the group
   hugging in the middle, with the person above them kept in frame. */
img[src$="community-photo.jpg"]{object-position:center 6%}
img[src$="donate-cohort.jpg"]{object-position:center 45%}
img[src$="about-hero.jpg"]{object-position:center 20%}
img[src$="hny-hero.jpg"]{object-position:center 68%}
img[src$="01-group-cohort.jpg"]{object-position:center 60%}
img[src$="02-core-research-trip.jpg"]{object-position:center 74%}
img[src$="03-hello-new-york-cohort.jpg"]{object-position:center 71%}
img[src$="04-bergen.jpg"]{object-position:center 62%}
img[src$="05-museum-visit.jpg"]{object-position:center 16%}
img[src$="06-fellow-notes-field.jpg"]{object-position:center 32%}
img[src$="07-core-tunis.jpg"]{object-position:center 65%}
img[src$="08-core-northern-sweden.jpg"]{object-position:center 47%}
img[src$="09-hny-institution.jpg"]{object-position:center 49%}
img[src$="10-exhibition-award-install.jpg"]{object-position:center 38%}
img[src$="11-apartment-buenos-aires.jpg"]{object-position:center 39%}
img[src$="12-film-taina-azeredo.jpg"]{object-position:center 74%}
img[src$="13-film-earthbound.jpg"]{object-position:center 50%}
img[src$="14-return-flight-ticket-madrid.jpg"]{object-position:center 38%}
img[src$="15-return-flight-ticket-detail.jpg"]{object-position:center 53%}
img[src$="cohort-hny-2025-hello-new-york.jpg"]{object-position:center 63%}
img[src$="cohort-hny-2026-hello-new-york.jpg"]{object-position:center 60%}
img[src$="cohort-nomadic-2024-who-is-being-heard.jpg"]{object-position:center 68%}
img[src$="hny-2023-cohort.jpg"]{object-position:center 54%}
img[src$="portrait-natasha.jpg"]{object-position:center 59%}
