/* 2bias sub-pages: the loop page (and the discipline-page template, parked). The chrome behind, steel plates on
   it, the carpet as itself, the board as itself, and the headings in the board's own colours. Load css/steel.css first. */
*,*::before,*::after{box-sizing:border-box;border-radius:0 !important}
[hidden]{display:none !important}   /* hidden means hidden, even where a rule below sets display */
:root{--display:"Big Shoulders Display","Arial Narrow",sans-serif;--body:"Instrument Sans","Helvetica Neue",Arial,sans-serif;--pad:clamp(16px,3.2vw,44px)}
html{background:#8d97a1}
body{margin:0;font:500 16px/1.55 var(--body);-webkit-font-smoothing:antialiased;overflow-x:hidden}
h1,h2,p{margin:0}

/* the top: where you are, and the way back */
.top{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px var(--pad);
  font:700 10px/1.3 var(--body);letter-spacing:var(--track-label);text-transform:uppercase;color:var(--ink)}
/* small labels on small engraved steel nameplates, fixed onto the chrome */
.top > span,.foot > span,.block__h small{padding:.6em calc(.9em - var(--track-label)) .55em .9em;background:var(--steel);background-size:var(--steel-size);
  box-shadow:var(--steel-bevel),var(--steel-drop);text-shadow:var(--steel-engrave)}
.back{display:inline-flex;align-items:center;gap:.5em;min-height:clamp(54px,4.4vw,66px);padding:0 clamp(18px,1.8vw,30px);text-decoration:none;
  font:800 clamp(18px,1.55vw,26px)/1 var(--display);letter-spacing:.06em;text-transform:uppercase;text-wrap:balance;
  transition:transform var(--t-metal) var(--ease-metal),filter var(--t-metal) var(--ease-metal),box-shadow var(--t-metal) var(--ease-metal)}
.back:hover,.back:focus-visible{transform:translateY(-4px) scale(1.05);filter:brightness(1.14) contrast(1.05);box-shadow:var(--steel-bevel),var(--steel-lift)}
.back:focus-visible{box-shadow:var(--steel-bevel),var(--ring),var(--steel-lift)}
.back:active{transform:scale(.97);transition-duration:var(--t-press)}
.back b{font:900 1.3em/1 var(--display);letter-spacing:0}

/* the grid everything sits on */
.page{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:clamp(12px,1.6vw,22px);padding:0 var(--pad) clamp(40px,6vw,90px)}
.page > *{grid-column:1 / -1}

/* the band: the carpet, the board close on its square, and the name on a steel plate */
.band{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);align-items:center;gap:clamp(16px,3vw,48px);
  padding:clamp(18px,3vw,40px);background:url(../img/rug-4.jpg) 50% 50% / cover}   /* paths in here start from css/ */
.band__board{position:relative;background:url(../img/01.jpg) no-repeat;box-shadow:var(--steel-bevel),var(--steel-drop)}
.band__square{position:absolute;box-shadow:inset 0 0 0 3px var(--ink),inset 0 0 0 6px rgba(255,255,255,.7),inset 0 0 44px rgba(255,255,255,.35)}
.band__plate{padding:clamp(18px,2.6vw,36px)}
.band__kicker{margin-bottom:clamp(10px,1.4vw,18px);font:800 11px/1 var(--body);letter-spacing:var(--track-label);text-transform:uppercase;color:var(--ink);text-shadow:none}
.band__name{display:grid;gap:.06em;font:900 clamp(56px,9vw,160px)/.84 var(--display);text-transform:uppercase;letter-spacing:-.01em;
  color:var(--board-green);-webkit-text-stroke:max(2px,.045em) var(--board-carved);paint-order:stroke fill;overflow-wrap:anywhere;   /* lettered like every title */
  text-shadow:1.6px 0 0 var(--board-cream),-1.6px 0 0 var(--board-cream),0 1.6px 0 var(--board-cream),0 -1.6px 0 var(--board-cream)}
.band__name--stack{font-size:clamp(44px,6.4vw,112px)}
.band__line{display:block}
/* one square: a 3x3 window of the board around it */
.band__board--one{aspect-ratio:.3432 / .3549;background-size:291.4% 281.8%;
  --wx:clamp(0,.0433 + (var(--c) - 1) * .1144,.6568);--wy:clamp(0,.0378 + (var(--r) - 1) * .1183,.6451);
  background-position:calc(var(--wx) / .6568 * 100%) calc(var(--wy) / .6451 * 100%)}
.band__board--one .band__square{width:33.34%;height:33.34%;
  left:calc((.0433 + var(--c) * .1144 - var(--wx)) / .3432 * 100%);top:calc((.0378 + var(--r) * .1183 - var(--wy)) / .3549 * 100%)}
/* the loop: files c to f, ranks 8 to 5, with d8-e6 marked. On the board's measured edges (px of img/01.jpg):
   the window is x 541-1457, y 83-1018; d8-e6 is x 772-1232, y 83-784 */
.band__board--loop{aspect-ratio:916 / 935;background-size:218.34% 213.9%;background-position:49.91% 7.79%}
.band__board--loop .band__square{left:25.22%;top:0;width:50.22%;height:74.97%}

/* blocks where media goes: placeholders until the real thing exists */
.block{display:grid;grid-template-columns:minmax(0,1fr);align-content:start;gap:12px}   /* one column that never outgrows the page, so a long title wraps */
.page > .block{margin-top:clamp(6px,1.2vw,16px)}   /* the big headings need air above them */
/* a line of his, on its own steel plate */
.lede{justify-self:start;max-width:62ch;padding:.85em 1.1em;font:600 clamp(15px,1.2vw,19px)/1.5 var(--body)}
.block__h small{align-self:center;font:800 11px/1 var(--body);letter-spacing:var(--track-label);color:var(--ink);-webkit-text-stroke:0}
.loops{list-style:none;margin:0;padding:0;display:grid;gap:10px}
/* a loop example: the play plate, its name and note, its outline to scrub, the time (js/players.js adds the parts) */
.loop{display:grid;grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"play name time" "play note note" "play wave wave";
  align-items:center;column-gap:14px;row-gap:5px;padding:12px 16px 12px 12px}
.loop > .play{grid-area:play;align-self:stretch;height:auto}
.loop__name{grid-area:name;font:900 clamp(24px,2.4vw,38px)/.9 var(--display);text-transform:uppercase}
.loop__note{grid-area:note;font:700 11px/1.35 var(--body);letter-spacing:.12em;text-transform:uppercase}
.loop > .wave{grid-area:wave}
.loop > .time{grid-area:time}
.slot{position:relative;display:grid;place-items:center;background:var(--steel);background-size:var(--steel-size);
  box-shadow:inset 4px 4px 12px rgba(0,0,0,.55),inset -1px -1px 0 rgba(255,255,255,.45)}
.slot span{display:grid;gap:10px;justify-items:center;text-align:center}
.slot b{font:900 clamp(26px,3vw,48px)/.9 var(--display);text-transform:uppercase;color:var(--ink);text-shadow:var(--steel-engrave)}
.slot i{padding-left:var(--track-label);font:800 10px/1 var(--body);font-style:normal;letter-spacing:var(--track-label);text-transform:uppercase;color:var(--ink)}   /* centred: the left pad balances the tracking after the last letter */
.slot--video{aspect-ratio:16 / 9}
.slot--image{aspect-ratio:4 / 5}
.slot--wide{min-height:clamp(120px,14vw,180px)}

/* the Essential Foley Producer Pack */
.cats{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.cat{display:grid;grid-template-columns:minmax(0,1fr) auto;align-content:space-between;gap:18px 10px;min-height:clamp(120px,12vw,170px);padding:16px 18px}
.cat > b,.cat > i,.cat > .time{grid-column:1 / -1}
/* a category with a preview sound: its outline and the play plate share the bottom row, so the name keeps the whole width */
.cat > .wave{order:2;grid-column:1;align-self:center;height:26px}
.cat > .play{order:3;grid-column:2;width:42px;height:38px}
.cat > .time{order:4;justify-self:end}
/* the buy panel: the price, the format, the button — once there's a price */
.deal{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px 20px;padding:clamp(16px,2vw,26px)}
.deal__price{font:900 clamp(34px,4vw,64px)/.9 var(--display);text-transform:uppercase}
.deal__format{grid-column:1;font:700 11px/1.4 var(--body);letter-spacing:.12em;text-transform:uppercase}
/* the buy button: a black plate, like the Collab download */
.deal__buy{grid-column:2;grid-row:1 / span 2;display:inline-flex;align-items:center;justify-content:center;min-height:clamp(58px,5vw,78px);padding:0 clamp(22px,2.4vw,40px);
  font:900 clamp(22px,2.1vw,34px)/1 var(--display);letter-spacing:.06em;text-transform:uppercase;text-decoration:none;color:var(--white);background:var(--ink);
  box-shadow:inset 1px 1px 0 rgba(255,255,255,.22),var(--steel-drop);transition:transform var(--t-metal) var(--ease-metal),box-shadow var(--t-metal) var(--ease-metal)}
.deal__buy:hover,.deal__buy:focus-visible{transform:translateY(-4px) scale(1.04);box-shadow:inset 1px 1px 0 rgba(255,255,255,.25),var(--steel-lift)}
.deal__buy:focus-visible{box-shadow:inset 1px 1px 0 rgba(255,255,255,.25),var(--ring),var(--steel-lift)}
.deal__buy:active{transform:scale(.97);transition-duration:var(--t-press)}
@media (max-width:599.98px){.deal{grid-template-columns:1fr}.deal__buy{grid-column:1;grid-row:auto;justify-self:start}}
.cat b{font:900 clamp(26px,2.6vw,44px)/.9 var(--display);text-transform:uppercase}
.cat i{font:800 10px/1.2 var(--body);font-style:normal;letter-spacing:var(--track-label);text-transform:uppercase;color:var(--ink);text-shadow:none;text-wrap:balance}
.cat--fav{grid-column:1 / -1}
.cat--fav b{font-size:clamp(40px,5vw,84px)}
@media (max-width:899.98px){.cats > :nth-child(5){grid-column:1 / -1}}   /* two a row: the fifth would sit alone beside a hole, so it takes the row */

.foot{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:18px var(--pad) 30px;
  font:700 10px/1 var(--body);letter-spacing:var(--track-label);text-transform:uppercase;color:var(--ink)}
.foot > span{white-space:nowrap}

@media (min-width:900px){
  .page > .loops-block{grid-column:1 / 8}
  .page > .image-block{grid-column:8 / 13;grid-row:span 2}
  .page > .video-block{grid-column:1 / 8}
  .cats{grid-template-columns:repeat(5,minmax(0,1fr))}
}
@media (max-width:699.98px){
  .band{grid-template-columns:1fr}
  .band__board{max-width:320px}
}
/* small phones: two pack squares a row, and CONVERSATION still fits its square */
@media (max-width:479.98px){
  .cat{padding:14px 12px}
  .cat b{font-size:min(26px,6.6vw)}
}
