/* "Meet today's launches" (functions/_neighbours.js): three small cards with the usual vote button. */
.nbr{container-type:inline-size;margin:22px 0;padding:14px 16px 16px;text-align:start;background:var(--paper);border:1.5px solid var(--ink);border-radius:12px;box-shadow:3px 3px 0 var(--box2)}
.nbr[hidden]{display:none}
.nbr .nbhead{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}
.nbr .nbhead h2,.nbr .nbhead h3{margin:0;font-size:23px;line-height:1.15}
.nbr .nbhead p{margin:4px 0 0;font-size:14.5px;line-height:1.45;color:var(--mute)}
.nbr .nbskip{flex:none;min-height:32px;padding:4px 2px;font-size:13px;color:var(--mute);text-decoration:underline}
.nbr .nblist{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:minmax(0,1fr);gap:8px}
@container (min-width:720px){.nbr .nblist{grid-template-columns:repeat(3,minmax(0,1fr))}.nbr .nbcard{align-items:flex-start}}
.nbr .nbcard{display:flex;list-style:none;align-items:center;gap:10px;min-width:0;margin:0;padding:10px;background:var(--cream);border:1.5px solid var(--ink);border-radius:9px}
.nbr .nbicon{flex:none;display:flex;line-height:0}.nbr .nbicon .icon{flex:none}
.nbr .nbtext{flex:1;min-width:0}
.nbr .nbname{display:block;overflow:hidden;font:600 15px/1.3 var(--sans);color:var(--ink);text-overflow:ellipsis;white-space:nowrap;text-decoration:none}
.nbr .nbname:hover,.nbr .nbname:focus-visible{text-decoration:underline}
.nbr .nbtag{display:-webkit-box;margin:2px 0 0;overflow:hidden;font-size:13px;line-height:1.35;color:var(--mute);-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow-wrap:anywhere}
.nbr .nbby{margin:3px 0 0;overflow:hidden;font-size:12px;line-height:1.3;color:var(--faint);text-overflow:ellipsis;white-space:nowrap}
.nbr .nbby a{display:inline;color:inherit;text-decoration:underline}
.nbr .nbcard .vote{flex:none}
.nbr .nbsoon{flex:none;max-width:72px;padding:4px 6px;font:10px/1.3 var(--pixel);text-align:center;color:var(--mute);border:1.5px dashed var(--ink);border-radius:7px}
@media (prefers-reduced-motion:no-preference){.nbr{animation:nbin .35s ease-out both}@keyframes nbin{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}}
@media (max-width:480px){.nbr{padding:12px}.nbr .nbhead h2,.nbr .nbhead h3{font-size:21px}}
/* The 30-day activity strip (strip() in functions/_neighbours.js): one thin line per day, oldest on the left. A day with a
   vote takes the next MacPip stripe colour, in order; empty days stay faint beige and today has a small mark under it. */
.nbprofile{margin:12px 0 0}.nbprofile .nbsup{margin:0}
.nbdays{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px;margin:10px 0 0}
.nbdays p{margin:0;font-size:13px;line-height:1.35;color:var(--mute)}.nbdays b{font-weight:600;color:var(--ink)}
.nbstrip{position:relative;display:flex;align-items:flex-end;gap:3px;height:24px;padding-bottom:6px}
.nbstrip i{position:relative;flex:none;width:3px;height:14px;background:#e4dccb;border-radius:2px;transform-origin:50% 100%}
.nbstrip i.v{height:18px;box-shadow:inset 0 -3px 0 rgba(0,0,0,.16)}
.nbstrip i.c0{background:#5fb85a}.nbstrip i.c1{background:#f2c94f}.nbstrip i.c2{background:#f08a2e}.nbstrip i.c3{background:#e5483e}.nbstrip i.c4{background:#8e5bbd}.nbstrip i.c5{background:#3d8fd9}
.nbstrip i.t:after{content:"";position:absolute;left:50%;bottom:-5px;width:3px;height:3px;margin-left:-1.5px;background:var(--ink);border-radius:50%}
.nbme .nbdays{margin:10px 0 2px}
@media (prefers-reduced-motion:no-preference){
  .nbstrip{animation:nbsweep .9s cubic-bezier(.3,.7,.3,1) both}
  .nbstrip i.v{animation:nbgrow .55s cubic-bezier(.34,1.56,.64,1) .25s both}
  @keyframes nbsweep{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 -4px 0 0)}}
  @keyframes nbgrow{from{transform:scaleY(.25)}to{transform:none}}
}
@media (max-width:480px){.nbdays{gap:6px 10px}.nbstrip{gap:2.5px}}
/* "Vote for one to finish" above the submit form's Send button (gateBox in functions/_neighbours.js). */
.nbgate{margin:18px 0}
.nbgate .nbtick{flex:none;width:30px;height:30px;border:1.5px dashed var(--ink);border-radius:8px;background:var(--cream)}
.nbgate.nbok{background:#eef7e9}
.nbgate.nbok .nbtick{border-style:solid;background:#5fb85a url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2.5 6.2 5 8.6l4.6-5' fill='none' stroke='%23fff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/18px no-repeat}
.nbgate h3 [hidden],.nbgate p[hidden]{display:none}
.nbgate .nball{margin-top:10px}
.nbgate .nball summary{display:inline-flex;align-items:center;min-height:36px;cursor:pointer;font-size:14px;text-decoration:underline;text-underline-offset:3px}
.nbgate .nball[open] summary{margin-bottom:8px}
.nbgate .nbwhy{margin:10px 0 0;font-size:14px;line-height:1.45;color:#b23a2f}
.nbgate .nbwhy:empty{display:none}
@media (prefers-reduced-motion:no-preference){
  .nbgate.nbjust .nbtick{animation:nbtickin .5s cubic-bezier(.34,1.56,.64,1) both}
  .nbgate.nbshake{animation:nbshake .45s ease-in-out}
  @keyframes nbtickin{from{transform:scale(.4) rotate(-12deg)}to{transform:none}}
  @keyframes nbshake{20%{transform:translateX(-6px)}40%{transform:translateX(5px)}60%{transform:translateX(-3px)}80%{transform:translateX(2px)}}
}
