.astro-route-announcer{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;top:0;left:0;overflow:hidden}:root{--ap-paper:#fffcf8;--ap-paper-alt:#fff;--ap-black:#0f0e12;--ap-grey-100:#e5e5e5;--ap-grey-200:#ccc;--ap-grey-500:#a1a7af;--ap-grey-700:#7f7f7f;--ap-grey-900:#4d4d4d;--ap-navy:#152746;--ap-tan:#b38e5e;--ap-graphite:#8c9599;--ap-orange:#f05023;--ds-bg:var(--ap-paper);--ds-fg:var(--ap-black);--ds-fg-dim:var(--ap-grey-900);--ds-fg-mute:var(--ap-grey-700);--ds-border:var(--ap-grey-200);--ds-font-sans:"Roboto", "Helvetica Neue", Arial, sans-serif;--ds-font-mono:"DM Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;--ds-font-jp:"Hiragino Sans", "Hiragino Kaku Gothic Pro", "Yu Gothic", "Meiryo", sans-serif;--ds-font-display:var(--ds-font-sans);--ds-font-text:var(--ds-font-sans);--fw-thin:100;--fw-light:300;--fw-regular:400;--fw-medium:500;--shadow-hairline:0 0 0 1px var(--ap-grey-200)}*,:before,:after{box-sizing:border-box}html,body{width:100%;min-height:100%;margin:0;padding:0}body{font-family:var(--ds-font-sans);font-weight:var(--fw-regular);color:var(--ds-fg);background:var(--ds-bg);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;font-size:16px;line-height:1.5}a{color:inherit}img{max-width:100%;height:auto}.gn{background:var(--ds-bg,#fffcf8);z-index:100;border-bottom:none;padding:0 48px;position:sticky;top:0}.gn-container{grid-template-columns:1fr auto 1fr;align-items:center;column-gap:40px;max-width:1200px;margin:0 auto;padding:16px 0;display:grid}.gn-wm{letter-spacing:-.01em;color:var(--ds-fg,#1a2134);justify-self:start;font-family:Roboto,sans-serif;font-size:20px;font-weight:900;text-decoration:none}.gn nav{justify-self:center;align-items:baseline;gap:28px;display:flex}.gn-link{letter-spacing:.06em;text-transform:uppercase;color:var(--ds-fg,#1a2134);opacity:.55;font-family:DM Mono,monospace;font-size:11px;text-decoration:none;transition:opacity .15s}.gn-link:hover{opacity:1}.gn-drop{align-items:baseline;display:flex;position:relative}.gn-drop .gn-panel{opacity:0;visibility:hidden;pointer-events:none;padding-top:8px;transition:opacity .2s,visibility .2s;position:absolute;top:100%;left:50%;transform:translate(-50%)}.gn-drop:hover .gn-panel{opacity:1;visibility:visible;pointer-events:auto}.gn-drop:hover .gn-link{opacity:1}.gn-panel-item{white-space:nowrap;letter-spacing:.06em;text-transform:uppercase;color:var(--ds-fg,#1a2134);opacity:.55;padding:7px 16px;font-family:DM Mono,monospace;font-size:11px;font-weight:400;line-height:1.4;text-decoration:none;transition:opacity .15s,background .12s;display:block}.gn-panel-item:hover{opacity:1;background:#00000006}.gn-panel--platform,.gn-panel--solutions,.gn-panel--resources{background:var(--ds-bg,#fffcf8);border:1px solid var(--ds-border,#e5e7eb);border-radius:4px;padding:6px 0;box-shadow:0 4px 24px #0000000f}.gn-panel--platform{width:220px}.gn-panel--solutions,.gn-panel--resources{width:180px}.gn-right{justify-self:end;align-items:center;gap:24px;display:flex}.gn-btn{letter-spacing:.06em;text-transform:uppercase;height:36px;color:var(--ds-fg,#1a2134);border:1px solid var(--ds-border,#e5e7eb);background:0 0;justify-content:center;align-items:center;padding:0 16px;font-family:DM Mono,monospace;font-size:10px;text-decoration:none;transition:border-color .15s;display:inline-flex}.gn-btn:hover{border-color:var(--ds-fg,#1a2134)}.gn-btn--filled{background:var(--ds-fg,#1a2134);color:var(--ds-bg,#fffcf8);border-color:var(--ds-fg,#1a2134)}.gn-btn--filled:hover{opacity:.85}.gn-hamburger{cursor:pointer;background:0 0;border:none;flex-direction:column;justify-self:end;gap:5px;padding:6px;display:none}.gn-hamburger-line{background:var(--ds-fg,#1a2134);width:22px;height:1.5px;transition:transform .2s,opacity .2s;display:block}.gn-mobile-overlay{z-index:200;background:var(--ds-bg,#fffcf8);opacity:0;visibility:hidden;flex-direction:column;transition:opacity .25s,visibility .25s;display:none;position:fixed;inset:0}.gn-mobile-overlay--open{opacity:1;visibility:visible}.gn-mobile-header{border-bottom:1px solid var(--ds-border,#e5e7eb);justify-content:space-between;align-items:center;padding:16px 24px;display:flex}.gn-mobile-close{cursor:pointer;background:0 0;border:none;width:32px;height:32px;position:relative}.gn-mobile-close span{background:var(--ds-fg,#1a2134);width:20px;height:1.5px;position:absolute;top:50%;left:50%}.gn-mobile-close span:first-child{transform:translate(-50%,-50%)rotate(45deg)}.gn-mobile-close span:last-child{transform:translate(-50%,-50%)rotate(-45deg)}.gn-mobile-nav{flex-direction:column;flex:1;gap:0;padding:24px;display:flex;overflow-y:auto}.gn-mobile-group{border-bottom:1px solid var(--ds-border,#e5e7eb)}.gn-mobile-toggle{cursor:pointer;width:100%;font-family:var(--ds-font-mono,"DM Mono", monospace);letter-spacing:.06em;text-transform:uppercase;color:var(--ds-fg,#1a2134);background:0 0;border:none;justify-content:space-between;align-items:center;padding:16px 0;font-size:12px;display:flex}.gn-mobile-toggle:after{content:"+";font-size:16px;font-weight:300;transition:transform .2s}.gn-mobile-toggle[aria-expanded=true]:after{content:"−"}.gn-mobile-sub{flex-direction:column;gap:0;padding:0 0 12px 16px;display:none}.gn-mobile-toggle[aria-expanded=true]+.gn-mobile-sub{display:flex}.gn-mobile-link{font-family:var(--ds-font-sans,"Roboto", sans-serif);color:var(--ds-fg-dim,#4d4d4d);padding:10px 0;font-size:14px;text-decoration:none;transition:color .15s;display:block}.gn-mobile-link:hover{color:var(--ds-fg,#1a2134)}.gn-mobile-top-link{font-family:var(--ds-font-mono,"DM Mono", monospace);letter-spacing:.06em;text-transform:uppercase;color:var(--ds-fg,#1a2134);border-bottom:1px solid var(--ds-border,#e5e7eb);padding:16px 0;font-size:12px;text-decoration:none;display:block}.gn-mobile-footer{border-top:1px solid var(--ds-border,#e5e7eb);flex-direction:column;gap:12px;padding:24px;display:flex}.gn-mobile-footer .gn-btn{justify-content:center;width:100%;height:44px}@media (width<=900px){.gn{padding:0 24px}.gn-container{grid-template-columns:1fr auto}.gn-desktop{display:none!important}.gn-hamburger,.gn-mobile-overlay{display:flex}}
