:root{color-scheme:dark;--bg:#06101c;--surface:#0b1929;--surface2:#10243a;--line:#233b50;--text:#edf4fb;--muted:#a5b8c9;--blue:#48caff;--max:1240px}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:110px}body{margin:0;color:var(--text);background:var(--bg);font:16px/1.65 'Segoe UI',Arial,sans-serif}a{color:inherit;text-decoration:none}button,input,select{font:inherit}button,a,input,select,pre{outline-offset:5px}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,pre:focus-visible{outline:2px solid #72dcff}img{display:block;max-width:100%;height:auto}p{margin:0 0 1.1em}h1,h2,h3{line-height:1.12;letter-spacing:-.035em;margin:0 0 .6em}h1{font-size:clamp(2.8rem,5.5vw,5rem);max-width:1050px;font-weight:650}h2{font-size:clamp(2rem,3.2vw,2.8rem);font-weight:600}h3{font-size:1.6rem;font-weight:600}h1 span{color:var(--blue)}.wrap{width:min(var(--max),calc(100% - 80px));margin:auto}.section{padding-top:88px;padding-bottom:88px}.compact{padding-bottom:45px}.eyebrow{color:var(--blue);font:600 11px/1.5 'Segoe UI',sans-serif;letter-spacing:.16em;margin-bottom:20px}.eyebrow>span:not(.status){float:right;color:var(--muted);letter-spacing:0;font-weight:400}.lead{font-size:clamp(1.1rem,1.6vw,1.3rem);color:#bacbd9;max-width:760px;line-height:1.7}.fine{font-size:12px;line-height:1.65;color:var(--muted)}.fine a{text-decoration:underline;text-underline-offset:3px}.top{position:sticky;top:0;z-index:30;background:#06101cf5;border-bottom:1px solid var(--line);backdrop-filter:blur(16px)}.navwrap{width:min(var(--max),calc(100% - 80px));margin:auto;display:flex;align-items:center;justify-content:space-between;height:88px;gap:25px}.brand{display:inline-block;flex-shrink:0}.brand img{width:210px}.top nav{display:flex;align-items:center;gap:27px}.top nav a{font-size:14px;color:#b6c8d7;padding:31px 0;border-bottom:2px solid transparent}.top nav a:hover,.top nav a[aria-current]{color:#fff;border-color:var(--blue)}.top nav .searchlink{border:1px solid #355269;padding:7px 15px;border-radius:4px;margin-left:10px;color:#fff}.menu{display:none;background:transparent;color:white;border:1px solid var(--line);padding:8px 13px;border-radius:4px}.skip{position:fixed;left:20px;top:-80px;z-index:100;background:#0e73a3;padding:12px 25px}.skip:focus{top:10px}.hero{display:grid;grid-template-columns:1.15fr 1fr;align-items:center;min-height:610px;padding-top:36px;padding-bottom:45px;gap:25px}.hero h1{font-size:clamp(3.5rem,6vw,5.8rem);line-height:1.02;letter-spacing:-.055em;margin-bottom:25px}.hero .lead{max-width:520px;font-size:20px}.hero-art{position:relative;max-width:490px;justify-self:end}.hero-art img{width:100%;filter:drop-shadow(0 0 38px #0d64ad40)}.orbit-label{display:block;color:#708ba1;text-align:center;letter-spacing:.25em;font-size:9px;margin-top:-5px}.hero-caption{color:#7c95a9;font-size:12px;display:flex;align-items:center;gap:9px;margin-top:35px}.dot{width:6px;height:6px;background:#4accbc;border-radius:100%;box-shadow:0 0 10px #4accbc88}.buttons{display:flex;gap:12px;flex-wrap:wrap;margin-top:29px}.btn{border:1px solid #3b627f;border-radius:4px;display:inline-flex;align-items:center;justify-content:center;gap:20px;padding:12px 20px;color:#d9e9f4;font-size:13px;line-height:1.5;font-weight:600;background:transparent;cursor:pointer;transition:background .15s,border-color .15s}.btn:hover{background:#14314a;border-color:#55cfff}.btn.primary{background:#3abfff;color:#031522;border-color:#3abfff}.btn.primary:hover{background:#85ddff}.discipline-strip{border-block:1px solid var(--line);background:#091726}.discipline-strip .wrap{display:grid;grid-template-columns:repeat(3,1fr)}.discipline-strip a{display:flex;align-items:center;gap:18px;padding:25px 25px;color:#5fa9d1;font-size:12px;border-right:1px solid var(--line)}.discipline-strip a:first-child{padding-left:0}.discipline-strip a:last-child{border:0}.discipline-strip strong{font-size:14px;color:#c8d6e2;font-weight:500;flex:1}.section-heading{display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:35px}.section-heading h2{margin:0}.section-heading .eyebrow{margin-bottom:12px}.textlink{font-size:13px;color:var(--blue);font-weight:600;display:inline-block}.textlink:hover{text-decoration:underline;text-underline-offset:5px}.feature-grid,.projectgrid{display:grid;grid-template-columns:1fr 1fr;gap:27px}.feature,.project{border:1px solid var(--line);background:linear-gradient(135deg,#0d1e30,#091522);border-radius:7px;overflow:hidden}.feature-media{display:block;height:305px;overflow:hidden;border-bottom:1px solid var(--line)}.board-media{background:radial-gradient(ellipse at center,#0d304a,#030a12);padding:25px}.board-media img{width:100%;height:100%;object-fit:contain}.router-media{background:#fff;padding:18px}.router-media img{width:100%;height:100%;object-fit:contain}.feature-body{padding:30px}.feature h3{font-size:29px;max-width:440px}.feature p{color:var(--muted);font-size:15px;max-width:480px}.status{display:inline-block;border:1px solid #2e536e;border-radius:20px;padding:3px 9px;color:#a5d9f1;font:400 10px/1.5 'Segoe UI',sans-serif;letter-spacing:0;float:right}.journal{background:#0b1928;border-block:1px solid var(--line)}.articlegrid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin-top:30px}.articlebox{border-top:1px solid #36516a;padding:24px 0;display:flex;flex-direction:column;align-items:start}.articlebox .eyebrow{width:100%;margin-bottom:20px}.articlebox h2{font-size:24px;line-height:1.25;letter-spacing:-.025em}.articlebox h2 a:hover{color:var(--blue)}.articlebox p{font-size:14px;color:var(--muted);margin-bottom:24px}.articlebox .textlink{margin-top:auto}.about{display:grid;grid-template-columns:1fr 1fr;gap:55px}.about h2{font-size:38px}.about p:not(.eyebrow){color:var(--muted)}footer{border-top:1px solid var(--line);background:#040c15;color:var(--muted);padding:42px 0 0}.footer-inner,.footer-bottom{width:min(var(--max),calc(100% - 80px));margin:auto;display:flex;justify-content:space-between;align-items:center;gap:35px}.footer-inner .brand img{width:176px}.footer-inner p{font-size:12px;margin:12px 0}.footer-inner>div:nth-child(2){display:flex;gap:25px;font-size:13px}.footer-bottom{border-top:1px solid #172c3e;padding:18px 0;font-size:11px;margin-top:30px}.footer-bottom span{margin-left:auto}.projectgrid{margin-top:50px;row-gap:36px}.project{scroll-margin-top:110px}.project-image{display:block;height:290px}.project-body{padding:30px}.project-body h2{font-size:32px}.project-body h3{font-size:16px;font-weight:500;color:#c4d6e5;letter-spacing:0}.project-body p{color:var(--muted);font-size:15px}.tags{display:flex;gap:7px;flex-wrap:wrap}.tags span,.tag{display:inline-block;color:#9ab8cf;border:1px solid #29445b;padding:3px 8px;border-radius:3px;font-size:11px}.projectlinks{display:flex;flex-wrap:wrap;gap:23px;margin-top:25px}.filterform{display:flex;align-items:center;gap:16px;margin-top:35px;font-size:14px}.filterform select{padding:9px 40px 9px 12px;background:#10243a;border:1px solid #365571;border-radius:4px;color:white}.filterform .btn{padding:9px 16px}.article-head{padding-top:50px;padding-bottom:48px;border-bottom:1px solid var(--line)}.breadcrumbs{font-size:12px;color:#88a2b7;display:flex;gap:13px;margin-bottom:42px}.breadcrumbs a{color:#bdd5e6}.article-head h1{max-width:1000px;font-size:clamp(2.7rem,4.9vw,4.8rem);line-height:1.07}.article-head .lead{max-width:850px}.articlemeta{display:flex;gap:23px;color:#829eb4;font-size:12px;margin-top:28px;flex-wrap:wrap}.articlemeta>span:first-child{color:#d1e8f7}.article-layout{display:grid;grid-template-columns:240px minmax(0,1fr);gap:66px;padding-top:48px;padding-bottom:90px}.toc{align-self:start;position:sticky;top:120px}.toc .eyebrow{font-size:10px}.toc nav{display:grid;gap:13px;border-left:1px solid var(--line);padding-left:18px;margin-bottom:28px}.toc nav a{font-size:12px;line-height:1.5;color:#94acbf}.toc nav a:hover{color:var(--blue)}.prose{min-width:0;max-width:870px;color:#b7cbdc;font-size:16px;line-height:1.85}.prose h2{font-size:30px;color:#edf4fb;line-height:1.2;letter-spacing:-.025em}.prose h3{font-size:22px;color:#dcecf9;margin-top:26px}.prose section{margin-bottom:56px;scroll-margin-top:115px}.prose a{color:#5ccfff;text-decoration:underline;text-underline-offset:3px}.prose strong{color:#e0edf8}.prose ul,.prose ol{padding-left:24px}.prose li{padding-left:4px;margin-bottom:12px}.prose code{background:#11283a;padding:2px 5px;border-radius:3px;overflow-wrap:anywhere;font-size:.86em;color:#b1e2f3}.codebar{background:#13283a;display:flex;justify-content:space-between;align-items:center;padding:9px 14px;font-size:10px;color:#8cb2cc;border:1px solid #2e4b60;border-radius:5px 5px 0 0;gap:12px;margin-top:20px}.copy{color:#7bdaff;background:none;border:1px solid #345b76;padding:4px 9px;border-radius:3px;font-size:11px;cursor:pointer}.copy:hover{background:#21435e}pre{margin:0 0 25px;padding:22px;overflow:auto;background:#020912;border:1px solid #2e4b60;border-top:0;border-radius:0 0 5px 5px;line-height:1.75;tab-size:2}pre code,.prose pre code{background:none;padding:0;color:#a3dabb;font:12px/1.75 Consolas,'Liberation Mono',monospace;white-space:pre;overflow-wrap:normal}.notice{border:1px solid #31516a;border-left:3px solid #44c3fd;background:#102237;padding:22px 26px;border-radius:0 5px 5px 0;margin:30px 0;color:#b7cfdf}.notice strong{display:block;color:#dcf2ff;font-size:16px;margin-bottom:8px}.notice p{font-size:14px;margin:0;line-height:1.8}.notice a{color:#72dbff;text-decoration:underline}.flow{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid #294861;padding:18px 14px;border-radius:4px;font-size:11px;text-align:center;color:#bde9fc;margin:28px 0}.flow b{font-weight:400;color:#4ebfed;white-space:nowrap}.flow span{padding:9px;background:#112b40;border-radius:3px}.gallery{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin:30px 0}.gallery figure{margin:0;border:1px solid #2c465b;border-radius:4px;overflow:hidden;background:#071420}.gallery figure:first-child{grid-column:1/-1}.gallery-link{display:block;position:relative;background:#02080e;padding:15px;height:230px}.gallery figure:first-child .gallery-link{height:380px}.gallery img{width:100%;height:100%;object-fit:contain}.gallery .zoom{position:absolute;right:10px;bottom:10px;background:#12314ae8;color:#a6e7ff;padding:2px 8px;font-size:11px;border-radius:3px}.gallery figcaption{padding:14px;font-size:11px;line-height:1.6}.gallery figcaption strong{display:block;font-size:13px;margin-bottom:3px}.gallery figcaption span{color:#8aa5ba}.lightbox{border:1px solid #45637c;border-radius:6px;background:#071523;color:white;width:min(95vw,1500px);max-height:95vh;padding:20px}.lightbox::backdrop{background:#000d}.lightbox img{width:100%;height:76vh;object-fit:contain;background:#02070c}.lightbox p{font-size:12px;color:#b8d0df;margin:12px 0 0}.close-lightbox{display:block;margin-left:auto;margin-bottom:12px;padding:7px 16px;background:#153950;color:white;border:1px solid #467491;border-radius:3px;cursor:pointer}.article-nav{border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:15px;padding-top:28px;flex-wrap:wrap}.prose .btn{text-decoration:none}.router-hero{display:grid;grid-template-columns:1.25fr 1fr;align-items:center;gap:50px}.router-hero h1{font-size:clamp(2.7rem,4.5vw,4rem)}.router-figure{margin:0;border:1px solid #30485d;border-radius:5px;background:#fff;overflow:hidden}.router-figure>img{width:100%;max-height:350px;object-fit:contain;padding:15px}.router-figure figcaption{padding:12px;background:#0c1c2b;color:#92adbf;font-size:10px}.router-figure a{text-decoration:underline}.specs{display:grid;grid-template-columns:repeat(4,1fr);border-block:1px solid var(--line);margin-top:60px;padding:27px 0}.specs div{border-right:1px solid var(--line);padding-left:30px}.specs div:first-child{padding-left:0}.specs div:last-child{border:0}.specs strong{display:block;font-size:22px;font-weight:600}.specs span{font-size:12px;color:#91aabd}.specs+.fine{margin-top:15px}.guide-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:22px}.guide-card{border-top:1px solid #3d5a73;padding-top:20px}.guide-card>span{color:#3db8f2;font-size:13px}.guide-card h3{font-size:21px;margin-top:18px}.guide-card p{font-size:13px;color:#9db4c6}.guide-card:hover h3{color:#49c7ff}.resource-banner{display:flex;align-items:center;justify-content:space-between;gap:30px;border:1px solid var(--line);background:#0b1c2e;padding:38px;margin-top:45px}.resource-banner h2{font-size:28px}.resource-banner p{margin-bottom:0;color:#98b2c6;font-size:13px}.resource-banner .eyebrow{color:var(--blue);font-size:10px;margin-bottom:12px}.resource-banner .btn{flex-shrink:0}.download-section{margin-top:50px}.download-section h2{font-size:26px}.downloadtable{display:grid;gap:12px}.downloaditem{display:grid;grid-template-columns:40px 1fr auto;gap:24px;align-items:center;background:#0b1b2c;border:1px solid var(--line);border-radius:5px;padding:23px}.downloadicon{font-size:28px;color:var(--blue)}.downloaditem h3{font-size:18px;letter-spacing:-.01em;margin-bottom:5px}.downloaditem p{font-size:13px;color:#a1b7c8;margin-bottom:6px}.download-section+.fine{margin-top:35px}.searchform{max-width:800px;margin-top:35px;margin-bottom:60px}.searchform label{display:block;font-size:13px;margin-bottom:10px;color:#afc7da}.searchform>div{display:flex;gap:12px}.searchform input{min-width:0;flex:1;padding:13px 17px;background:#0d2235;color:white;border:1px solid #365773;border-radius:4px}.toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:#173d55;border:1px solid #4887ac;color:white;padding:9px 18px;border-radius:5px;font-size:13px;z-index:100;opacity:0;pointer-events:none}.toast.show{opacity:1}.prose table{border-collapse:collapse;width:100%;font-size:12px;display:block;overflow:auto;margin:25px 0}.prose th,.prose td{border:1px solid var(--line);padding:10px;vertical-align:top;text-align:left}.prose th{background:#153047;color:#d7effe}
@media(min-width:1500px){.hero{min-height:660px}}
@media(max-width:1050px){.top nav{gap:16px}.brand img{width:180px}.hero{min-height:540px}.article-layout{grid-template-columns:190px 1fr;gap:35px}.articlegrid{gap:25px;grid-template-columns:repeat(2,1fr)}.guide-grid{grid-template-columns:1fr 1fr}.resource-banner{align-items:start;flex-direction:column}.feature h3{font-size:26px}}
@media(max-width:800px){.wrap,.navwrap,.footer-inner,.footer-bottom{width:calc(100% - 40px)}.navwrap{height:72px}.brand img{width:175px}.menu{display:block}.top nav{display:none;position:absolute;top:72px;left:0;right:0;padding:15px 20px 25px;background:#081826;border-bottom:1px solid var(--line);align-items:stretch;gap:0}.top nav.open{display:flex;flex-direction:column}.top nav a{padding:12px;border-bottom:0}.top nav a[aria-current]{background:#153651;border-radius:3px}.top nav .searchlink{margin:12px 0 0}.hero{grid-template-columns:1fr 1fr;min-height:490px;gap:0}.hero h1{font-size:53px}.hero .lead{font-size:16px}.hero-art{margin-right:-20px;margin-left:-15px}.hero-caption{font-size:10px}.buttons{gap:10px}.btn{padding:11px 15px;font-size:12px}.discipline-strip a{padding:18px 15px;gap:10px}.discipline-strip strong{font-size:11px}.section{padding-block:60px}.feature-media{height:245px}.feature-body,.project-body{padding:23px}.feature h3{font-size:24px}.feature .status{float:none;margin-left:8px}.feature .eyebrow{letter-spacing:.06em;font-size:9px}.article-layout{grid-template-columns:1fr;padding-top:25px;gap:35px}.toc{position:static;border:1px solid #29445b;border-radius:4px;padding:20px}.toc nav{grid-template-columns:1fr 1fr;gap:10px 20px}.toc .textlink{display:none}.article-head{padding-top:30px}.breadcrumbs{margin-bottom:30px}.article-head h1{font-size:43px}.about{gap:25px}.about h2{font-size:31px}.footer-inner{align-items:start;flex-wrap:wrap}.footer-inner>div:nth-child(2){gap:17px}.router-hero{gap:25px}.router-hero h1{font-size:38px}.router-hero .lead{font-size:16px}.specs div{padding-left:15px}.specs strong{font-size:18px}.specs span{font-size:10px}.downloaditem{grid-template-columns:28px 1fr;gap:15px}.downloaditem>.btn{grid-column:2;justify-self:start}.project-image{height:250px}}
@media(max-width:560px){h1{font-size:43px}.hero{grid-template-columns:1fr;padding-block:45px;overflow:hidden;position:relative}.hero-copy{position:relative;z-index:1}.hero h1{font-size:60px;max-width:340px}.hero .lead{max-width:320px;font-size:17px}.hero-art{position:absolute;right:-120px;top:10px;width:340px;opacity:.18;pointer-events:none}.orbit-label{display:none}.hero-caption{margin-top:26px}.discipline-strip .wrap{display:block}.discipline-strip a,.discipline-strip a:first-child{padding:15px 0;border-right:0;border-bottom:1px solid #1d3447}.discipline-strip strong{font-size:13px}.section-heading{align-items:start;flex-direction:column;gap:18px}.section-heading h2{font-size:32px}.feature-grid,.projectgrid,.articlegrid,.about{grid-template-columns:1fr}.feature-media{height:275px}.feature h3{font-size:28px}.articlegrid{margin-top:25px;gap:5px}.articlebox{padding:25px 0}.about h2{font-size:34px}.footer-inner{display:block}.footer-inner>div:nth-child(2){margin:28px 0;flex-wrap:wrap}.footer-bottom{align-items:start}.footer-bottom span{max-width:160px;text-align:right}.filterform{flex-wrap:wrap;gap:10px}.filterform label{width:100%}.article-head h1{font-size:38px}.articlemeta{gap:8px 16px}.article-head .lead{font-size:17px}.toc nav{grid-template-columns:1fr}.prose{font-size:16px;line-height:1.85}.prose h2{font-size:27px}.prose section{margin-bottom:42px}.flow{flex-direction:column;align-items:stretch}.flow b{transform:rotate(0)}.gallery{grid-template-columns:1fr}.gallery figure:first-child{grid-column:auto}.gallery figure:first-child .gallery-link,.gallery-link{height:255px}.gallery figcaption{font-size:10px}pre{padding:16px}.notice{padding:18px}.article-nav{display:grid;grid-template-columns:1fr}.router-hero{grid-template-columns:1fr}.router-hero h1{font-size:43px}.router-figure>img{max-height:280px}.specs{grid-template-columns:1fr 1fr;gap:25px;margin-top:35px}.specs div:nth-child(3){padding-left:0}.specs div:nth-child(2){border:0}.specs strong{font-size:21px}.specs span{font-size:11px}.guide-grid{grid-template-columns:1fr}.guide-card{padding-top:18px}.guide-card h3{margin-top:10px}.resource-banner{padding:24px}.resource-banner h2{font-size:25px}.downloaditem{padding:18px}.downloaditem h3{font-size:17px}.downloadicon{font-size:24px}.searchform>div{flex-direction:column}.searchform .btn{align-self:start}.project-body h2{font-size:29px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}

