.ff{--ink:#182d42;--blue:#12616b;--line:#ccdbd8;color:var(--ink);background:#f5f6f1;font-family:"Segoe UI","Microsoft YaHei",sans-serif;padding-bottom:30px}.ff *{box-sizing:border-box}.ff .inner{width:min(1180px,calc(100% - 64px));margin:auto}.ff a{color:inherit}.ff .crumb{font-size:13px;padding:16px 0;color:#455f63}.ff .hero{position:relative;overflow:hidden;background:#102b37 url('screen1.jpg') right 53%/auto 155% no-repeat;color:white;border-radius:9px;isolation:isolate;border:1px solid #243c49}.ff .hero:before{content:"";position:absolute;z-index:-1;inset:0;background:linear-gradient(90deg,#102a37 8%,#102a37f5 28%,#102a37bc 46%,#102a3715 77%)}.ff .herotxt{padding:46px 5%;width:66%}.ff .label{font:700 12px/1.45 Consolas,monospace;letter-spacing:.14em;color:#337272}.ff .hero .label{color:#b5e5d8}.ff h1,.ff h2,.ff h3,.ff p{margin:0;color:inherit}.ff h1{font-size:clamp(30px,3.8vw,56px);line-height:1.23;letter-spacing:-.04em;margin:14px 0 8px}.ff .sub{font:15px Georgia,serif;letter-spacing:.10em;color:#cfe6dd}.ff .herotxt p{margin:20px 0 0;max-width:420px;color:white;font-size:16px;line-height:1.8}.ff .jump{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line);border-radius:6px;background:#fff;margin-top:12px}.ff .jump a{display:flex;align-items:center;gap:16px;padding:15px 22px;text-decoration:none}.ff .jump a+a{border-left:1px solid var(--line)}.ff .jump em,.ff .chap i{font:normal 14px Consolas,monospace;color:#22717a}.ff .jump strong{font-size:19px}.ff .jump small{color:#4e6567}.ff section.block{margin:35px 0}.ff .st{display:flex;align-items:end;justify-content:space-between;margin-bottom:14px}.ff h2{font-size:28px;line-height:1.35;margin-top:3px}.ff .meta{color:#4b6369;font-size:14px}.ff .guides{display:grid;grid-template-columns:1.1fr 2fr;gap:20px}.ff .feature{background:#143b41 url('screen2.jpg') center 44%/cover;color:white;min-height:180px;display:flex;flex-direction:column;justify-content:end;padding:22px;border-radius:6px;position:relative;isolation:isolate;overflow:hidden}.ff .feature:before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(transparent 12%,#0b2939ed)}.ff .feature h3{font-size:23px;color:white}.ff .feature small{letter-spacing:.13em;font-family:Consolas;color:#daf3dc}.ff .chap{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 21px;background:white;border:1px solid var(--line);padding:4px 20px;border-radius:6px}.ff .chap div{display:flex;align-items:center;gap:13px;border-bottom:1px solid #e2e8e4;padding:12px 0;font-size:16px}.ff .chap div:nth-last-child(-n+2){border:0}.ff .wiki{display:grid;grid-template-columns:repeat(4,1fr);background:#fff;border:1px solid var(--line);border-top:3px solid #357973;border-radius:5px}.ff .entry{padding:21px}.ff .entry+.entry{border-left:1px solid var(--line)}.ff h3{font-size:19px;line-height:1.5;margin:4px 0}.ff .entry p,.ff .tool p{font-size:14px;line-height:1.8;color:#405762}.ff .tools{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.ff .tool{border:1px solid #c7dad3;border-radius:6px;background:#e9f1eb;padding:20px}.ff .demo{border-top:1px solid #c3d6cf;margin-top:15px;padding-top:10px;font-size:14px;color:#254c4e}.ff .lower{border-top:1px solid var(--line);padding-top:14px;color:#556969;font-size:13px}.ff .moreg{margin-top:12px;color:#3d565c;font-size:14px}.ff a:hover{text-decoration:underline}.ff a:focus-visible{outline:3px solid #078784}.ff .feature{background-blend-mode:normal}
@media(max-width:820px){.ff .wiki{grid-template-columns:1fr 1fr}.ff .entry:nth-child(3){border-left:0}.ff .entry:nth-child(n+3){border-top:1px solid var(--line)}.ff .jump small{display:none}.ff .herotxt{width:85%}.ff .inner{width:calc(100% - 36px)}.ff .guides{grid-template-columns:1fr 1.5fr}}@media(max-width:580px){.ff .inner{width:calc(100% - 28px)}.ff .herotxt{width:100%;padding:104px 18px 20px}.ff .hero{background-size:cover;background-position:center top}.ff .hero:before{background:linear-gradient(0deg,#102a37 8%,#102a37e8 42%,#102a3710 94%)}.ff .herotxt p{margin-top:12px;font-size:14px}.ff .sub{font-size:12px}.ff .jump a{justify-content:center;gap:6px;padding:12px 4px}.ff .jump strong{font-size:16px}.ff .guides,.ff .tools{grid-template-columns:1fr}.ff .guides{gap:8px}.ff .feature{min-height:105px;padding:13px}.ff .chap{padding:2px 12px;gap:0 9px}.ff .chap div{font-size:14px;gap:7px}.ff .entry{padding:14px}.ff .st{align-items:start}.ff h2{font-size:24px}.ff .st>.meta{font-size:12px;margin-top:22px}.ff section.block{margin:25px 0}.ff .tool{padding:16px}.ff .demo{margin-top:7px}.ff .tools{gap:8px}.ff h3{font-size:17px}}
.ff .hero{display:block;min-height:0;padding:0}.ff .hero h1{max-width:none;width:auto;text-wrap:balance}.ff .hero .herotxt{max-width:none}.ff .hero .herotxt p{max-width:440px}.ff .hero .herotxt{padding-top:54px;padding-bottom:54px}@media(max-width:580px){.ff .hero .herotxt{padding-top:100px;padding-bottom:20px}.ff .hero h1{font-size:29px}}

.ff .chap a{display:flex;gap:12px;align-items:center;border-bottom:1px solid #dee4df;min-height:46px;text-decoration:none}.ff .chap a:hover b,.ff .chap a:focus-visible b{text-decoration:underline}.ff .answers>div[id]{border-top:1px solid var(--line);padding:12px 0}.ff .answers h3{font-size:17px}.ff .answers p{line-height:1.7;font-size:15px}.ff .answers a,.ff .moreg a{color:#165962;text-decoration:underline;text-underline-offset:3px}.ff .lang-note{margin-top:14px}
.ff .metrics{display:grid;grid-template-columns:repeat(4,1fr);background:#12343c;color:#f1f7ed;border-radius:6px;margin:12px 0;padding:15px 0}.ff .metrics div{padding:0 20px;display:flex;align-items:baseline;gap:12px;border-left:1px solid #517271}.ff .metrics div:first-child{border:0}.ff .metrics b{font:600 32px Georgia,serif;color:#d8f2de}.ff .metrics span{font-size:15px}.ff .primer,.ff .samples{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin-top:18px}.ff .primer article{border-left:3px solid #7baca2;padding:3px 16px}.ff .primer p{font-size:15px;line-height:1.85;color:#38505c}.ff .sample{background:white;border:1px solid var(--line);border-radius:6px;padding:14px 18px}.ff table{width:100%;border-collapse:collapse;color:var(--ink);font-size:15px}.ff caption{text-align:left;font-size:18px;font-weight:700;margin-bottom:10px}.ff th,.ff td{padding:8px 4px;border-bottom:1px solid #dce5e1;text-align:left}.ff thead th{font-size:13px;color:#45665f;background:#f3f6f2}.ff .chap a small{margin-left:auto;color:#526d66;white-space:nowrap}.ff .hero .herotxt p{max-width:520px}@media(max-width:650px){.ff .metrics{grid-template-columns:1fr 1fr;gap:10px 0}.ff .metrics div{padding:0 12px;gap:8px}.ff .metrics div:nth-child(3){border:0}.ff .metrics b{font-size:25px}.ff .primer,.ff .samples{grid-template-columns:1fr;gap:12px}.ff .chap a{flex-wrap:wrap;column-gap:6px;row-gap:1px;padding:6px 0}.ff .chap a small{width:100%;padding-left:24px}.ff .sample{padding:12px}}.ff-page{min-height:65vh}.ff-page .inner{padding-block:12px 44px;max-width:960px}.ff-page h1{color:var(--ink);font-size:clamp(26px,4vw,43px);margin:18px 0}.ff-page p{line-height:1.75;margin:12px 0}.ff-page h2{margin-top:22px}.ff-page .ff-links{columns:2;column-gap:35px;padding-left:24px}.ff-page .ff-links li{break-inside:avoid;padding:5px 0}.ff-page .ff-note{font-size:.9rem;color:#52686a}.ff-page details,.ff-page label{display:block;padding:6px 2px;overflow-wrap:anywhere}.ff-page summary{cursor:pointer;padding:6px}.ff-page dl{padding-left:16px;border-left:2px solid #d5dfd9}.ff-page dt{font-weight:bold}.ff-page dd{margin:0 0 6px 8px}.ff-page input,.ff-page select{max-width:100%;padding:8px}.ff-page output{display:block;margin-block:6px}.ff-page .ff-source{overflow-wrap:anywhere}.ff-page .inner>a,.ff-page .ff-links a,.ff .entry h3 a,.ff .tool h3 a{text-decoration:underline;text-underline-offset:3px}.ff-page table{margin:15px 0;background:white}@media(max-width:600px){.ff-page .ff-links{columns:1}.ff-page dd{margin-left:2px}.ff-page dl{padding-left:5px}}
.ff-scroll{max-width:100%;overflow-x:auto}.ff-page .ff-source th,.ff-page .ff-source td{vertical-align:top}.ff .lang-note a[href$="/archive/"]{display:inline-block;padding:10px 0;font-weight:bold}
.ff .ff-key,.ff .ff-related{color:#165962;font-weight:700}
.ff .ff-related{text-decoration:underline;text-underline-offset:.18em}
.ff .ff-warning{color:#903814;font-weight:700}
.ff .ff-objectives li::marker{color:#165962;font-weight:700}
