/* Bounded desktop reader. Both panes own their scrolling; the page keeps its geometry. */
.changelog-page .site-canvas{height:100dvh;min-height:600px}
.changelog-page .site-canvas>main{display:flex;flex-direction:column;min-height:0}
.changelog-page .release-page{display:flex;flex-direction:column;flex:1;min-height:0}
.changelog-page .page-heading{flex:none}
.changelog-page .release-layout{flex:1;min-height:0;grid-template-rows:minmax(0,1fr);align-items:stretch}
.release-scroll-shell{position:relative;min-width:0;min-height:0}
.changelog-page .release-index,.changelog-page .release-body{height:100%;min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior-y:contain;scrollbar-width:thin;scrollbar-color:#cfd1d8 transparent;scrollbar-gutter:stable;scroll-behavior:auto}
.changelog-page .release-index{display:grid;grid-auto-rows:10%;align-content:start;position:static;top:auto;padding:0 6px 0 4px}
.changelog-page .release-index>button{height:100%;min-height:0;padding:4px 12px 4px 20px}
.changelog-page .release-index strong{font-size:13px;line-height:18px}
.changelog-page .release-index small{font-size:10px;line-height:12px;margin-top:1px}
.release-index-copy{min-width:0}.release-index-title{display:flex;align-items:center;gap:7px;white-space:nowrap}
/* Shared latest badge. Shiny Text references are recorded in .runtime/changelog-header-sources.md. */
.changelog-page .release-label{position:relative;isolation:isolate;overflow:hidden;display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:24px;padding:3px 9px;border:1px solid #c7d9fa;border-radius:6px;background:linear-gradient(135deg,#f1f6ff,#e7efff);color:#285cc4;font-size:11px;font-weight:600;line-height:16px;letter-spacing:.02em;white-space:nowrap;flex:none}
.changelog-page .release-label i{display:block;width:5px;height:5px;flex:none;border-radius:50%;background:currentColor;box-shadow:0 0 0 3px #285cc410}
.changelog-page .release-label::after{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(110deg,transparent 25%,#ffffffb3 50%,transparent 75%);transform:translateX(-150%)}
.release-index>button:hover .release-label::after,.release-index>button:focus-visible .release-label::after,.release-heading:hover .release-label::after{animation:release-label-sheen 700ms ease-out}
@keyframes release-label-sheen{to{transform:translateX(150%)}}
.changelog-page .release-list{display:block;height:100%;min-height:0;padding:0;overflow:visible}
.changelog-page .release-card{display:flex;flex-direction:column;height:100%;min-height:0}
.release-body-shell{flex:1;min-height:0;--release-edge-color:#fff}
.changelog-page .release-body{display:block;transition:none}
.changelog-page .release-inner{overflow:visible;overflow-wrap:anywhere}
.release-heading{position:relative;display:flex;flex:none;align-items:center;justify-content:space-between;gap:18px;min-height:80px;padding:24px 26px;background:#fff;border-bottom:0}
.release-heading::after{content:'';position:absolute;left:26px;right:26px;bottom:0;height:1px;background:linear-gradient(90deg,#e5e7ec 70%,#e5e7ec00);pointer-events:none}
.release-heading-primary{display:flex;align-items:center;gap:12px;min-width:0}
.release-heading .release-version{font-family:inherit;font-size:24px;font-weight:600;line-height:32px;letter-spacing:-.035em;white-space:nowrap;color:#23262d;font-variant-numeric:tabular-nums}
.release-heading time{display:block;margin-left:auto;padding:0;border:0;border-radius:0;background:transparent;font-size:12px;font-weight:400;line-height:20px;letter-spacing:.025em;color:#687180;font-variant-numeric:tabular-nums;white-space:nowrap;flex:none}
.release-scroll-shell::before,.release-scroll-shell::after{content:'';position:absolute;left:0;right:12px;height:36px;z-index:3;pointer-events:none;opacity:0;backdrop-filter:blur(3px);transition:opacity 160ms ease}
.release-scroll-shell::before{top:0;background:linear-gradient(var(--release-edge-color,var(--page-bg)),transparent);mask-image:linear-gradient(#000,transparent)}
.release-scroll-shell::after{bottom:0;background:linear-gradient(to top,var(--release-edge-color,var(--page-bg)),transparent);mask-image:linear-gradient(to top,#000,transparent)}
.release-scroll-shell[data-edge-start="true"]::before,.release-scroll-shell[data-edge-end="true"]::after{opacity:1}
@media(max-height:800px){.release-heading{min-height:72px;padding:20px 22px}.release-heading::after{left:22px;right:22px}}
@media(max-height:650px){.changelog-page .release-index>button{padding-block:2px}.changelog-page .release-index strong{font-size:12px;line-height:16px}.changelog-page .release-index small{font-size:9px;line-height:11px}.release-heading{padding:16px 20px}}
@media(max-height:650px){.changelog-page .release-label{min-height:20px;padding:2px 7px;gap:5px;font-size:10px;line-height:14px}.changelog-page .release-label i{width:4px;height:4px;box-shadow:0 0 0 2px #285cc410}}
@media(max-height:650px){.release-heading{min-height:64px;gap:12px}.release-heading::after{left:20px;right:20px}.release-heading .release-version{font-size:22px}.release-heading-primary{gap:10px}.release-heading time{font-size:11px}}
@media(prefers-reduced-motion:reduce){.release-scroll-shell::before,.release-scroll-shell::after{transition:none}.changelog-page .release-label::after{animation:none!important}}
