@import url('fonts.css');
:root{--paper:#f5f1e8;--white:#fffefa;--ink:#172234;--muted:#536175;--accent:#244ae5;--lime:#e1edbd;--line:#d9dce0;--blue:#eaf0ff;--radius:18px}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:28px}body{margin:0;background:var(--paper);color:var(--ink);font-family:'Instrument Sans',sans-serif;font-size:18px;line-height:1.65;-webkit-font-smoothing:antialiased}a{color:inherit;text-underline-offset:4px;text-decoration-thickness:1px}a:hover{color:var(--accent)}button,a,summary{touch-action:manipulation}a:focus-visible,summary:focus-visible{outline:3px solid var(--accent);outline-offset:5px}img{max-width:100%;height:auto;display:block}p{margin:0 0 22px}li{margin-bottom:9px}ul,ol{padding-left:24px}h1,h2,h3,h4{line-height:1.12;letter-spacing:-.045em;margin:0 0 24px;font-weight:600}h1{font-size:clamp(38px,4.9vw,72px);max-width:1080px;overflow-wrap:break-word}h2{font-size:clamp(28px,3vw,43px)}h3{font-size:25px}h4{font-size:21px}small{font-size:13px}strong{font-weight:650}.container{width:min(1260px,calc(100% - 80px));margin:auto}.skip{position:absolute;top:-80px;left:20px;background:var(--white);padding:12px;z-index:5}.skip:focus{top:12px}.masthead{padding:24px 0 28px}.header-row{display:flex;align-items:center;gap:28px}.brand{display:flex;gap:12px;align-items:center;text-decoration:none;font-size:24px;line-height:1;font-weight:700;letter-spacing:-1px;min-width:170px}.brand-mark{width:38px;height:43px;background:var(--accent);display:flex;gap:3px;padding:12px 7px;align-items:center;border-radius:4px}.brand-mark i{display:block;width:5px;height:15px;background:var(--paper);transform:skewY(-20deg)}.brand-mark i:nth-child(2){height:23px;background:var(--lime)}.main-nav{display:flex;gap:20px;align-items:center;flex:1;justify-content:center;font-size:14px;line-height:1.3}.main-nav a{text-decoration:none}.header-actions{display:flex;gap:9px}.button{display:inline-flex;align-items:center;justify-content:center;gap:22px;min-height:48px;padding:14px 20px;border:1px solid var(--line);border-radius:8px;text-decoration:none;font-size:15px;font-weight:650;line-height:1.3;background:transparent}.button span{font-size:23px;line-height:1}.button.dark,.button.choice{background:var(--accent);color:white;border-color:var(--accent)}.button:hover{background:var(--ink);border-color:var(--ink);color:white}.header-actions .button{font-size:12px;padding:12px 13px;gap:12px}.actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}.hero{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(0,1fr);gap:52px;padding:54px;background:var(--ink);color:var(--paper);border-radius:24px}.hero h1{font-size:clamp(40px,4.6vw,67px);margin-bottom:28px}.hero .lead{color:#d0d8e6;font-size:20px;line-height:1.55}.kind{font-family:'IBM Plex Mono',monospace;font-size:12px;letter-spacing:0;line-height:1.6;margin-bottom:25px;color:var(--accent)}.hero .kind{color:var(--lime)}.byline{font-size:14px;color:var(--muted);margin-top:25px}.hero .byline{color:#c7d0df}.byline a{font-weight:650}.hero .button.light{color:var(--paper);border-color:#5d6879}.hero .button.dark{background:var(--lime);color:var(--ink);border-color:var(--lime)}.signup-lens{align-self:center;border-radius:18px;padding:30px;background:var(--white);color:var(--ink);box-shadow:12px 12px 0 #244ae5}.lens-head{display:flex;justify-content:space-between;font-family:'IBM Plex Mono',monospace;font-size:12px;margin-bottom:32px;color:var(--accent)}.lens-head span:last-child{font-size:27px;line-height:1}.signup-lens h2{font-size:35px}.signup-lens ul{list-style:none;padding:0;margin:30px 0}.signup-lens li{display:grid;grid-template-columns:82px minmax(0,1fr);gap:14px;align-items:start;padding:14px 0;border-top:1px solid var(--line);font-size:15px;line-height:1.4;margin:0}.signup-lens li span{font-family:'IBM Plex Mono',monospace;font-size:11px;color:var(--muted);padding-top:2px}.signup-lens p{font-size:13px;line-height:1.6;margin:0;color:var(--muted)}.scope{display:grid;grid-template-columns:1fr 1fr 1fr 1.5fr;gap:20px;padding:28px 32px;align-items:center}.scope>div{display:flex;gap:14px;align-items:center}.scope strong{font-family:'IBM Plex Mono',monospace;font-size:36px;font-weight:500;line-height:1.2}.scope span{font-size:13px;line-height:1.4;max-width:110px}.scope>a{font-size:14px;text-align:right}.scope>a span{margin-left:14px}.home-section{margin:90px 0}.section-head{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:60px;margin-bottom:32px;align-items:end}.section-head h2{max-width:550px;margin:0}.section-head p{font-size:17px;color:var(--muted);margin:0}.table-scroll{overflow-x:auto;max-width:100%;margin:26px 0 35px;border-radius:10px;border:1px solid var(--line);background:var(--white)}table{border-collapse:collapse;width:100%;font-size:14px;line-height:1.55;text-align:left}caption{text-align:left;padding:17px 20px;font-size:13px;font-family:'IBM Plex Mono',monospace;color:var(--muted);background:#edf0f6}th,td{padding:19px 20px;vertical-align:top;border-bottom:1px solid var(--line)}thead th{background:var(--ink);color:white;font-weight:500}tbody tr:last-child>*{border-bottom:0}tbody th{font-weight:650}th small{display:block;margin-top:6px;font-weight:400}.comparison{min-width:1080px}.comparison-table{min-width:1080px}.vendor-link{font-size:17px;font-weight:650;display:block;min-width:110px}.table-score .score-number{font-family:'IBM Plex Mono',monospace;font-size:25px}.table-score small{display:block;color:var(--muted)}.badge{display:inline-block;font-family:'IBM Plex Mono',monospace;font-size:10px;line-height:1.4;border-radius:4px;padding:7px 9px;background:var(--lime);color:var(--ink);margin-top:10px;white-space:nowrap}.rank-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}.rank-row{background:var(--white);border:1px solid var(--line);border-top:4px solid var(--accent);border-radius:16px;padding:30px;display:flex;flex-direction:column;min-width:0}.rank-row.featured{background:var(--blue)}.rank-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:25px}.position{font-family:'IBM Plex Mono',monospace;font-size:12px;color:var(--muted)}.score-plate{display:flex;align-items:baseline;gap:8px}.score-plate .score-number{font-family:'IBM Plex Mono',monospace;font-size:39px;font-weight:500;line-height:1.15}.score-plate small{color:var(--muted)}.rank-row h3{font-size:32px;margin-bottom:15px}.rank-row h3 a{text-decoration:none}.rank-row>.badge{align-self:start;margin:0 0 12px}.rank-row .subtitle{font-size:14px;font-weight:650;margin-bottom:20px}.rank-row>p{font-size:17px}.rank-row dl{margin:auto 0 25px}.rank-row dl>div{display:grid;grid-template-columns:110px minmax(0,1fr);gap:15px;border-top:1px solid var(--line);padding:14px 0;font-size:14px;line-height:1.6}.rank-row dt{color:var(--muted)}dd{margin:0}.review-link{font-size:15px;font-weight:650;color:var(--accent);display:flex;justify-content:space-between}.method-banner{background:var(--accent);color:white;padding:48px;border-radius:24px;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:65px}.method-banner h2{font-size:42px}.method-banner p{font-size:17px;color:#e5eafd}.method-banner .button{color:white;border-color:#9aaefb}.category-list>div{padding:19px 0;border-bottom:1px solid #6b85ef;display:grid;grid-template-columns:minmax(0,1fr) 90px;gap:20px;font-size:16px;line-height:1.4}.category-list strong{font-family:'IBM Plex Mono',monospace;font-size:11px;font-weight:400}.resource-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.resource{display:block;background:var(--white);padding:28px;border-radius:14px;text-decoration:none;border:1px solid var(--line);min-width:0}.resource h3{font-size:25px;line-height:1.18;margin-bottom:18px}.resource p{font-size:16px;color:var(--muted)}.resource a{font-size:14px;color:var(--accent)}.article-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px}.article-card{display:block;text-decoration:none;min-width:0}.article-card img{aspect-ratio:1376/768;object-fit:cover;border-radius:12px;margin-bottom:24px}.article-card h3{font-size:25px;line-height:1.2;margin-bottom:15px}.article-card p{font-size:16px;color:var(--muted)}.meta{font-family:'IBM Plex Mono',monospace;font-size:11px;color:var(--muted)}.faq{max-width:1000px}.faq details{background:var(--white);border:1px solid var(--line);border-radius:10px;margin-bottom:13px;overflow:hidden}.faq summary{cursor:pointer;list-style:none;font-weight:650;line-height:1.5;padding:21px 60px 21px 24px;position:relative;font-size:18px}.faq summary::-webkit-details-marker{display:none}.faq summary:after{content:'+';position:absolute;right:24px;top:19px;font-size:23px;color:var(--accent);font-weight:400}.faq details[open]summary:after{content:'−'}.answer{padding:0 24px 6px;color:var(--muted);font-size:17px}.answer p{margin-bottom:20px}.breadcrumbs{margin:10px 0 32px;font-size:12px;color:var(--muted);line-height:1.5}.breadcrumbs ol{list-style:none;padding:0;display:flex;flex-wrap:wrap;gap:8px}.breadcrumbs li{margin:0}.breadcrumbs li+li:before{content:'/';padding-right:8px}.page-top{padding:28px 0 40px}.page-intro{max-width:1040px}.page-top .lead{max-width:930px;font-size:22px;color:var(--muted);line-height:1.55}.doc-layout{display:grid;grid-template-columns:245px minmax(0,1fr);gap:65px}.toc{align-self:start;background:#e8eaf1;border-radius:12px;padding:24px;position:sticky;top:24px}.toc h2{font-size:17px;letter-spacing:-.02em}.toc a{display:block;font-size:13px;line-height:1.5;text-decoration:none;margin:0 0 14px;color:var(--muted)}.toc a:hover{color:var(--accent)}.reading{min-width:0;max-width:930px}.reading section{margin-bottom:55px}.reading>section:first-child>h2{margin-top:0}.reading h2{font-size:33px;line-height:1.2}.reading h3{font-size:24px;line-height:1.3}.reading p,.reading li{font-size:18px;line-height:1.8}.reading a:not(.button){color:var(--accent)}.rubric-table{min-width:670px}.rubric-table th:first-child{width:27%}.rubric-table td:nth-child(2){width:130px}.review-summary{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr) minmax(0,1fr);gap:34px;background:var(--ink);color:white;padding:34px;border-radius:18px;margin:0 0 55px;align-items:center}.review-summary .score-box{position:relative;padding-left:100px}.review-summary .score{position:absolute;left:0;top:0;font-family:'IBM Plex Mono',monospace;font-size:51px;line-height:1}.review-summary .score small{display:block;color:#cbd4e1;font-size:13px;margin-top:10px}.score-box h2{font-size:22px;margin-bottom:12px}.score-box p{font-size:13px;line-height:1.6;color:#cbd4e1;margin-bottom:12px}.review-summary .badge{margin:0 0 9px}.rail-item{font-size:14px;line-height:1.6;margin-bottom:18px;color:#d6deeb}.rail-item strong{display:block;font-size:12px;color:white;margin-bottom:5px}.summary-actions .button{display:flex;margin-bottom:10px;color:white;border-color:#677289}.summary-actions .button.dark{background:var(--lime);color:var(--ink);border-color:var(--lime)}.summary-actions p{font-size:12px;text-align:center;margin:12px 0 0}.review-body>.reading{max-width:930px;margin:auto}.facts{margin:0}.facts>div{display:grid;grid-template-columns:155px minmax(0,1fr);gap:25px;padding:23px 0;border-bottom:1px solid var(--line)}.facts dt{font-size:14px;font-weight:650;color:var(--accent)}.facts dd{font-size:17px}.facts dd a{display:inline-block;font-size:12px;margin-left:10px}.two-col{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:30px}.two-col>div{background:var(--white);padding:28px;border-radius:14px}.source-list{list-style:none;padding:0}.source-list li{border-bottom:1px solid var(--line);padding:14px 0;font-size:15px}.source-list small{display:block;color:var(--muted)}.blog-layout{display:grid;grid-template-columns:minmax(0,900px) 240px;gap:60px}.article-body{min-width:0}.article-body h2{font-size:32px;line-height:1.2;margin-top:45px}.article-body h3{font-size:24px;line-height:1.3;margin-top:30px}.article-body>p,.article-body>ul,.article-body>ol{line-height:1.85}.article-body a{color:var(--accent)}figure{margin:0 0 35px}figcaption{font-size:12px;line-height:1.6;color:var(--muted);margin-top:12px}.cover img{border-radius:14px}.flow{list-style:none;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.flow li{background:var(--blue);border-radius:10px;padding:20px;font-size:15px;line-height:1.5;margin:0}.flow strong{display:block;font-family:'IBM Plex Mono',monospace;color:var(--accent);margin-bottom:13px;font-weight:400}.ai-summary{margin:65px 0 45px;padding:25px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.ai-summary h2{font-size:18px!important;letter-spacing:-.015em;margin:0 0 18px!important}.ai-summary ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:9px}.ai-summary li{margin:0}.ai-summary a{display:block;text-decoration:none;font-size:12px;padding:9px 14px;border:1px solid var(--line);border-radius:6px;background:var(--white)}.article-body .ai-summary{margin:25px 0 35px}.about-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:70px}.publication-note{background:var(--lime);padding:30px;border-radius:14px;align-self:start}.publication-note h2{font-size:28px}.publication-note dl div{margin-bottom:25px}.publication-note dt{font-family:'IBM Plex Mono',monospace;font-size:11px;color:var(--muted)}.publication-note dd{font-size:17px;font-weight:650;margin-top:6px}.publication-note>a{font-size:14px}.author-role{font-family:'IBM Plex Mono',monospace;font-size:13px!important;color:var(--accent)}.contact-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:25px;margin-bottom:60px}.contact-card{background:var(--white);padding:32px;border-radius:16px;min-width:0}.contact-card h2{font-size:30px}.contact-card p,.contact-card li{font-size:16px}.contact-email{display:block;font-family:'IBM Plex Mono',monospace;font-size:12px;color:var(--accent);overflow-wrap:anywhere}.site-footer{background:var(--ink);color:var(--paper);margin-top:70px;padding:50px 0 24px}.footer-grid{display:grid;grid-template-columns:minmax(0,2fr) 1fr 1fr;gap:70px}.footer-title{font-size:29px;font-weight:600;line-height:1.2;letter-spacing:-.04em;margin-bottom:20px}.footer-grid p{font-size:14px;line-height:1.7;color:#b7c4d9;max-width:400px}.footer-grid nav a{display:block;font-size:14px;text-decoration:none;margin-bottom:12px}.footer-bottom{font-family:'IBM Plex Mono',monospace;font-size:10px;line-height:1.6;border-top:1px solid #4c586a;display:flex;justify-content:space-between;gap:25px;margin-top:40px;padding-top:22px;color:#bcc9dc}.empty-page{padding:80px 0}.article-note{font-size:13px!important;color:var(--muted)}pre{overflow-x:auto;background:var(--ink);color:var(--paper);padding:24px;border-radius:12px;font-size:13px;line-height:1.7}code{font-family:'IBM Plex Mono',monospace;font-size:.85em}
@media(max-width:1150px){.container{width:calc(100% - 48px)}.header-row{flex-wrap:wrap}.main-nav{order:3;flex-basis:100%;justify-content:flex-start}.header-actions{margin-left:auto}.hero{gap:30px;padding:36px}.hero h1{font-size:53px}.signup-lens{padding:25px}.signup-lens h2{font-size:30px}.doc-layout{grid-template-columns:210px minmax(0,1fr);gap:35px}.blog-layout{grid-template-columns:minmax(0,1fr) 210px;gap:35px}.review-summary{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.summary-actions{grid-column:1/-1;display:flex;gap:12px;align-items:center;flex-wrap:wrap}.summary-actions p{margin:0}.summary-actions .button{margin:0}.about-layout{gap:35px;grid-template-columns:minmax(0,1fr) 260px}.resource-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:800px){.hero{grid-template-columns:minmax(0,1fr);padding:32px;gap:35px}.hero h1{font-size:51px}.signup-lens{box-shadow:7px 7px 0 var(--accent)}.signup-lens h2 br{display:none}.signup-lens ul{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 22px;margin:15px 0}.signup-lens li{display:block}.signup-lens li span{display:block;margin-bottom:8px}.scope{grid-template-columns:repeat(3,minmax(0,1fr));padding:25px 8px}.scope>a{grid-column:1/-1;text-align:left}.scope>div{display:block}.scope span{display:block;margin-top:6px}.section-head{grid-template-columns:minmax(0,1fr);gap:18px}.home-section{margin:65px 0}.method-banner{grid-template-columns:minmax(0,1fr);padding:32px;gap:25px}.article-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.doc-layout,.blog-layout,.about-layout{grid-template-columns:minmax(0,1fr);gap:30px}.toc{position:static}.blog-layout>.toc{grid-row:1}.toc a{display:inline-block;margin-right:20px;margin-bottom:14px}.publication-note{grid-row:1}.publication-note dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.publication-note dl div{margin-bottom:10px}.contact-grid{grid-template-columns:minmax(0,1fr)}.footer-grid{gap:30px;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr) minmax(0,1fr)}.rank-row{padding:24px}.rank-row dl>div{grid-template-columns:minmax(0,1fr);gap:5px}}
@media(max-width:520px){.container{width:calc(100% - 32px)}.masthead{padding-top:20px}.header-row{gap:22px}.brand{font-size:23px}.header-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%;order:2}.header-actions .button{font-size:13px}.main-nav{order:3;flex-wrap:wrap;gap:13px 19px;font-size:13px}.hero{padding:27px 23px;border-radius:17px}.hero h1{font-size:41px;letter-spacing:-.05em}.hero .lead{font-size:18px}.hero .kind{font-size:10px}.hero .byline{font-size:12px}.actions{gap:10px}.actions .button{padding:13px;font-size:13px;gap:10px}.signup-lens{padding:22px}.signup-lens h2{font-size:29px}.signup-lens ul{grid-template-columns:minmax(0,1fr)}.signup-lens li{display:grid;grid-template-columns:70px minmax(0,1fr);font-size:13px;gap:8px}.signup-lens li span{font-size:10px;margin:0}.scope{gap:18px}.scope strong{font-size:32px}.scope span{font-size:11px}.scope>a{font-size:12px}.rank-list,.article-grid,.resource-grid,.two-col{grid-template-columns:minmax(0,1fr)}.rank-row h3{font-size:30px}.rank-row>p{font-size:16px}.method-banner{padding:27px 23px}.method-banner h2{font-size:34px}.category-list>div{font-size:14px;grid-template-columns:minmax(0,1fr) 80px}.page-top{padding-top:15px}.page-top h1{font-size:39px}.page-top .lead{font-size:19px}.reading h2,.article-body h2{font-size:29px}.reading p,.reading li{font-size:17px}.review-summary{grid-template-columns:minmax(0,1fr);padding:27px 23px;gap:24px}.review-summary .score-box{padding-left:100px;min-height:120px}.review-summary .score{font-size:50px}.score-box h2{font-size:20px}.summary-actions{display:block}.summary-actions .button{margin-bottom:10px}.summary-actions p{margin-top:15px}.facts>div{grid-template-columns:minmax(0,1fr);gap:10px}.facts dd{font-size:17px}.flow{grid-template-columns:minmax(0,1fr);gap:10px}.flow li{display:flex;gap:15px;padding:18px}.flow strong{margin:0}.contact-card{padding:25px}.faq summary{font-size:17px;padding:20px 48px 20px 20px}.faq summary:after{right:18px}.answer{padding:0 20px 4px}.footer-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:25px}.footer-grid>div{grid-column:1/-1}.footer-bottom{display:block}.footer-bottom span{display:block;margin-bottom:12px}.publication-note{padding:25px}pre{padding:18px;font-size:11px}}
