:root{--ink:#252a31;--muted:#606871;--red:#bd292c;--paper:#f5f6f7;--line:#e0e4e7;--dark:#151b22}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:90px}body{margin:0;color:var(--ink);font:16px/1.7 Arial,Helvetica,sans-serif;background:#fff}a{color:inherit;text-decoration:none}a:hover{color:var(--red)}button,input{font:inherit}img{max-width:100%;height:auto}button,a,input{touch-action:manipulation}a:focus-visible,button:focus-visible,input:focus-visible{outline:3px solid #df8a25;outline-offset:5px}.wrap{max-width:1200px;width:calc(100% - 80px);margin:auto}.skip{position:fixed;top:-70px;left:20px;background:white;padding:12px;z-index:100}.skip:focus{top:10px}.header{height:88px;background:var(--dark);position:relative;z-index:10}.nav{display:flex;align-items:center;justify-content:space-between;height:100%;gap:35px}.brand{display:block;min-width:158px}.brand img{width:158px;display:block}.nav nav{display:flex;align-items:center;gap:29px}.nav nav a{font-size:13px;color:#d1d5d8;font-weight:600}.nav nav a:hover,.nav nav a.active{color:#fff}.nav nav .source-link{border:1px solid #586067;padding:8px 14px;color:#fff}.menu-toggle{display:none}.hero{position:relative;min-height:610px;background:linear-gradient(90deg,rgba(13,25,34,.81),rgba(13,25,34,.27)),url('/wp-content/uploads/2015/08/port-barcelona-e1439927147109.jpg') center/cover;color:white;display:flex;align-items:center}.hero-content{padding-top:52px;padding-bottom:88px}.eyebrow{font-size:11px;font-weight:700;letter-spacing:2.8px;margin:0 0 23px;color:inherit}.red{color:var(--red)}h1,h2,h3{line-height:1.17;letter-spacing:-1.2px;margin:0 0 24px}h1{font-size:52px;font-weight:600}h2{font-size:38px;font-weight:500}h3{font-size:22px}.hero h1{font-size:73px;font-weight:400;letter-spacing:-2.5px;line-height:1.08}.hero h1 strong{font-weight:700}.hero p:not(.eyebrow){font-size:20px;line-height:1.65;color:#e2e8ec;margin:27px 0 35px}.hero-actions{display:flex;gap:14px;flex-wrap:wrap}.button{display:inline-flex;align-items:center;justify-content:center;gap:30px;background:var(--red);border:1px solid var(--red);padding:13px 22px;color:white;font-size:13px;font-weight:700;letter-spacing:.1px;line-height:1.6}.button:hover{background:#a51e25;border-color:#a51e25;color:#fff}.button-ghost{background:transparent;border:1px solid #aeb4b8}.button-ghost:hover{background:#fff;color:var(--ink);border-color:#fff}.hero-caption{position:absolute;bottom:20px;right:40px;font-size:10px;letter-spacing:1px;color:#d7dfe2}.intro-strip{border-bottom:1px solid var(--line)}.strip-inner{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:22px 0}.strip-inner p{margin:0;font-size:14px}.strip-inner div{display:flex;gap:25px;font-size:10px;font-weight:700;letter-spacing:1px;color:#71777d}.section{padding-top:88px;padding-bottom:88px}.section-intro{font-size:17px;color:var(--muted);max-width:680px;margin:0 0 40px}.technologies{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--line);border-left:1px solid var(--line)}.tech-logo{border-bottom:1px solid var(--line);border-right:1px solid var(--line);height:108px;display:flex;justify-content:center;align-items:center;padding:20px 30px}.tech-logo img{max-width:180px;max-height:66px;object-fit:contain;width:100%}.soft-section{background:var(--paper);padding:80px 0}.feature{display:grid;grid-template-columns:1fr 1.08fr;gap:74px;align-items:center}.feature p{color:var(--muted);margin:0 0 20px}.feature .eyebrow{color:var(--red)}.feature-copy .text-link{display:inline-block;margin-top:13px}.text-link{font-size:13px;font-weight:700;color:var(--red)}.architecture{margin:0;background:#fff;border:1px solid var(--line);padding:23px}.architecture img{display:block;width:100%}.flow-figure{background:#f7f8f9;padding:26px 20px;border:1px solid var(--line)}.flow-figure img{width:100%;display:block}.flow-figure>span{display:block;text-align:center;font-size:10px;letter-spacing:2px;color:var(--muted);padding-top:12px}.dark-section{background:var(--dark);color:#fff;padding:74px 0}.source-section{display:flex;justify-content:space-between;gap:50px;align-items:center}.source-section h2{font-size:40px}.source-section p:not(.eyebrow){color:#b7bfc6;font-size:14px;max-width:540px}.source-actions{display:flex;flex-direction:column;gap:15px;flex-shrink:0}.section-head{display:flex;justify-content:space-between;gap:30px;align-items:end;margin-bottom:25px}.doc-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.doc-card{padding:27px;border:1px solid var(--line);display:block;transition:border-color .15s,transform .15s;background:#fff}.doc-card:hover{transform:translateY(-3px);border-color:var(--red)}.card-label{color:#78808a;font-size:10px;text-transform:uppercase;letter-spacing:1.5px}.doc-card h2{font-size:21px;font-weight:600;letter-spacing:-.4px;line-height:1.4;margin:16px 0 13px}.doc-card h2 span{color:var(--red)}.doc-card p{font-size:13px;color:var(--muted);margin:0}.project-strip{background:#f5f6f7;border-top:1px solid var(--line);padding:24px 0}.project-strip .wrap{display:flex;align-items:center;justify-content:center;gap:55px}.project-strip img{width:155px}.project-strip p{font-size:13px;line-height:1.9;color:#5d636b}.project-strip a{color:var(--red)}footer{background:#10161d;color:#b0bac4;padding:48px 0}.foot{display:grid;grid-template-columns:1fr 2.4fr 1fr;gap:35px}.foot p{font-size:11px;line-height:1.9;margin:8px 0}.footer-brand{color:#fff;font-size:25px;letter-spacing:-1.2px}.footer-brand span{font-weight:700}.foot>div:last-child{display:flex;flex-direction:column;font-size:11px;gap:7px}.foot a:hover{color:#fff}.page-intro{padding-top:65px;padding-bottom:50px}.lede{font-size:18px;line-height:1.65;color:var(--muted);max-width:780px}.directory{padding-bottom:80px}.group-title{font-size:25px;border-top:1px solid var(--line);padding-top:40px;margin-top:40px}.docs-layout{display:grid;grid-template-columns:245px minmax(0,1fr);gap:62px;padding-top:45px;padding-bottom:75px}.sidebar{border-right:1px solid var(--line);padding-right:25px}.sidebar label{display:block;font-size:12px;font-weight:700;margin-bottom:9px}.sidebar input{border:1px solid #d4d9de;max-width:100%;width:100%;font-size:12px;padding:9px 10px;border-radius:0;margin-bottom:27px}.sidebar h2{font-size:10px;text-transform:uppercase;letter-spacing:1.3px;color:#8b9299;margin:0 0 8px;font-weight:700}.nav-group{margin-bottom:24px}.topic{display:block;font-size:12px;padding:6px 7px;color:#5f6870;line-height:1.4;border-left:2px solid transparent}.topic:hover,.topic.current{color:var(--red);border-left-color:var(--red);background:#faf1f1}.breadcrumbs{font-size:11px;color:#858d95;margin:2px 0 23px}.article{min-width:0}.article>h1{font-size:41px;letter-spacing:-1.4px;margin-bottom:17px}.article .lede{font-size:16px;margin-top:0}.notice{background:#f4f6f7;border-left:3px solid #aeb8c0;font-size:12px;padding:15px 19px;line-height:1.65;color:#5e6770;margin:25px 0 35px}.notice a{color:var(--red);text-decoration:underline}.prose{font-size:15px;line-height:1.8;overflow-wrap:anywhere}.prose>h2{font-size:27px;margin-top:39px;margin-bottom:19px}.prose h3{font-size:20px;letter-spacing:-.3px;margin-top:32px;margin-bottom:14px}.prose p{margin:16px 0}.prose ul,.prose ol{padding-left:24px}.prose li{margin-bottom:9px}.prose a:not(.button):not(.doc-card){color:var(--red);text-decoration:underline;text-underline-offset:3px}.prose img{display:block;height:auto;max-width:100%;margin:25px auto;border:1px solid var(--line)}.prose pre{overflow:auto;max-width:100%;background:#151d26;color:#e3eaf0;white-space:pre;line-height:1.7;font-size:12px;padding:20px;margin:20px 0}.prose code{font-family:SFMono-Regular,Consolas,'Liberation Mono',monospace;font-size:12px}.code-block{margin:24px 0;border:1px solid #dce1e6;max-width:100%;overflow:hidden}.code-block figcaption{padding:8px 15px;background:#edf0f3;font:11px/1.5 monospace;color:#5b646d}.code-block pre{margin:0;border:0}.prose table{width:100%;border-collapse:collapse}.prose td,.prose th{border:1px solid var(--line);padding:9px}.doc-bottom{margin-top:50px;padding-top:25px;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:20px;font-size:12px;color:var(--red)}.prose .doc-cards{grid-template-columns:repeat(2,minmax(0,1fr));margin:26px 0}.prose .doc-card h2{font-size:19px}.prose .doc-card p{font-size:12px;margin-bottom:0}.error{min-height:55vh;padding-top:80px;padding-bottom:80px}[hidden]{display:none!important}@media(min-width:1500px){.hero{min-height:660px}}@media(max-width:1050px){.nav nav{gap:16px}.wrap{width:calc(100% - 48px)}.feature{gap:38px}.docs-layout{gap:35px;grid-template-columns:210px minmax(0,1fr)}.hero h1{font-size:64px}.source-section h2{font-size:34px}.doc-card{padding:21px}}@media(max-width:800px){.header{height:74px}.brand img{width:146px}.menu-toggle{display:block;background:transparent;border:1px solid #626970;color:#fff;font-size:12px;padding:6px 11px}.menu-toggle span{padding-left:10px}.nav nav{display:none;position:absolute;top:74px;left:0;right:0;background:#151b22;padding:18px 24px;flex-direction:column;align-items:stretch;gap:0;box-shadow:0 10px 16px #0002}.nav nav.open{display:flex}.nav nav a{padding:13px 10px}.nav nav .source-link{margin-top:10px}.hero{min-height:580px}.hero h1{font-size:59px}.hero-caption{right:24px;font-size:8px}.hero-content{padding-top:45px;padding-bottom:70px}.strip-inner{flex-direction:column;align-items:start;gap:13px}.technologies{grid-template-columns:repeat(4,1fr)}.tech-logo{height:82px;padding:15px}.feature{grid-template-columns:1fr;gap:30px}.feature-copy h2 br{display:none}.architecture{max-width:600px}.source-section{flex-direction:column;align-items:start;gap:20px}.source-actions{flex-direction:row;flex-wrap:wrap}.section-head{align-items:start;flex-direction:column;gap:0}.doc-cards{grid-template-columns:1fr}.doc-card{padding:26px}.project-strip .wrap{gap:25px;justify-content:start}.project-strip img{width:115px}.foot{grid-template-columns:1fr 2fr}.foot>div:last-child{grid-column:1/-1;flex-direction:row;gap:25px}.docs-layout{display:block;padding-top:28px}.sidebar{display:none}.article>h1{font-size:36px}.article .doc-cards{grid-template-columns:1fr}.section,.soft-section{padding-top:60px;padding-bottom:60px}h2{font-size:33px}.page-intro h1{font-size:39px}}@media(max-width:480px){.wrap{width:calc(100% - 36px)}.hero{min-height:620px;background-position:58% center}.hero h1{font-size:51px}.hero p:not(.eyebrow){font-size:18px}.hero-actions{gap:12px;flex-direction:column;align-items:start}.hero .button{width:100%;max-width:320px}.hero-caption{font-size:7px}.technologies{grid-template-columns:repeat(2,1fr)}.tech-logo{height:94px}.strip-inner p{font-size:12px}.strip-inner div{gap:18px;font-size:9px}.project-strip .wrap{flex-direction:column;text-align:center;gap:4px}.foot{grid-template-columns:1fr;gap:20px}.foot>div:last-child{flex-wrap:wrap;gap:18px}.source-actions{width:100%;flex-direction:column}.source-section h2{font-size:31px}.article>h1{font-size:33px}.doc-bottom{flex-direction:column}.prose pre{padding:15px;font-size:11px}.prose code{font-size:11px}.page-intro{padding-top:42px}.page-intro h1{font-size:34px}.error h1{font-size:38px}}

.dataset-section{padding:54px 0}.dataset-section h2{font-size:30px;letter-spacing:-.7px}.dataset-section .section-intro{max-width:850px;margin-bottom:0}.dataset-section a{color:var(--red);text-decoration:underline;text-underline-offset:3px}
