/* Peace Sine, public pages. One photograph above the ground, the music below it. */
/* Alegreya and Alegreya Sans (Juan Pablo del Peral, Huerta Tipográfica; SIL Open Font License), Latin subsets, served from here. */
@font-face{font-family:'Alegreya';font-style:italic;font-weight:400;font-display:swap;src:url(/assets/alegreya-400-italic.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Alegreya';font-style:normal;font-weight:400;font-display:swap;src:url(/assets/alegreya-400.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Alegreya';font-style:normal;font-weight:500;font-display:swap;src:url(/assets/alegreya-500.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Alegreya Sans';font-style:italic;font-weight:400;font-display:swap;src:url(/assets/alegreya-sans-400-italic.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Alegreya Sans';font-style:normal;font-weight:400;font-display:swap;src:url(/assets/alegreya-sans-400.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Alegreya Sans';font-style:normal;font-weight:500;font-display:swap;src:url(/assets/alegreya-sans-500.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
:root{
  color-scheme:dark;
  --night:#0A0D10; --night-2:#0E1316; --humus:#0E1512; --plate:#1C2A25; --plate-2:#141C18;
  --sage:#7FA59A; --sage-lit:#9CC0B4; --mist:#E6E9E4;
  --dim:rgba(230,233,228,.74); --faint:rgba(230,233,228,.58); --line:rgba(230,233,228,.14); --edge:rgba(230,233,228,.42);
  --alpen:#E8A48C;
  --serif:"Alegreya",Georgia,"Times New Roman",serif;
  --face:"Alegreya Sans",system-ui,-apple-system,"Segoe UI",sans-serif;
  --gut:clamp(16px,5vw,56px); --max:76rem; --measure:38rem;
  --beat:.857s; --half:.43s; --ease:cubic-bezier(.16,1,.3,1);
  accent-color:var(--sage); caret-color:var(--sage);
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:5rem;scrollbar-color:var(--plate) var(--night)}
body{margin:0;background:var(--night);color:var(--mist);font:400 1.0625rem/1.55 var(--face);font-variant-numeric:tabular-nums;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
@media (min-width:820px){body{font-size:1.125rem}}
/* grain over the ground, the way the photographs carry it */
body::after{content:"";position:fixed;inset:0;z-index:60;pointer-events:none;opacity:.1;mix-blend-mode:soft-light;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='220' height='220'><filter id='g'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix type='saturate' values='0'/></filter><rect width='100%25' height='100%25' filter='url(%23g)'/></svg>")}
::selection{background:var(--sage);color:var(--night)}
img{display:block;max-width:100%;height:auto}
a{color:inherit;text-decoration:underline;text-decoration-color:var(--edge);text-underline-offset:.22em;text-decoration-thickness:1px;
  transition:text-decoration-color var(--half) var(--ease),color var(--half) var(--ease)}
a:hover{text-decoration-color:var(--mist)}
:focus-visible{outline:2px solid var(--sage-lit);outline-offset:3px}
h1,h2,h3,h4{margin:0;font-weight:400;text-wrap:balance}
p{margin:0}
.wrap{width:min(100%,var(--max));margin:0 auto;padding:0 var(--gut)}
.sr{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.skip{position:absolute;left:1rem;top:-4rem;z-index:70;background:var(--mist);color:var(--night);padding:.7rem 1rem;text-decoration:none}
.skip:focus{top:1rem}
.ico{width:1.2rem;height:1.2rem;flex:none}

/* ---- controls: hairline, square, brightening slowly ---- */
.btns{display:flex;flex-wrap:wrap;gap:.6rem}
.btn{display:inline-flex;align-items:center;gap:.55rem;min-height:50px;padding:.7rem 1.25rem;border:1px solid var(--edge);
  color:var(--mist);text-decoration:none;font:500 1rem/1.1 var(--face);letter-spacing:.01em;background:transparent;cursor:pointer;
  transition:background var(--beat) var(--ease),border-color var(--beat) var(--ease),color var(--beat) var(--ease)}
.btn:hover{border-color:var(--mist);background:rgba(230,233,228,.07)}
.btn.solid{background:var(--mist);border-color:var(--mist);color:var(--night)}
.btn.solid:hover{background:#fff;border-color:#fff}
.chips{display:flex;flex-wrap:wrap;gap:.5rem}
.chip{display:inline-flex;align-items:center;gap:.45rem;min-height:44px;padding:.55rem .9rem;border:1px solid var(--line);
  text-decoration:none;color:var(--dim);font-size:.95rem;transition:color var(--beat) var(--ease),border-color var(--beat) var(--ease)}
.chip:hover{color:var(--mist);border-color:var(--edge)}

/* ---- top bar ---- */
.top{position:sticky;top:0;z-index:10;padding:.6rem 0 1.2rem;background:linear-gradient(rgba(10,13,16,.82),rgba(10,13,16,0))}
.top-in{display:flex;align-items:center;justify-content:space-between;gap:1rem}
.top-mark{display:block;text-decoration:none;padding:.4rem 0;transition:opacity var(--half) var(--ease)}
.top-mark img{width:8.5rem}
.has-hero .top-mark.away{opacity:0;pointer-events:none}
.top{transition:background var(--beat) var(--ease),border-color var(--beat) var(--ease);border-bottom:1px solid transparent}
.top.solid{background:var(--humus);border-bottom-color:var(--line);padding-bottom:.6rem}
.top-nav{display:flex;gap:.2rem}
.top-nav a{display:inline-flex;align-items:center;min-height:44px;padding:0 .75rem;color:var(--dim);text-decoration:none;font-size:1rem;
  transition:color var(--half) var(--ease)}
.top-nav a:hover{color:var(--mist)}

/* ---- the stage: shot 6 full-bleed, the logo at its foot ---- */
.hero{position:relative;isolation:isolate;display:flex;align-items:flex-end;min-height:min(88svh,56rem);margin-top:-4.6rem;overflow:hidden}
.hero-photo{position:absolute;inset:0;z-index:-1}
.hero-photo img{width:100%;height:100%;object-fit:cover;object-position:50% 18%}
.hero::after{content:"";position:absolute;inset:0;z-index:-1;
  background:linear-gradient(180deg,rgba(10,13,16,.25) 0%,rgba(10,13,16,.08) 30%,rgba(10,13,16,.55) 62%,var(--night) 100%)}
.hero-text{padding-top:52vh;padding-bottom:clamp(2.2rem,6vw,4rem)}
.hero-logo img{width:min(100%,21rem)}
.hero-line{margin:1rem 0 1.5rem;color:var(--dim);font-size:1.05rem;letter-spacing:.01em}
@media (min-width:820px){
  .hero{min-height:min(92svh,60rem)}
  .hero-photo img{object-position:50% 22%}
  .hero-logo img{width:min(100%,40rem)}
  .hero-line{font-size:1.2rem;margin:1.2rem 0 1.8rem}
}

/* ---- the ground: the music ---- */
.sec{padding:clamp(4rem,9vw,7rem) 0 0}
.ground{padding-top:0;border-top:1px solid var(--line);background:linear-gradient(var(--night),var(--humus) 70rem)}
/* below the ground the page stays in the humus; it never lightens again */
.has-hero .ground ~ .sec,.has-hero .foot{background:var(--humus)}
.ground-text{padding-top:clamp(3.5rem,8vw,6rem);max-width:var(--measure)}
.ground-grid{display:grid;gap:0 5rem;align-items:start}
.ground-side{max-width:var(--measure)}
@media (min-width:1080px){.ground-grid{grid-template-columns:minmax(20rem,25rem) minmax(0,1fr)}.ground-side{max-width:46rem;padding-top:calc(clamp(3.5rem,8vw,6rem) + 5.4rem)}}
.sec-h{font:400 clamp(2rem,4.4vw,3rem)/1.05 var(--serif);letter-spacing:-.01em;margin:0 0 1.8rem}
.sub-h{font:500 .82rem/1.3 var(--face);text-transform:uppercase;letter-spacing:.16em;color:var(--faint);margin:3.2rem 0 1.1rem}
.more{margin-top:2.2rem;color:var(--dim)}
.anchor{display:block;position:relative;top:-5rem}

.latest{display:grid;gap:1rem}
.latest.next{padding-bottom:2.6rem;margin-bottom:2.6rem;border-bottom:1px solid var(--line)}
.verse{font:400 clamp(2.5rem,6.4vw,5.4rem)/.98 var(--serif);letter-spacing:-.012em}
.verse small{display:block;margin-top:.8rem;font:italic 400 1.2rem/1.4 var(--serif);color:var(--dim);letter-spacing:0}
.run{display:flex;flex-wrap:wrap;gap:.3rem 1.2rem;margin:1.2rem 0 1.2rem;color:var(--faint);font:500 .8rem/1.4 var(--face);
  text-transform:uppercase;letter-spacing:.12em}
.recent{list-style:none;margin:0;padding:0}
.entry{padding:1.5rem 0 1.6rem;border-top:1px solid var(--line)}
.entry:last-child{border-bottom:1px solid var(--line)}
.entry .verse{font-size:clamp(1.7rem,3.6vw,2.4rem)}
.entry .verse small{font-size:1.05rem;margin-top:.4rem}
.entry .run{margin:.9rem 0 .9rem}


/* ---- the set ---- */
.deck{display:grid;gap:1rem;max-width:var(--measure)}
.deck .verse{font-size:clamp(1.7rem,3.6vw,2.4rem)}
.play{display:inline-flex;align-items:center;gap:.9rem;min-height:56px;padding:.5rem 1.25rem .5rem .5rem;background:transparent;border:1px solid var(--edge);
  color:var(--mist);font:500 1rem/1.2 var(--face);cursor:pointer;text-align:left;width:fit-content;
  transition:border-color var(--beat) var(--ease),background var(--beat) var(--ease)}
.play:hover{border-color:var(--mist);background:rgba(230,233,228,.07)}
.play .disc{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:var(--mist);color:var(--night)}
.play .disc svg{width:18px;height:18px;fill:currentColor;margin-left:2px}
.play small{display:block;font-weight:400;color:var(--dim);font-size:.88rem;margin-top:.15rem}
.player{width:100%;border:0;display:block;background:var(--night-2)}
.deck .alt{color:var(--faint);font-size:.92rem}

/* ---- dates: state is a mark, a filled point played, an open ring upcoming ---- */
/* ---- the set as the spine: the timeline, the tracklist and the bar that follows the visitor ---- */
.set-sec{scroll-margin-top:4rem}
.set-grid{display:grid;gap:2.4rem}
@media (min-width:1080px){.set-grid{grid-template-columns:minmax(20rem,25rem) minmax(0,1fr);gap:5rem;align-items:start}.wave{margin-top:1.8rem;height:110px}}
.set-side{max-width:46rem}
.wave{position:relative;height:72px;margin:.4rem 0;cursor:pointer;touch-action:none}
.wave:focus-visible{outline:2px solid var(--sage);outline-offset:8px}
.wave svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible;display:block}
.wave path{fill:none;stroke-width:1.2px;vector-effect:non-scaling-stroke}.wave .all{stroke:var(--edge)}.wave .done{stroke:var(--sage)}
.wave .head,.wave .mark{position:absolute;border-radius:50%;transform:translate(-50%,-50%);pointer-events:none}
.wave .head{width:12px;height:12px;background:var(--alpen);left:0;top:50%;transition:left var(--half) linear,top var(--half) linear}
.wave.scrub .head{transition:none}
.wave .mark{width:7px;height:7px;background:var(--sage)}.wave .mark.other{width:5px;height:5px;background:var(--humus);border:1px solid var(--edge)}
.wave-t{display:flex;justify-content:space-between;margin:0;color:var(--faint);font-size:.85rem;font-variant-numeric:tabular-nums}
.fold{margin-top:1.6rem}
.fold summary{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:48px;padding:.72rem 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);
  list-style:none;cursor:pointer;color:var(--mist);font:500 1rem/1.3 var(--face);transition:color var(--half) var(--ease)}
.fold summary::-webkit-details-marker{display:none}
.fold summary:hover{color:#fff}.fold summary:focus-visible{outline:2px solid var(--sage);outline-offset:4px}
.fold-l{display:flex;flex-wrap:wrap;align-items:baseline;gap:.3rem 1rem}
.fold-n{color:var(--faint);font-size:.85rem;font-variant-numeric:tabular-nums}
.fold .hide{display:none}.fold[open] .hide{display:inline}.fold[open] .show{display:none}
.fold-v{width:14px;height:14px;flex:none;color:var(--dim);transition:transform var(--half) var(--ease)}.fold[open] .fold-v{transform:rotate(180deg)}
.fold[open] summary{border-bottom:0}
.setlist{list-style:none;margin:0;padding:0;counter-reset:n}
.setlist li{display:grid;grid-template-columns:1.6rem minmax(0,1fr) auto;gap:.2rem .9rem;padding:.72rem 0;border-top:1px solid var(--line);align-items:baseline;color:var(--dim);font-size:.98rem}
.setlist li:last-child{border-bottom:1px solid var(--line)}
.setlist li::before{counter-increment:n;content:counter(n,decimal-leading-zero);font:400 .82rem/1 var(--face);color:var(--faint);font-variant-numeric:tabular-nums}
.setlist li.his{color:var(--mist)}
.setlist a.t{color:inherit;text-decoration:underline;text-underline-offset:.22em;text-decoration-color:var(--line);transition:text-decoration-color var(--half) var(--ease)}
.setlist a.t:hover,.setlist a.t:focus-visible{text-decoration-color:var(--mist)}
.setlist li.now::before{content:"";width:.6rem;height:.6rem;border-radius:50%;background:var(--alpen);transform:translateY(.1rem)}
.setlist .at,.setlist .jump{font:400 .85rem/1 var(--face);color:var(--faint);font-variant-numeric:tabular-nums}
.setlist .jump{background:none;border:0;padding:.4rem 0;cursor:pointer;color:var(--dim)}.setlist .jump:hover{color:var(--mist)}
.setlist li.now .at,.setlist li.now .jump{color:var(--alpen)}
.dock{position:fixed;left:0;right:0;bottom:0;z-index:20;background:var(--humus);border-top:1px solid var(--line);pointer-events:none;
  visibility:hidden;opacity:0;transform:translateY(100%);transition:opacity var(--beat) var(--ease),transform var(--beat) var(--ease),visibility 0s var(--beat)}
.dock.on{visibility:visible;opacity:1;transform:none;transition-delay:0s;pointer-events:auto}
body.docked{padding-bottom:4.5rem}
.dock .seek{position:absolute;left:0;right:0;top:-7px;height:14px;background:none;border:0;padding:0;cursor:pointer}
.dock .seek .bar{position:absolute;left:0;top:6px;height:1px;width:0;background:var(--sage)}
.dock-in{display:flex;align-items:center;gap:1rem;min-height:68px;padding-top:.5rem;padding-bottom:.5rem}
.dock .disc{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:var(--mist);color:var(--night);border:0;padding:0;cursor:pointer;flex:none}
.dock .disc svg{width:18px;height:18px;fill:currentColor}.dock .disc .i-play{margin-left:2px;display:none}
.dock.paused .disc .i-play{display:block}.dock.paused .disc .i-pause{display:none}
.dock .np{flex:1;min-width:0;margin:0;line-height:1.25}
.dock .np b{display:block;font:400 1.05rem/1.2 var(--serif);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dock .np span{display:block;color:var(--dim);font-size:.88rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dock .tm{color:var(--dim);font-size:.9rem;font-variant-numeric:tabular-nums;white-space:nowrap}
.dock .x{background:none;border:0;color:var(--faint);font:400 .9rem var(--face);padding:.6rem 0 .6rem .6rem;cursor:pointer;transition:color var(--half) var(--ease)}.dock .x:hover{color:var(--mist)}
@media (max-width:480px){.dock .np span,.dock .tot{display:none}.dock .np b{white-space:normal;font-size:.95rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.dock-in{gap:.8rem}}

.dates{list-style:none;margin:0;padding:0;max-width:44rem}
.dates li{display:grid;grid-template-columns:1.1rem 7.5rem minmax(0,1fr);gap:.2rem .9rem;padding:1.1rem 0;border-top:1px solid var(--line);align-items:baseline}
.dates li:last-child{border-bottom:1px solid var(--line)}
.dates li::before{content:"";width:.6rem;height:.6rem;border-radius:50%;border:1.5px solid var(--sage);transform:translateY(-.05rem)}
.dates li.up::before{border-color:var(--alpen)}
.dates.past li::before{background:var(--sage)}
.dates.past li.up::before{background:none}
.dates time{color:var(--dim);font-size:.98rem}
.dates .ev{font:400 1.25rem/1.3 var(--serif)}
.dates .at{display:block;font:400 .95rem/1.45 var(--face);color:var(--dim);margin-top:.15rem}
.dates .tix{grid-column:3}
.empty{color:var(--dim);margin-bottom:2.4rem;max-width:var(--measure)}

/* ---- mailing list ---- */
.signup{max-width:var(--measure)}
.signup .s-head{font:400 clamp(1.8rem,3.8vw,2.5rem)/1.1 var(--serif);letter-spacing:-.01em}
.signup .s-sub{color:var(--dim);margin:.6rem 0 1.3rem}
.s-row{display:flex;gap:.5rem;flex-wrap:wrap}
.s-row input{flex:1 1 14rem;min-height:50px;padding:.7rem .95rem;border:1px solid var(--edge);border-radius:0;background:rgba(230,233,228,.03);color:var(--mist);
  font:400 16px/1.2 var(--face);transition:border-color var(--half) var(--ease),box-shadow var(--half) var(--ease)}
.s-row input::placeholder{color:var(--faint)}
.s-row input:focus{outline:none;border-color:var(--sage-lit);box-shadow:0 0 0 1px var(--sage-lit)}
.s-note{min-height:1.4em;margin-top:.7rem;color:var(--dim);font-size:.95rem}
.s-note.err{color:var(--mist);font-weight:500}
.s-row input[aria-invalid="true"]{border-color:var(--mist);border-width:2px}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}

/* ---- contact ---- */
.contacts{display:grid;gap:2rem;margin-bottom:1rem}
@media (min-width:820px){.contacts{grid-template-columns:1fr 1fr;gap:3rem}}
.contact .role{color:var(--faint);font:500 .8rem/1.4 var(--face);text-transform:uppercase;letter-spacing:.12em}
.contact .who{margin:.3rem 0 .5rem;font:400 1.15rem var(--face)}
.contact .mail{display:inline-block;font:400 clamp(1.3rem,3vw,1.7rem)/1.25 var(--serif);word-break:break-word;margin-bottom:.6rem;padding:.5rem 0}
.contact .copied{min-height:1.3em;color:var(--dim);font-size:.9rem;margin-top:.4rem}

/* ---- footer ---- */
.foot{margin-top:clamp(5rem,10vw,8rem);border-top:1px solid var(--line);padding:2rem 0 3rem}
/* under the hero the ground must stay humus to the page end, so the gap above the footer is the last section's own padding, not a margin that would show the body */
.has-hero .foot{margin-top:0}
.has-hero .sec:last-of-type{padding-bottom:clamp(5rem,10vw,8rem)}
.foot-in{display:flex;flex-wrap:wrap;gap:1rem 2rem;align-items:center;justify-content:space-between;color:var(--dim);font-size:.95rem}
.foot-in img{width:7rem}
.foot-in a{display:inline-block;padding:.75rem 0}

/* ---- links page ---- */
.lk{width:min(100%,30rem);margin:0 auto;padding:1.6rem 16px 3rem;display:grid;gap:.9rem}
.lk-head{display:grid;justify-items:center;text-align:center;gap:.4rem;padding-bottom:.6rem}
.lk-avatar{width:72px;height:72px;border-radius:50%;object-fit:cover;object-position:52% 14%;border:1px solid var(--line)}
.lk-logo img{width:12.5rem;margin-top:.4rem}
.lk-line{color:var(--dim);font-size:1rem}
.share{display:inline-flex;align-items:center;gap:.45rem;min-height:44px;padding:.4rem .9rem;margin-top:.3rem;background:none;border:1px solid var(--line);
  color:var(--dim);font:400 .95rem var(--face);cursor:pointer;transition:color var(--beat) var(--ease),border-color var(--beat) var(--ease)}
.share:hover{color:var(--mist);border-color:var(--edge)}
.share-note{min-height:1.2em;font-size:.88rem;color:var(--dim)}
.pads{display:grid;grid-template-columns:repeat(3,1fr);gap:.6rem}
.pad{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:.35rem;min-height:60px;padding:.7rem .4rem;background:var(--plate-2);
  border:1px solid var(--line);text-decoration:none;font:500 .88rem var(--face);text-align:center;
  transition:border-color var(--beat) var(--ease),background var(--beat) var(--ease)}
.pad:hover{border-color:var(--edge);background:var(--plate)}
.pad.lead{grid-column:1/-1;flex-direction:row;gap:.7rem;background:var(--mist);color:var(--night);border-color:var(--mist);min-height:64px;font-size:1.05rem}
.pad.lead:hover{background:#fff;border-color:#fff}
.card{background:rgba(230,233,228,.03);border:1px solid var(--line);padding:1.2rem}
.card-h{font:500 .8rem/1.3 var(--face);text-transform:uppercase;letter-spacing:.14em;color:var(--faint);margin-bottom:.9rem}
.card .k{color:var(--faint);font:500 .78rem/1.5 var(--face);text-transform:uppercase;letter-spacing:.12em;margin-top:.6rem}
.card .m{font:400 2rem/1.05 var(--serif);margin:0 0 .35rem;letter-spacing:-.01em}
.card .s{color:var(--dim);font:italic 400 1.05rem/1.4 var(--serif)}
.release-card .chips{margin-top:1rem}
.release-card .btns{margin-top:1rem}
.set-card .play{margin-top:.9rem}
.socials{display:flex;justify-content:center;gap:.6rem;padding:.4rem 0}
.socials a{display:grid;place-items:center;width:48px;height:48px;border-radius:50%;border:1px solid var(--line);color:var(--dim);
  transition:color var(--beat) var(--ease),border-color var(--beat) var(--ease)}
.socials a:hover{color:var(--mist);border-color:var(--edge)}
.lk .signup{background:rgba(230,233,228,.03);border:1px solid var(--line);padding:1.2rem}
.lk .signup .s-head{font-size:1.5rem}
.lk-contact .contacts{grid-template-columns:1fr;gap:1.2rem;margin:0}
.lk-contact .contact .mail{font-size:1.15rem;margin-bottom:.3rem;padding:.65rem 0}
.lk-foot{display:flex;justify-content:center;gap:1.6rem;color:var(--dim);font-size:.95rem;padding-top:1rem}
.lk-foot a{display:inline-block;padding:.7rem 0}
.lk > *{animation:lift var(--beat) var(--ease) both}
.lk > *:nth-child(2){animation-delay:.07s}.lk > *:nth-child(3){animation-delay:.14s}.lk > *:nth-child(4){animation-delay:.21s}
.lk > *:nth-child(5){animation-delay:.28s}.lk > *:nth-child(n+6){animation-delay:.35s}
@keyframes lift{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}

/* ---- press kit ---- */
.epk{width:min(100%,var(--max));margin:0 auto;padding:2rem var(--gut) 4rem}
.epk-head{display:grid;gap:2rem;padding-bottom:2.4rem;border-bottom:1px solid var(--line)}
.epk-logo img{width:min(100%,26rem)}
.epk-line{color:var(--dim);margin:.8rem 0 1.4rem}
.kv{margin:0 0 1.6rem;display:grid;gap:.7rem}
.kv div{display:grid;gap:.1rem}
.kv dt{color:var(--faint);font:500 .78rem/1.4 var(--face);text-transform:uppercase;letter-spacing:.12em}
.kv dd{margin:0;word-break:break-word}
.epk-photo{width:100%;max-width:26rem;aspect-ratio:4/5;object-fit:cover;object-position:50% 20%}
.mail-inline{display:inline-block;padding:.55rem 0;word-break:break-word}
.jump{display:flex;flex-wrap:wrap;gap:.2rem 1.2rem;margin-top:1rem}
.jump a{display:inline-flex;align-items:center;min-height:44px;color:var(--dim)}
.key{color:var(--faint);font-size:.88rem;margin-bottom:.4rem}
.booth-list{display:none;margin:.6rem 0 0;padding-left:1.1rem;color:var(--dim);font-size:.95rem}
@media (max-width:600px){.booth svg{display:none}.booth-list{display:block}}
@media (min-width:820px){.epk-head{grid-template-columns:1.3fr .7fr;align-items:center}.epk-photo{justify-self:end}}
.epk-body{display:grid;gap:3rem;padding-top:2.6rem}
@media (min-width:980px){.epk-body{grid-template-columns:1fr 1fr;gap:3rem 4rem}}
.epk-body h2{font:400 1.7rem/1.15 var(--serif);margin-bottom:1rem}
.epk-body section > p{max-width:var(--measure);margin-bottom:.9rem}
.epk .one{color:var(--dim)}
.figs{margin:0}
.figs div{display:grid;grid-template-columns:7.5rem minmax(0,1fr);gap:1rem;align-items:baseline;padding:.6rem 0;border-top:1px solid var(--line)}
.figs div:last-child{border-bottom:1px solid var(--line)}
.figs dt{font:400 1.35rem/1.2 var(--serif);letter-spacing:-.01em}
.figs dd{margin:0;color:var(--mist);font-size:.98rem}
.figs .asof{display:block;color:var(--faint);font-size:.85rem}
.tracks{list-style:none;margin:0;padding:0}
.tracks li{border-top:1px solid var(--line)}
.tracks a{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.1rem 1rem;padding:.75rem 0;text-decoration:none;min-height:44px}
.tracks .t{font:400 1.15rem/1.3 var(--serif)}
.tracks small{display:block;color:var(--dim);font:400 .9rem/1.4 var(--face)}
.tracks .d{color:var(--faint);font-size:.92rem}
.spec{margin:0}
.spec div{display:grid;grid-template-columns:7.5rem minmax(0,1fr);gap:1rem;padding:.6rem 0;border-top:1px solid var(--line)}
.spec dt{color:var(--faint);font-size:.95rem}
.spec dd{margin:0}
.note{color:var(--dim);margin-bottom:1rem}
.booth{margin:1.4rem 0 0}
.booth svg{width:100%;height:auto;font-family:var(--face)}
.booth .stage{fill:none;stroke:var(--line)}
.booth .table{fill:var(--plate-2);stroke:var(--edge)}
.booth .gear{fill:var(--plate);stroke:var(--sage)}
.booth .ctl{fill:none;stroke:var(--sage);stroke-dasharray:4 3}
.booth .dj{fill:none;stroke:var(--mist)}
.booth .mon{fill:var(--plate);stroke:var(--edge)}
.booth .link{stroke:var(--sage)}
.booth text{fill:var(--mist);font-size:12px;text-anchor:middle}
.booth text.cap,.booth text.note{fill:var(--faint);font-size:11px}
.booth figcaption{color:var(--faint);font-size:.88rem;margin-top:.5rem}
.photos{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
.photos a{display:grid;gap:.5rem;text-decoration:none;color:var(--dim);font-size:.92rem;min-height:44px}
.photos img{aspect-ratio:4/5;object-fit:cover;width:100%}
.epk .contacts{grid-template-columns:1fr}
.epk-list .signup{max-width:none}
@media (min-width:980px){.epk-list{grid-column:1 / -1}}

/* ---- 404 ---- */
.nf{min-height:100svh;display:grid;place-content:center;justify-items:center;gap:1.4rem;text-align:center;padding:2rem 16px}
.nf-logo img{width:14rem}
.nf-h{font:400 clamp(1.8rem,4vw,2.5rem)/1.15 var(--serif)}
.nf-list{width:min(100%,30rem);margin-top:2.2rem;text-align:left}
.nf-list .signup .s-head{font-size:1.5rem}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation:none!important;transition:none!important}
}

/* ---- print: one Letter page ---- */
@media print{
  @page{size:letter;margin:0}
  :root{--mist:#0A0D10;--dim:#3a4441;--faint:#55605c;--line:#c9cfcb;--edge:#8c9692;--plate:#e9eeeb;--plate-2:#f2f5f3;--sage:#3f6a5d;--night:#fff}
  html,body{background:#fff;color:#0A0D10}
  body::after{display:none}
  body{font-size:8.4pt;line-height:1.36}
  .screen,.skip,.top,.foot{display:none!important}
  .epk{width:auto;padding:.42in .45in .35in}
  .epk-head{display:block;padding-bottom:.12in;column-span:all}
  .epk-logo img{width:2.5in;filter:invert(1) brightness(.12)}
  .epk-line{margin:.06in 0 .1in;font-size:8.6pt}
  .kv{grid-template-columns:repeat(4,auto);gap:.05in .25in;margin:0}
  .kv dt{font-size:6.6pt}
  .kv dd{font-size:7.4pt}
  .epk-body{display:block;column-count:2;column-gap:.32in;padding-top:.14in}
  .epk-body section{break-inside:avoid;margin-bottom:.13in}
  .epk-body h2{font-size:11pt;margin-bottom:.05in}
  .epk-body section > p{margin-bottom:.05in}
  .figs div{grid-template-columns:.85in minmax(0,1fr);gap:.08in;padding:.03in 0}.figs dt{font-size:9.5pt}.figs dd{font-size:7.2pt}.figs .asof{display:inline;font-size:6.4pt}
  .tracks a{padding:.025in 0;min-height:0}.tracks .t{font-size:8.6pt}.tracks small,.tracks .d{font-size:6.8pt}
  .dates li{padding:.03in 0;grid-template-columns:.12in .75in minmax(0,1fr)}.dates .at{font-size:6.8pt}
  .spec div{grid-template-columns:.8in minmax(0,1fr);gap:.08in;padding:.03in 0}
  .booth{margin-top:.06in}.booth svg{max-height:1.25in}.booth figcaption{font-size:6.4pt;margin-top:.02in}
  .dates time,.spec dt,.kv dt{font-size:7pt}.dates .ev{font-size:8.6pt}.spec dd{font-size:7.4pt}.figs dd{line-height:1.25}
  a{color:inherit;text-decoration:underline;text-decoration-color:#8c9692}
  .booth-list,.jump,.key{display:none!important}.booth svg{display:block!important}
  .booth text{font-size:17px}.booth text.cap,.booth text.note{font-size:15px}
  .figs .asof{font-size:7pt}.figs dd{font-size:7.4pt}.tracks small,.tracks .d,.dates .at{font-size:7.4pt}
  .kv dt{font-size:7pt}.booth figcaption{font-size:7pt}
}
