/* Release cadence: SSR heights, fixed readout and jump slots prevent layout shifts. */
.cadence{--cadence-bars:53;--cadence-height:56px;--cadence-ink:color-mix(in srgb,var(--text) 22%,transparent);--cadence-current:color-mix(in srgb,var(--text) 60%,transparent);margin-top:20px}
.cadence__head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;font-size:13px;line-height:20px}
.cadence__title{font-size:14px;line-height:20px;font-weight:600}
.cadence__sum{color:var(--text-3);font-size:13px;line-height:20px;text-align:right}
.cadence__n{display:inline-block;min-width:4ch;font-variant-numeric:tabular-nums;white-space:nowrap}
.cadence__strip{position:relative;display:flex;align-items:flex-end;gap:2px;height:calc(var(--cadence-height) + 16px);padding:8px 0;touch-action:pan-y;user-select:none;cursor:crosshair}
.cadence__bar{position:relative;flex:0 0 calc((100% - (var(--cadence-bars) - 1) * 2px) / var(--cadence-bars));height:calc(var(--cadence-height) * var(--h) / 12);background:var(--cadence-ink);border-radius:2px;overflow:clip}
.cadence__bar.is-current{background:var(--cadence-current)}
.cadence__app{position:absolute;inset:0;background:var(--accent);scale:1 var(--a,0);transform-origin:bottom}
.cadence__cursor{position:absolute;left:0;bottom:4px;width:calc((100% - (var(--cadence-bars) - 1) * 2px) / var(--cadence-bars));height:calc(var(--cadence-height) + 4px);border-bottom:2px solid var(--accent);opacity:0;pointer-events:none}
.cadence.is-scrubbing .cadence__cursor{opacity:1}
.cadence__axis{display:flex;justify-content:space-between;gap:2px;font-size:12px;line-height:16px;color:var(--text-3);font-variant-numeric:tabular-nums}
.cadence__axis .axis-mobile{display:none}
.cadence__readout{margin-top:8px;min-height:40px;height:40px;font-size:13px;line-height:20px;color:var(--text-2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:clip}
.cadence.is-filtered{--cadence-ink:color-mix(in srgb,var(--text) 12%,transparent);--cadence-current:color-mix(in srgb,var(--text) 30%,transparent)}
:root[data-theme=dark] .cadence{--cadence-ink:color-mix(in srgb,var(--text) 30%,transparent)}
:root[data-theme=dark] .cadence.is-filtered{--cadence-ink:color-mix(in srgb,var(--text) 18%,transparent)}
.cadence__bar.h0{--h:0}
.cadence__bar.h1{--h:1}
.cadence__bar.h2{--h:2}
.cadence__bar.h3{--h:3}
.cadence__bar.h4{--h:4}
.cadence__bar.h5{--h:5}
.cadence__bar.h6{--h:6}
.cadence__bar.h7{--h:7}
.cadence__bar.h8{--h:8}
.cadence__bar.h9{--h:9}
.cadence__bar.h10{--h:10}
.cadence__bar.h11{--h:11}
.cadence__bar.h12{--h:12}

.cadence-jump{height:44px;margin-bottom:4px;grid-area:jump}
.cadence-jump__pill{display:inline-flex;align-items:center;gap:12px;max-width:100%;min-height:44px;padding-left:12px;border-radius:var(--r-pill);background:var(--surface-2);font-size:13px;line-height:20px}
.cadence-jump__pill button{min-height:44px;padding:0 12px;color:var(--accent);font-size:13px;font-weight:600;white-space:nowrap;border-radius:var(--r-pill)}
.live-presence__dot{position:relative}
.live-presence__dot::after{content:"";position:absolute;inset:-2px;border:1px solid var(--live);border-radius:50%;opacity:0}
.live-presence strong{display:inline-block;min-width:2ch;font-variant-numeric:tabular-nums}
@media(max-width:600px){
  .cadence{--cadence-bars:26;--cadence-height:48px;margin-top:16px}
  .cadence__bar:nth-child(-n+27){display:none}
  .cadence__axis .axis-full{display:none}
  .cadence__axis .axis-mobile{display:inline}
  .cadence__readout{height:60px;min-height:60px;-webkit-line-clamp:3}
}
@media(prefers-reduced-motion:no-preference){
  html[data-ys-motion=on] .cadence.is-ready .cadence__app{transition:scale var(--ys-dur-medium) var(--ys-ease-emphasized);transition-delay:calc(var(--group,0) * var(--ys-stagger-tight))}
  html[data-ys-motion=on] .cadence__cursor{transition:translate var(--ys-dur-micro) var(--ys-ease-standard)}
  html[data-ys-motion=on] .live-presence.is-changed .live-presence__dot::after{animation:presence-change var(--ys-dur-long) var(--ys-ease-emphasized)}
  html[data-ys-motion=on] .app-filter-wrap{transition:transform var(--ys-dur-short) var(--ys-ease-move)}
  html[data-ys-motion=on] .sheet-scrim{transition:opacity var(--ys-dur-short) var(--ys-ease-move)}
  html[data-ys-motion=on] .change-toggle .icon{transition:transform var(--ys-dur-short) var(--ys-ease-standard)}
  html[data-ys-motion=on] .release-card::after{transition:opacity var(--ys-dur-long) var(--ys-ease-emphasized)}
  html[data-ys-motion=on] .release-list{transition:opacity var(--ys-dur-short) var(--ys-ease-standard)}
  html[data-ys-motion=on] .spinner{animation:spin var(--ys-demo-step) var(--ys-ease-linear) infinite}
  html[data-ys-motion=on] .ys-toast{transition:opacity var(--ys-dur-short) var(--ys-ease-standard),transform var(--ys-dur-short) var(--ys-ease-standard)}
}
@keyframes presence-change{from{scale:1;opacity:.5}to{scale:2.4;opacity:0}}
html[data-ys-hidden=true] .cadence__app,html[data-ys-hidden=true] .cadence__cursor,.cadence[data-in-view=false] .cadence__app,.cadence[data-in-view=false] .cadence__cursor{transition:none!important}
html[data-ys-hidden=true] .live-presence__dot::after{animation:none!important}
/* The jump pill uses the first month heading's existing slot, including in EN. */
.cadence-jump{height:0;margin:0;position:relative;z-index:2}
.cadence-jump__pill{position:absolute;left:var(--label-x);top:4px}
.layout:has(.cadence-jump__pill:not([hidden])) .month-divider:first-child{visibility:hidden}
.layout:has(.cadence-jump__pill:not([hidden])) .release-list:not(.has-items) .state-card{padding-top:56px}
@media(max-width:600px){
  .page-head{padding-bottom:4px}
  .cadence{margin-top:8px}
  .cadence__readout{height:40px;min-height:40px;-webkit-line-clamp:2}
}
/* Reserve the presence slot before the first successful poll; count rolls keep one line. */
.live-presence,.live-presence strong{height:18px;line-height:18px}
.live-presence strong{overflow:clip}
.cadence__n{height:20px;overflow:clip;vertical-align:bottom}
.cadence__head{align-items:center;min-height:20px}

.page-meta{min-height:38px}
@media(min-width:1024px){.page-meta{min-height:18px}}
@media(prefers-reduced-motion:reduce){
  .public-page *,.public-page *::before,.public-page *::after{transition:none!important;animation:none!important}
}
.ys-web a{min-width:44px}
