
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url(/assets/ruby-doc-redesign-v1/dm-sans-latin.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: 'Manrope';
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url(/assets/ruby-doc-redesign-v1/manrope-latin.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{--paper:#fbfaf8;--white:#fff;--ink:#242326;--muted:#69676e;--line:#e5e2df;--ruby:#b6273c;--ruby-dark:#942133;--blush:#f5e9e8;--mono:ui-monospace,SFMono-Regular,Consolas,monospace;--sans:'DM Sans',sans-serif;--heading:'Manrope',sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:30px}body{margin:0;background:var(--paper);font-family:var(--sans);font-size:15px;line-height:1.6;color:var(--ink);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button,input{font:inherit}button,a,input,summary{ -webkit-tap-highlight-color:transparent}button{cursor:pointer}a,button,input,summary{outline-offset:5px}a:focus-visible,button:focus-visible,input:focus-visible,summary:focus-visible{outline:3px solid var(--ruby)}button{color:inherit}svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}.container{max-width:1160px;margin:auto;padding-inline:32px}.skip{position:fixed;left:16px;top:-100px;background:var(--ruby);color:#fff;z-index:20;padding:10px 20px}.skip:focus{top:12px}.utility{border-bottom:1px solid var(--line);font-size:11px;letter-spacing:1.5px;color:#777378}.utility .container{height:35px;display:flex;justify-content:space-between;align-items:center}.utility b{font-weight:550;display:flex;align-items:center;gap:8px}.dot{height:7px;width:7px;display:inline-block;background:var(--ruby);transform:rotate(45deg)}.utility span{font-size:11px;letter-spacing:0}.header{border-bottom:1px solid var(--line);background:var(--paper)}.header-inner{display:flex;align-items:center;justify-content:space-between;min-height:91px;gap:35px}.brand img{width:236px;height:auto;display:block}.nav{display:flex;align-items:center;gap:29px;font-size:13px;font-weight:550}.nav a{padding:34px 0;position:relative;white-space:nowrap;color:#625e65}.nav a:hover,.nav a[aria-current=page]{color:var(--ruby)}.nav a[aria-current=page]:after{position:absolute;content:'';height:2px;bottom:0;left:0;right:0;background:var(--ruby)}.nav .learn-nav{display:flex;align-items:center;gap:5px}.nav svg{width:13px;height:13px}.menu-button{display:none;border:1px solid var(--line);background:transparent;padding:8px;line-height:0;border-radius:6px}.hero{display:grid;grid-template-columns:1.05fr 1fr;gap:65px;align-items:center;padding-top:67px;padding-bottom:49px}.eyebrow{display:flex;align-items:center;gap:9px;color:var(--ruby);font-size:10px;letter-spacing:1.8px;font-weight:700;text-transform:uppercase;margin:0 0 17px}.eyebrow .line{width:24px;height:1px;background:var(--ruby)}h1,h2,h3,p{margin:0}h1{font-family:var(--heading);font-size:54px;line-height:1.14;letter-spacing:-2.5px;font-weight:750}h1 em{font-style:normal;color:var(--ruby)}.hero-copy>p:not(.eyebrow){font-size:15px;line-height:1.8;color:var(--muted);max-width:390px;margin-top:22px}.hero-buttons{display:flex;gap:12px;align-items:center;margin-top:28px}.button{border:1px solid var(--line);display:inline-flex;align-items:center;justify-content:center;gap:18px;padding:11px 17px;border-radius:6px;font-size:12px;font-weight:650;background:#fff;line-height:1.5;min-height:43px;transition:background .15s,transform .15s}.button:hover{background:#f0ece9;transform:translateY(-1px)}.button svg{width:16px;height:16px}.button.primary{background:var(--ruby);border-color:var(--ruby);color:white;box-shadow:0 3px 5px #82243412}.button.primary:hover{background:var(--ruby-dark)}.hero-note{display:flex;gap:7px;align-items:center;color:#827a80;font-size:10px;margin-top:18px}.hero-note svg{width:12px;height:12px}.code-card{border:1px solid #353138;background:#252228;color:#e7dde2;border-radius:10px;box-shadow:0 14px 40px #37202b14;overflow:hidden;position:relative;transform:rotate(-1deg)}.code-head{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #433b45;padding:13px 17px;font-family:var(--mono);font-size:10px;color:#b2a9b3}.lights{display:flex;gap:5px}.lights i{width:7px;height:7px;border-radius:50%;background:#66575f}.lights i:first-child{background:#c2737c}.lights i:nth-child(2){background:#c5a16a}.lights i:last-child{background:#92a185}.code-tabs{display:flex;gap:19px;padding:0 21px;border-bottom:1px solid #3b343e;font-family:var(--mono);font-size:10px}.code-tabs button{color:#b9b0bb;border:0;border-bottom:2px solid transparent;background:transparent;padding:13px 0 10px;font-family:inherit;font-size:inherit}.code-tabs button[aria-selected=true]{color:#faf2f5;border-bottom-color:#df6b7c}.code-sample{min-height:211px;padding:23px 22px;font-family:var(--mono);font-size:12px;line-height:2;overflow:auto;white-space:pre;margin:0}.code-sample .comment{color:#a298a7}.code-sample .string{color:#dfbf93}.code-sample .method{color:#d996a7}.code-sample .symbol{color:#b7b5d8}.code-sample .num{color:#b7c89a}.code-result{display:flex;align-items:center;gap:12px;border-top:1px solid #3b343e;padding:12px 21px;background:#211e24;font-family:var(--mono);font-size:10px}.code-result span{color:#a6bb9b;font-size:11px}.code-result a{margin-left:auto;color:#c6bbc7;display:flex;gap:5px;align-items:center}.code-result svg{width:11px;height:11px}.search-wrap{position:relative;margin:2px 0 38px;z-index:4}.search-form{background:#fff;border:1px solid #dcd6d2;border-radius:8px;display:flex;align-items:center;box-shadow:0 3px 12px #35222205;min-height:66px;gap:13px;padding:0 20px}.search-form>svg{color:var(--ruby);width:21px;height:21px}.search-form input{flex:1;min-width:0;border:0;background:transparent;font-size:14px;padding:17px 0;color:var(--ink);outline:none}.search-form:focus-within{border-color:var(--ruby);box-shadow:0 0 0 2px #b6273c15}.search-form input::placeholder{color:#88818a}.search-version{font-family:var(--mono);font-size:10px;padding-left:14px;border-left:1px solid var(--line);color:#6f6771;white-space:nowrap}kbd{font:11px var(--mono);background:var(--paper);border:1px solid var(--line);border-radius:4px;padding:2px 7px;color:#8b838d}.search-results{position:absolute;top:74px;left:0;right:0;background:#fff;border:1px solid var(--line);box-shadow:0 14px 35px #32233316;border-radius:8px;max-height:400px;overflow:auto;padding:8px}.search-results[hidden]{display:none}.search-result{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:11px 14px;border-radius:5px}.search-result:hover,.search-result:focus{background:var(--blush)}.search-result b{font-family:var(--mono);font-size:12px}.search-result small{color:var(--muted);font-size:11px}.result-count{font-size:11px;color:var(--muted);padding:8px 14px}.section-head{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:17px}.section-head h2{font-family:var(--heading);font-size:19px;font-weight:750;letter-spacing:-.6px}.subtle-link{font-size:11px;color:var(--muted);display:inline-flex;gap:6px;align-items:center}.subtle-link:hover{color:var(--ruby)}.subtle-link svg{width:13px;height:13px}.core-links{display:grid;grid-template-columns:repeat(6,1fr);border:1px solid var(--line);border-radius:7px;overflow:hidden;background:#fff}.core-link{border-right:1px solid var(--line);padding:19px 17px;transition:background .15s}.core-link:last-child{border:0}.core-link:hover{background:#f6eeec}.core-link .core-label{display:flex;align-items:center;justify-content:space-between;font-family:var(--mono);font-size:12px;font-weight:600}.core-link svg{width:13px;height:13px;color:#b6adb5}.core-link small{display:block;color:#8a8089;font-size:10px;margin-top:7px}.overview{display:grid;grid-template-columns:1.62fr 1fr;gap:38px;margin-top:48px}.section-description{font-size:12px;color:var(--muted);margin-top:-10px;margin-bottom:22px}.release-list{border-top:1px solid var(--line)}.release-row{display:flex;gap:13px;align-items:center;border-bottom:1px solid var(--line);padding:16px 12px}.release-row:hover{background:#f3efec}.release-row.featured{background:#f3e7e5;border:1px solid #e4caca;border-radius:7px;margin-bottom:6px;padding:17px 13px}.release-name{font-family:var(--mono);font-size:13px;font-weight:600;min-width:95px}.release-note{font-size:11px;color:#827680}.release-row .tag{font-size:8px;letter-spacing:.8px;font-weight:700;color:var(--ruby);background:#fff7f5;padding:3px 7px;border:1px solid #e8c9c6;border-radius:3px}.release-row>svg{width:16px;height:16px;margin-left:auto;color:#9e8d96}.release-row.featured>svg{color:var(--ruby)}.all-link{display:flex;justify-content:space-between;padding:14px 12px;font-size:11px;font-weight:550;color:var(--ruby)}.all-link svg{height:14px;width:14px}.learn-panel{border:1px solid var(--line);border-radius:8px;padding:25px;background:#f3f1ee;position:relative;overflow:hidden}.learn-panel .eyebrow{font-size:9px;margin-bottom:9px}.learn-panel h2{font-size:24px;font-family:var(--heading);font-weight:750;line-height:1.3;letter-spacing:-.8px;max-width:230px}.learn-panel>p{font-size:12px;color:var(--muted);margin:11px 0 15px;max-width:260px}.article-link{padding:14px 0;border-top:1px solid #dfdad7;display:flex;align-items:center;justify-content:space-between;gap:18px;font-size:12px;font-weight:550;line-height:1.6}.article-link svg{width:15px;height:15px;color:var(--ruby)}.article-link:hover{color:var(--ruby)}.learn-bottom{color:var(--ruby);font-size:11px;display:inline-flex;gap:8px;align-items:center;margin-top:17px;font-weight:600}.learn-bottom svg{width:14px;height:14px}.versions-section{padding-top:44px;margin-top:39px;border-top:1px solid var(--line);padding-bottom:45px}.version-details>summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:18px}.version-details>summary::-webkit-details-marker{display:none}.version-details>summary h2{font-family:var(--heading);font-size:19px;font-weight:750;letter-spacing:-.6px}.version-details>summary p{font-size:12px;color:var(--muted);margin-top:4px}.version-details>summary .expand{height:32px;width:32px;display:flex;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:50%;background:white}.version-details[open]>summary .expand svg{transform:rotate(180deg)}.version-details .version-content{padding-top:25px}.filter-row{display:flex;align-items:center;gap:12px;margin-bottom:20px}.filter-row input{width:100%;border:1px solid var(--line);background:#fff;padding:11px 13px;border-radius:5px;font-size:12px;min-width:0}.filter-count{color:var(--muted);font-size:10px;white-space:nowrap}.older-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:0 30px}.older-entry{padding:12px 0;border-bottom:1px solid var(--line);font-size:11px;line-height:1.8}.older-entry a{color:var(--ruby)}.older-entry a:hover{text-decoration:underline}.empty-filter{font-size:13px;color:var(--muted);padding:20px 0}.empty-filter[hidden]{display:none}.project-note{border:1px solid var(--line);border-radius:7px;display:flex;align-items:center;justify-content:space-between;gap:30px;padding:22px 27px;margin-bottom:49px;background:#fff}.project-note h2{font-family:var(--heading);font-size:15px;font-weight:750;margin-bottom:5px}.project-note p{font-size:11px;color:var(--muted);max-width:670px}.project-note>svg{color:var(--ruby);height:28px;width:28px}.footer{border-top:1px solid var(--line)}.footer-main{display:flex;align-items:center;justify-content:space-between;gap:30px;padding-top:28px;padding-bottom:26px}.footer-brand{font-family:var(--heading);font-weight:800;font-size:16px;letter-spacing:-.5px;display:flex;align-items:center;gap:8px}.footer-brand .dot{width:9px;height:9px}.footer-links{display:flex;align-items:center;gap:25px;font-size:11px;color:var(--muted)}.footer-links a:hover{color:var(--ruby)}.footer-bottom{padding-top:14px;padding-bottom:22px;border-top:1px solid var(--line);font-size:10px;color:#878087;display:flex;justify-content:space-between;gap:25px}.footer-bottom i{font-style:normal;color:var(--ruby)}.download-hero{padding:53px 0 35px;max-width:650px}.download-hero h1{font-size:43px}.download-hero>p:not(.eyebrow){font-size:14px;color:var(--muted);max-width:550px;margin-top:17px}.download-banner{padding:25px 28px;border:1px solid #e4caca;border-radius:8px;background:#f3e7e5;display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:35px}.download-banner h2{font-family:var(--heading);font-size:20px;letter-spacing:-.5px;font-weight:750}.download-banner p{font-size:12px;color:var(--muted);margin-top:5px}.download-banner .eyebrow{font-size:9px;margin-bottom:7px}.download-info{display:flex;gap:10px;align-items:flex-start;padding:16px 0 28px;font-size:12px;color:var(--muted)}.download-info svg{width:16px;height:16px;margin-top:2px;color:var(--ruby)}.download-table{width:100%;border-collapse:collapse;font-size:12px;background:#fff;border:1px solid var(--line);border-radius:8px}.download-table th{font-weight:500;color:var(--muted);background:#f3f1ee;text-align:left;padding:12px 17px;font-size:10px;letter-spacing:.3px}.download-table td{padding:13px 17px;border-top:1px solid var(--line)}.download-table td:first-child{font-family:var(--mono);font-weight:600;font-size:12px}.download-table td:last-child,.download-table th:last-child{text-align:right}.download-table a{color:var(--ruby);display:inline-flex;align-items:center;gap:8px;font-size:11px}.download-table a:hover{text-decoration:underline}.download-table a svg{width:14px;height:14px}.download-table .format{font-family:var(--mono);color:var(--muted);font-size:10px}.supplements{margin:40px 0;padding:24px 0;border-top:1px solid var(--line)}.supplement-links{margin-top:25px;display:grid;grid-template-columns:repeat(2,1fr);gap:10px 35px;font-size:12px}.supplement-links a{border-bottom:1px solid var(--line);padding:9px 0;color:var(--ruby)}.supplement-links small{display:block;color:var(--muted);font-size:10px}.breadcrumb{display:flex;gap:8px;color:var(--muted);font-size:11px;padding-top:25px}.breadcrumb a{color:var(--ruby)}[hidden]{display:none!important}
@media(min-width:1400px){.container{max-width:1230px}.hero{gap:100px}}
@media(max-width:1000px){.hero{gap:35px}h1{font-size:45px}.nav{gap:20px}.overview{gap:25px}.core-link{padding:17px 11px}.core-link small{font-size:9px}.release-note{display:none}.hero-buttons{gap:8px}.button{padding:11px 13px;font-size:11px}}
@media(max-width:760px){.container{padding-inline:23px}.utility span{display:none}.header-inner{min-height:79px;gap:20px}.brand img{width:218px}.menu-button{display:block}.header-inner{position:relative}.nav{display:none;position:absolute;top:79px;left:0;right:0;z-index:15;background:var(--paper);border-bottom:1px solid var(--line);padding:10px 23px;box-shadow:0 12px 15px #22222209}.nav.open{display:flex;flex-direction:column;align-items:stretch;gap:0}.nav a{padding:12px 0}.nav a[aria-current=page]:after{display:none}.hero{grid-template-columns:1fr;padding-top:39px;padding-bottom:34px;gap:35px}.hero-copy>p:not(.eyebrow){max-width:460px;font-size:14px;margin-top:18px}.hero h1{font-size:47px;letter-spacing:-2px}.hero-buttons{margin-top:23px}.button{font-size:12px;padding:11px 15px}.code-card{transform:none;max-width:560px;width:100%}.code-sample{min-height:190px;padding:19px 21px}.code-head{padding:11px 17px}.search-wrap{margin-bottom:31px}.search-form{min-height:59px;padding:0 14px;gap:9px}.search-form input{font-size:12px}.search-version{font-size:9px}kbd{display:none}.core-links{grid-template-columns:repeat(3,1fr)}.core-link{padding:16px}.core-link:nth-child(3){border-right:0}.core-link:nth-child(-n+3){border-bottom:1px solid var(--line)}.core-link small{font-size:10px}.overview{grid-template-columns:1fr;margin-top:34px;gap:34px}.release-note{display:block}.learn-panel h2{max-width:none}.learn-panel>p{max-width:none}.versions-section{padding-top:29px;margin-top:31px;padding-bottom:32px}.older-grid{grid-template-columns:repeat(2,1fr);gap:0 22px}.project-note{padding:21px;margin-bottom:31px}.project-note>svg{display:none}.footer-main{flex-direction:column;align-items:flex-start;gap:20px}.footer-links{gap:18px;flex-wrap:wrap}.footer-bottom{flex-direction:column;gap:6px}.download-hero{padding-top:35px}.download-hero h1{font-size:38px;letter-spacing:-1.5px}.download-banner{flex-direction:column;align-items:flex-start;padding:23px;gap:18px}.download-table th,.download-table td{padding:12px 10px}.download-table td:nth-child(3),.download-table th:nth-child(3){display:none}.download-table td:first-child{font-size:11px}.download-table td:nth-child(2){font-size:10px}.download-table a{font-size:10px;gap:4px}.supplement-links{grid-template-columns:1fr}.section-head h2{font-size:18px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}

.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

@media(max-width:760px){.hero-buttons .button{white-space:nowrap;font-size:11px;padding:11px 12px;gap:10px}.code-sample{font-size:11px}}
