:root{--surface-0:oklch(97% .003 250);--surface-1:oklch(94% .005 250);--surface-2:oklch(90% .008 250);--surface-inverse:oklch(21% .015 255);--border:oklch(85% .006 250);--border-strong:oklch(62% .012 250);--text-primary:oklch(21% .015 255);--text-secondary:oklch(44% .015 255);--text-muted:oklch(52% .01 255);--text-inverse:oklch(97% .003 250);--accent:oklch(66% .19 45);--accent-hover:oklch(60% .19 45);--on-accent:oklch(20% .03 45);--accent-subtle:oklch(93% .04 45);--ok:oklch(52% .12 150);--warn:oklch(55% .13 75);--bad:oklch(50% .19 30);--font-display:"IBM Plex Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--font-text:"IBM Plex Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:"JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;--step--1:clamp(.79rem, .77rem + .12vw, .87rem);--step-0:clamp(.98rem, .94rem + .2vw, 1.1rem);--step-1:clamp(1.15rem, 1.08rem + .35vw, 1.35rem);--step-2:clamp(1.38rem, 1.26rem + .62vw, 1.72rem);--step-3:clamp(1.66rem, 1.44rem + 1.1vw, 2.28rem);--step-4:clamp(1.99rem, 1.6rem + 1.95vw, 3.1rem);--step-5:clamp(2.39rem, 1.76rem + 3.15vw, 4.15rem);--leading-tight:1.12;--leading-text:1.55;--space-3xs:.25rem;--space-2xs:.5rem;--space-xs:.75rem;--space-s:1rem;--space-m:1.5rem;--space-l:2.25rem;--space-xl:3.5rem;--space-2xl:5rem;--space-3xl:7.5rem;--radius-s:0;--radius-m:0;--shadow-1:none;--shadow-2:none;--dur-1:.12s;--dur-2:.16s;--dur-3:.2s;--ease-out:linear;--ease-inout:steps(2, end);--container:82rem;--container-text:46rem;--grid-gap:1px;--focus-ring:2px solid var(--accent);--focus-offset:2px}@media (prefers-reduced-motion:reduce){:root{--dur-1:0s;--dur-2:0s;--dur-3:0s}}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-sans-cyrillic-400-normal.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-sans-latin-400-normal.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/ibm-plex-sans-cyrillic-500-normal.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/ibm-plex-sans-latin-500-normal.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/ibm-plex-sans-cyrillic-600-normal.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/ibm-plex-sans-latin-600-normal.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/ibm-plex-sans-cyrillic-700-normal.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/ibm-plex-sans-latin-700-normal.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/jetbrains-mono-cyrillic-400-normal.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/jetbrains-mono-latin-400-normal.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/jetbrains-mono-cyrillic-700-normal.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/jetbrains-mono-latin-700-normal.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}.art-head{gap:var(--space-s);padding-top:var(--space-s);display:grid}.kicker{align-items:center;gap:var(--space-2xs);font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:.08em;text-transform:uppercase;color:var(--text-secondary);font-weight:700;display:flex}.kicker:before{content:"";background:var(--accent);width:.6em;height:.6em}.art-head h1{max-width:24ch;font-size:var(--step-4);font-weight:700;line-height:var(--leading-tight);letter-spacing:-.015em}.art-lead{max-width:58ch;font-size:var(--step-1);color:var(--text-secondary)}.art-meta{gap:var(--space-3xs) var(--space-m);padding-block:var(--space-2xs);border-block:1px solid var(--border);font-family:var(--font-mono);font-size:var(--step--1);text-transform:uppercase;color:var(--text-secondary);flex-wrap:wrap;display:flex}.art-cover{margin-block:var(--space-m);border:1px solid var(--border)}.art-cover img{width:100%}.art-cover figcaption{padding:var(--space-2xs) var(--space-s);border-top:1px solid var(--border);background:var(--surface-1);font-family:var(--font-mono);font-size:var(--step--1);color:var(--text-muted)}.toc{max-width:var(--container-text);margin-block:var(--space-l);padding:var(--space-m);border:1px solid var(--border);background:var(--surface-1)}.toc-title{font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:.08em;text-transform:uppercase;color:var(--text-secondary);font-weight:700}.toc ol{margin-top:var(--space-s);padding:0;list-style:none}.toc li:not(:last-child){border-bottom:1px solid var(--border)}.toc a{gap:var(--space-2xs);padding-block:var(--space-2xs);transition:background-color var(--dur-1) var(--ease-out), color var(--dur-1) var(--ease-out);grid-template-columns:3ch minmax(0,1fr);font-weight:500;text-decoration:none;display:grid}.toc-idx{font-family:var(--font-mono);color:var(--text-muted)}.toc a:hover{background:var(--surface-inverse);color:var(--text-inverse)}.toc a:hover .toc-idx{color:var(--accent)}.article-body{padding-block:var(--space-m) var(--space-xl)}.article-body>*{max-width:var(--container-text)}.article-body>.wide{max-width:none}.article-body p{margin-bottom:var(--space-s)}.article-body p strong,.article-body li strong{font-weight:600}.article-body p a,.article-body li a{color:inherit;text-decoration:underline 1px;text-decoration-color:var(--accent);text-underline-offset:.2em;transition:color var(--dur-1) var(--ease-out)}.article-body p a:hover,.article-body li a:hover{color:var(--accent-hover)}.article-body h2{padding-top:var(--space-2xs);margin-top:var(--space-xl);margin-bottom:var(--space-m);border-top:2px solid var(--text-primary);font-size:var(--step-3);font-weight:700;line-height:var(--leading-tight);letter-spacing:-.01em}.article-body>h2:first-child{margin-top:0}.article-body h3{margin-top:var(--space-m);margin-bottom:var(--space-2xs);font-size:var(--step-1);font-weight:600;line-height:var(--leading-tight)}.article-body ul:not([class]),.article-body ol:not([class]){margin-bottom:var(--space-s)}.article-body ul:not([class]){padding-left:0;list-style:none}.article-body ul:not([class])>li{padding-left:1.6em;padding-block:var(--space-3xs);position:relative}.article-body ul:not([class])>li:before{content:"+";font-family:var(--font-mono);color:var(--accent);font-weight:700;position:absolute;left:0}.article-body ol:not([class]){padding-left:1.6em}.article-body ol:not([class])>li{padding-block:var(--space-3xs)}.article-body ol:not([class])>li::marker{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--text-muted);font-weight:700}.article-body blockquote{margin-block:var(--space-m);padding:var(--space-s) var(--space-m);border:1px solid var(--border);border-left:3px solid var(--accent);background:var(--surface-1);color:var(--text-secondary)}.article-body blockquote p:last-child{margin-bottom:0}.article-body figure{margin-block:var(--space-m);border:1px solid var(--border)}.article-body figure img{width:100%}.article-body figcaption{padding:var(--space-2xs) var(--space-s);border-top:1px solid var(--border);background:var(--surface-1);font-family:var(--font-mono);font-size:var(--step--1);color:var(--text-muted)}.article-body hr{border:none;border-top:1px solid var(--border);margin-block:var(--space-l)}.article-body code{font-family:var(--font-mono);background:var(--surface-1);padding:.1em .35em;font-size:.9em}.article-body pre{background:var(--surface-1);border:1px solid var(--border);padding:var(--space-s);margin-bottom:var(--space-s);font-size:var(--step--1);overflow-x:auto}.article-body pre code{background:0 0;padding:0}.article-body table{margin-block:var(--space-m);border:1px solid var(--border)}@media (width<=980px){.article-body>table{display:block;overflow-x:auto}}.rating-note{font-size:var(--step--1);color:var(--text-muted);margin-top:var(--space-2xs)}@media (width<=700px){.article-body table th:first-child,.article-body table td:first-child,.table-scroll th:first-child,.table-scroll td:first-child{z-index:2;border-right:1px solid var(--border-strong);position:sticky;left:0}.article-body table th:first-child:after,.article-body table td:first-child:after,.table-scroll th:first-child:after,.table-scroll td:first-child:after{content:"";background:linear-gradient(to right, var(--border), transparent);pointer-events:none;width:.7rem;position:absolute;top:0;bottom:0;right:-.7rem}}.rating-table{min-width:58rem}.rating-table th[scope=row],.rating-table thead th:first-child{z-index:2;border-right:1px solid var(--border-strong);min-width:13rem;position:sticky;left:0}.rating-table thead th:first-child{z-index:3}@media (width<=480px){.rating-table th[scope=row],.rating-table thead th:first-child{min-width:8.5rem}}.rating-table th[scope=row]:after,.rating-table thead th:first-child:after{content:"";background:linear-gradient(to right, var(--border), transparent);pointer-events:none;width:.7rem;position:absolute;top:0;bottom:0;right:-.7rem}.rating-table .sys-name{font-family:var(--font-text);font-size:var(--step-0);font-weight:600}.rating-table .total{font-family:var(--font-mono);font-weight:700;font-size:var(--step-2);line-height:var(--leading-tight);white-space:nowrap}.rating-table .total small{font-size:var(--step--1);color:var(--text-muted);font-weight:400}.rating-table tr.leader th,.rating-table tr.leader td{border-top:2px solid var(--accent);border-bottom:2px solid var(--accent)}.rating-table tr.leader th{border-left:2px solid var(--accent)}.rating-table tr.leader td:last-child{border-right:2px solid var(--accent)}.vendors{gap:var(--grid-gap);border:1px solid var(--border);background:var(--border);display:grid}.vendor{gap:var(--space-s);padding:var(--space-m);background:var(--surface-0);display:grid}.vendor:nth-child(2n){background:var(--surface-1)}.vendor-head{align-items:baseline;gap:var(--space-2xs) var(--space-s);flex-wrap:wrap;display:flex}.vendor-idx{font-family:var(--font-mono);color:var(--text-muted);font-weight:700}.vendor-head h3{font-size:var(--step-2);font-weight:700;line-height:var(--leading-tight);margin:0}.vendor-score{font-family:var(--font-mono);font-weight:700;font-size:var(--step-3);line-height:var(--leading-tight);white-space:nowrap;margin-left:auto}.vendor-score small{font-size:var(--step--1);color:var(--text-muted);font-weight:400}.vendor>p{max-width:var(--container-text);color:var(--text-secondary)}.pm-grid{gap:var(--space-m);display:grid}@media (width>=700px){.pm-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.pm h4{margin-bottom:var(--space-2xs);font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:.07em;text-transform:uppercase;color:var(--text-secondary);font-weight:700}.pm ul{gap:var(--space-3xs);display:grid}.pm li{gap:var(--space-2xs);grid-template-columns:1.6ch minmax(0,1fr);display:grid}.pm li:before{font-family:var(--font-mono);font-weight:700}.pm--plus li:before{content:"+";color:var(--ok)}.pm--minus li:before{content:"−";color:var(--bad)}.method-list{max-width:var(--container-text);gap:var(--grid-gap);border:1px solid var(--border);background:var(--border);counter-reset:method;margin-block:var(--space-s);padding:0;list-style:none;display:grid}.method-list li{gap:var(--space-s);padding:var(--space-s) var(--space-m);background:var(--surface-0);grid-template-columns:4ch minmax(0,1fr);display:grid}.method-list li:nth-child(2n){background:var(--surface-1)}.method-list li:before{counter-increment:method;content:"0" counter(method);font-family:var(--font-mono);color:var(--text-muted);font-weight:700}.method-list b,.method-list strong{font-weight:600}.faq{max-width:var(--container-text);border:1px solid var(--border)}.faq details:not(:last-child){border-bottom:1px solid var(--border)}.faq summary{gap:var(--space-s);padding:var(--space-s) var(--space-m);cursor:pointer;transition:background-color var(--dur-1) var(--ease-out);grid-template-columns:3.5ch minmax(0,1fr) auto;align-items:baseline;font-weight:600;list-style:none;display:grid}.faq summary::-webkit-details-marker{display:none}.faq-idx{font-family:var(--font-mono);font-size:var(--step--1);color:var(--text-muted);font-weight:700}.faq-marker{font-family:var(--font-mono);font-size:var(--step-1);color:var(--accent);transition:transform var(--dur-2) var(--ease-inout);align-self:center;font-weight:700;line-height:1}.faq summary:hover{background:var(--surface-1)}.faq details[open] .faq-marker{transform:rotate(45deg)}.faq details[open] summary{border-bottom:1px solid var(--border);background:var(--surface-1)}.faq .faq-body{padding:var(--space-s) var(--space-m);color:var(--text-secondary)}.faq .faq-body p:not(:last-child){margin-bottom:var(--space-s)}.author{max-width:var(--container-text);gap:var(--grid-gap);margin-top:var(--space-xl);border:1px solid var(--border);background:var(--border);grid-template-columns:auto minmax(0,1fr);display:grid}.author-mark{min-width:5rem;padding:var(--space-m);background:var(--surface-inverse);color:var(--text-inverse);font-family:var(--font-mono);font-size:var(--step-2);justify-content:center;align-items:center;font-weight:700;display:flex}.author-body{padding:var(--space-m);background:var(--surface-1)}.author-body .author-label{font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);font-weight:700}.author-body .author-name{font-size:var(--step-1);font-weight:700}.author-body p{margin-top:var(--space-2xs);color:var(--text-secondary)}@media (width<=480px){.author{grid-template-columns:minmax(0,1fr)}.author-mark{min-height:3.5rem;padding:var(--space-s)}}.related{margin-top:var(--space-xl)}.article-body .module-head h2{border-top:none;margin:0;padding-top:0}.article-body .author-mark,.article-body .author-body p,.article-body .faq-body p:last-child{margin-bottom:0}*,:before,:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{-webkit-font-smoothing:antialiased;flex-direction:column;min-height:100dvh;display:flex}main{flex:1;width:100%}img,picture,svg,video{max-width:100%;height:auto;display:block}input,button,textarea,select{font:inherit}h1,h2,h3,h4,h5{overflow-wrap:break-word;text-wrap:balance}p,li,figcaption{overflow-wrap:break-word}ul[class],ol[class]{padding:0;list-style:none}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}body{background:var(--surface-0);color:var(--text-primary);font-family:var(--font-text);font-size:var(--step-0);line-height:var(--leading-text)}::selection{background:var(--accent);color:var(--on-accent)}a{color:inherit}:focus-visible{outline:var(--focus-ring);outline-offset:var(--focus-offset)}.container{max-width:var(--container);padding-inline:var(--space-s);margin-inline:auto}@media (width>=768px){.container{padding-inline:var(--space-m)}}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{top:var(--space-2xs);z-index:100;padding:var(--space-2xs) var(--space-s);background:var(--accent);color:var(--on-accent);font-family:var(--font-mono);font-size:var(--step--1);text-transform:uppercase;font-weight:700;text-decoration:none;position:absolute;left:-100vw}.skip-link:focus-visible{left:var(--space-2xs)}.meta-line{font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:.05em;text-transform:uppercase;color:var(--text-secondary)}.num{font-variant-numeric:tabular-nums lining-nums;font-feature-settings:"tnum" 1, "lnum" 1}.arr{color:var(--accent);transition:transform var(--dur-1) var(--ease-out);display:inline-block;transform:translate(0)}.site-header{border-top:3px solid var(--accent);border-bottom:1px solid var(--border);background:var(--surface-0)}.header-grid{flex-wrap:wrap;align-items:stretch;display:flex}.brand{align-items:center;gap:var(--space-2xs);padding:var(--space-xs) var(--space-s);text-decoration:none;display:flex}.brand-mark{background:var(--accent);width:.6em;height:.6em}.brand-word{font-family:var(--font-display);font-weight:700;font-size:var(--step-1);letter-spacing:.02em;text-transform:uppercase;line-height:1}.brand-cursor{background:var(--text-primary);width:.45ch;height:1.05em;animation:1.2s step-end infinite blink}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.site-nav{flex:auto;min-width:0;display:flex}.nav-list{gap:var(--grid-gap);background:var(--border);border-left:1px solid var(--border);scrollbar-width:none;flex:auto;display:flex;overflow-x:auto}.nav-list::-webkit-scrollbar{display:none}.nav-list li{flex:auto;display:flex}.nav-list a{padding:var(--space-xs) var(--space-s);background:var(--surface-0);color:var(--text-secondary);font-size:var(--step--1);letter-spacing:.06em;text-transform:uppercase;text-align:center;white-space:nowrap;transition:background-color var(--dur-1) var(--ease-out), color var(--dur-1) var(--ease-out);flex:auto;justify-content:center;align-items:center;font-weight:600;text-decoration:none;display:flex}.nav-list a:hover{background:var(--surface-inverse);color:var(--text-inverse)}.nav-list a[aria-current]{background:var(--accent);color:var(--on-accent)}.nav-list a[aria-current]:hover{background:var(--accent-hover)}.header-meta{padding:var(--space-xs) var(--space-s);border-left:1px solid var(--border);font-family:var(--font-mono);font-size:var(--step--1);color:var(--text-secondary);white-space:nowrap;align-items:center;display:none}@media (width>=900px){.header-meta{display:flex}}.mobile-nav{display:none}@media (width<=700px){.site-header{position:relative}.site-nav{display:none}.brand{flex:auto}.mobile-nav{display:block}.mobile-nav summary{align-items:center;gap:var(--space-2xs);height:100%;padding:var(--space-xs) var(--space-s);border-left:1px solid var(--border);cursor:pointer;font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:.08em;text-transform:uppercase;color:var(--text-primary);user-select:none;transition:background-color var(--dur-1) var(--ease-out);font-weight:700;list-style:none;display:flex}.mobile-nav summary::-webkit-details-marker{display:none}.mobile-nav[open] summary{background:var(--surface-inverse);color:var(--text-inverse)}.burger{flex-direction:column;gap:3px;display:inline-flex}.burger i{width:15px;height:2px;transition:transform var(--dur-1) var(--ease-out), opacity var(--dur-1) var(--ease-out);background:currentColor;display:block}.mobile-nav[open] .burger i:first-child{transform:translateY(5px)rotate(45deg)}.mobile-nav[open] .burger i:nth-child(2){opacity:0}.mobile-nav[open] .burger i:nth-child(3){transform:translateY(-5px)rotate(-45deg)}.mobile-panel{z-index:50;background:var(--surface-0);border-bottom:3px solid var(--accent);position:absolute;top:100%;left:0;right:0}.mobile-panel li{border-top:1px solid var(--border)}.mobile-panel a{justify-content:space-between;align-items:center;gap:var(--space-s);padding:var(--space-s) clamp(var(--space-s), 4vw, var(--space-l));font-size:var(--step-0);letter-spacing:.04em;text-transform:uppercase;color:var(--text-primary);background:var(--surface-0);font-weight:600;text-decoration:none;display:flex}.mobile-panel a:hover{background:var(--surface-inverse);color:var(--text-inverse)}.mobile-panel a[aria-current]{background:var(--accent);color:var(--on-accent)}.mobile-code{font-family:var(--font-mono);font-size:var(--step--1);color:currentColor;opacity:.65;font-weight:400}}.masthead{border-bottom:1px solid var(--border);background:var(--surface-1)}.masthead .container{align-items:baseline;gap:var(--space-3xs) var(--space-m);padding-block:var(--space-2xs);flex-wrap:wrap;display:flex}.masthead-title{font-size:var(--step--1);letter-spacing:.05em;text-transform:uppercase;font-weight:600}.masthead-tags{font-family:var(--font-mono);font-size:var(--step--1);color:var(--text-muted)}.board{gap:var(--grid-gap);background:var(--border);border:1px solid var(--border);grid-template-columns:repeat(12,minmax(0,1fr));display:grid}.board>*{background:var(--surface-0);grid-column:1/-1;min-width:0}.module{margin-block:var(--space-xl)}.module-head{justify-content:space-between;align-items:baseline;gap:var(--space-2xs) var(--space-s);margin-bottom:var(--space-s);padding-top:var(--space-2xs);border-top:2px solid var(--text-primary);flex-wrap:wrap;display:flex}.module-head h2{align-items:center;gap:var(--space-2xs);font-size:var(--step-1);letter-spacing:.04em;text-transform:uppercase;font-weight:700;display:flex}.module-head h2:before{content:"";background:var(--accent);flex:none;width:.5em;height:.5em}.module-meta{font-family:var(--font-mono);font-size:var(--step--1);color:var(--text-muted);text-transform:uppercase}.hero-board{margin-block:var(--space-m) 0}@media (width>=900px){.hero-board .lead{grid-column:span 8}.hero-board .stat-stack{grid-column:span 4}}.lead-link{height:100%;transition:background-color var(--dur-1) var(--ease-out), color var(--dur-1) var(--ease-out);flex-direction:column;text-decoration:none;display:flex}.lead-body{gap:var(--space-s);padding:var(--space-m);flex-direction:column;flex:auto;display:flex}.lead-title{font-size:var(--step-4);font-weight:700;line-height:var(--leading-tight);letter-spacing:-.015em}.lead-text{max-width:58ch;color:var(--text-secondary);transition:color var(--dur-1) var(--ease-out)}.lead-more{font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:.05em;text-transform:uppercase;margin-top:auto;font-weight:700}.lead-cover{border-top:1px solid var(--border)}.lead-cover img{width:100%}.lead-link:hover{background:var(--surface-inverse);color:var(--text-inverse)}.lead-link:hover .lead-text,.lead-link:hover .meta-line{color:var(--text-inverse)}.lead-link:hover .arr,.feed a:hover .arr,.card-link:hover .arr,.rubric:hover .arr,.btn:hover .arr{transform:translate(.4ch)}.stat-stack{gap:var(--grid-gap);background:var(--border);grid-auto-rows:1fr;display:grid}.stat{gap:var(--space-3xs);padding:var(--space-m);background:var(--surface-1);flex-direction:column;display:flex}.stat:nth-child(2){background:var(--surface-0)}.stat dt{font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:.07em;text-transform:uppercase;color:var(--text-secondary)}.stat dd{font-family:var(--font-mono);font-weight:700;font-size:var(--step-5);line-height:var(--leading-tight)}.stat dd.stat-note{font-family:var(--font-mono);font-size:var(--step--1);text-transform:uppercase;color:var(--text-muted);font-weight:400}.stat--accent{background:var(--accent);color:var(--on-accent)}.stat--accent dt,.stat--accent dd.stat-note{color:var(--on-accent)}.feed{border:1px solid var(--border)}.feed li:not(:last-child){border-bottom:1px solid var(--border)}.feed a{gap:var(--space-2xs) var(--space-s);padding:var(--space-xs) var(--space-s);background:var(--surface-0);transition:background-color var(--dur-1) var(--ease-out), color var(--dur-1) var(--ease-out);grid-template-columns:3.5ch 4ch minmax(0,1fr) auto;align-items:baseline;text-decoration:none;display:grid}.feed li:nth-child(2n) a{background:var(--surface-1)}.feed-idx,.feed-date{font-family:var(--font-mono);font-size:var(--step--1);color:var(--text-muted)}.feed-code{font-family:var(--font-mono);font-size:var(--step--1);color:var(--text-secondary);font-weight:700}.feed-title{font-weight:500}.feed-title .arr{opacity:0;transition:opacity var(--dur-1) var(--ease-out), transform var(--dur-1) var(--ease-out);margin-left:.35ch}.feed a:hover{background:var(--surface-inverse);color:var(--text-inverse)}.feed a:hover .feed-idx{color:var(--accent)}.feed a:hover .feed-code,.feed a:hover .feed-date{color:var(--text-inverse)}.feed a:hover .feed-title .arr{opacity:1}@media (width<=700px){.feed a{grid-template-columns:3.5ch 4ch minmax(0,1fr);grid-template-areas:"idx code date""title title title"}.feed-idx{grid-area:idx}.feed-code{grid-area:code}.feed-date{grid-area:date;justify-self:end}.feed-title{grid-area:title}}@media (width>=900px){.rate-table-cell{grid-column:span 8}.rate-cta{grid-column:span 4}}.rate-table-cell{padding:var(--space-m)}.rate-cta{gap:var(--space-s);padding:var(--space-m);background:var(--accent-subtle);flex-direction:column;display:flex}.rate-cta h3{font-size:var(--step-1);font-weight:700;line-height:var(--leading-tight)}.rate-cta p,.rate-cta .meta-line{color:var(--text-secondary)}.btn{padding:var(--space-xs) var(--space-m);background:var(--accent);color:var(--on-accent);font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:.06em;text-transform:uppercase;transition:background-color var(--dur-1) var(--ease-out);align-items:center;gap:1ch;margin-top:auto;font-weight:700;text-decoration:none;display:inline-flex}.btn .arr{color:var(--on-accent)}.btn:hover{background:var(--accent-hover)}.table-scroll{border:1px solid var(--border);overflow-x:auto}.scroll-hint{margin-top:var(--space-2xs);font-family:var(--font-mono);font-size:var(--step--1);text-transform:uppercase;color:var(--text-muted);display:none}@media (width<=980px){.scroll-hint{display:block}}table{border-collapse:separate;border-spacing:0;width:100%;font-size:var(--step--1);font-variant-numeric:tabular-nums lining-nums}caption{text-align:left}th,td{padding:var(--space-2xs) var(--space-s);text-align:left;vertical-align:top;background:var(--surface-0);border-bottom:1px solid var(--border)}thead th{font-family:var(--font-mono);font-weight:700;font-size:var(--step--1);letter-spacing:.05em;text-transform:uppercase;color:var(--text-secondary);background:var(--surface-2);white-space:nowrap}tbody tr:nth-child(2n) th,tbody tr:nth-child(2n) td{background:var(--surface-1)}tbody tr:last-child th,tbody tr:last-child td{border-bottom:none}.mini-rating .place{font-family:var(--font-mono);color:var(--text-muted);width:3ch}.mini-rating .sys{font-weight:600}.score-num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-weight:700}.seg{width:3.4rem;height:.55rem;margin-top:var(--space-3xs);background-image:linear-gradient(to right, var(--text-secondary) var(--fill), var(--surface-2) var(--fill));-webkit-mask-image:repeating-linear-gradient(to right, var(--text-primary) 0 .6rem, transparent .6rem .7rem);mask-image:repeating-linear-gradient(to right, var(--text-primary) 0 .6rem, transparent .6rem .7rem);display:block}.seg--accent{background-image:linear-gradient(to right, var(--accent) var(--fill), var(--surface-2) var(--fill))}.badge{margin-top:var(--space-3xs);background:var(--accent);color:var(--on-accent);font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:.04em;text-transform:uppercase;white-space:nowrap;padding:.15em .5em;font-weight:700;display:inline-block}.rubric-grid{gap:var(--grid-gap);background:var(--border);border:1px solid var(--border);grid-template-columns:minmax(0,1fr);grid-auto-rows:1fr;display:grid}@media (width>=640px){.rubric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.rubric-grid .rubric:last-child:nth-child(odd){grid-column:1/-1}}@media (width>=1000px){.rubric-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.rubric-grid .rubric:last-child:nth-child(odd){grid-column:auto}}.rubric{gap:var(--space-2xs);min-height:8.5rem;padding:var(--space-m);background:var(--surface-0);transition:background-color var(--dur-1) var(--ease-out), color var(--dur-1) var(--ease-out);flex-direction:column;text-decoration:none;display:flex}.rubric:nth-child(2n){background:var(--surface-1)}.rubric-code{justify-content:space-between;gap:var(--space-s);font-family:var(--font-mono);font-size:var(--step--1);color:var(--text-secondary);font-weight:700;display:flex}.rubric-count{color:var(--text-muted);font-weight:400}.rubric-name{font-size:var(--step-1);font-weight:600;line-height:var(--leading-tight)}.rubric .arr{margin-top:auto}.rubric:hover{background:var(--surface-inverse);color:var(--text-inverse)}.rubric:hover .rubric-code,.rubric:hover .rubric-count{color:var(--text-inverse)}.crumbs{margin-block:var(--space-s);font-family:var(--font-mono);font-size:var(--step--1);text-transform:uppercase}.crumbs ol{gap:var(--space-2xs);color:var(--text-muted);flex-wrap:wrap;padding:0;list-style:none;display:flex}.crumbs li+li:before{content:"/";margin-right:var(--space-2xs)}.crumbs a{color:var(--text-secondary);text-decoration:none}.crumbs a:hover{text-underline-offset:.2em;text-decoration:underline}.crumbs [aria-current]{color:var(--text-primary)}.page-head{gap:var(--space-s);padding-block:var(--space-m) var(--space-l);border-top:2px solid var(--text-primary);display:grid}.page-head h1{font-size:var(--step-5);font-weight:700;line-height:var(--leading-tight);letter-spacing:-.02em;text-transform:uppercase}.page-desc{max-width:52ch;font-size:var(--step-1);color:var(--text-secondary)}.card{position:relative}@media (width>=900px){.cat-board .card{grid-column:span 6}.cat-board .card--feature{grid-column:span 12}}.card-link{gap:var(--space-s);height:100%;padding:var(--space-m);transition:background-color var(--dur-1) var(--ease-out), color var(--dur-1) var(--ease-out);flex-direction:column;text-decoration:none;display:flex}.card-idx{top:var(--space-s);right:var(--space-s);font-family:var(--font-mono);font-weight:700;font-size:var(--step-4);color:var(--surface-2);pointer-events:none;transition:color var(--dur-1) var(--ease-out);line-height:1;position:absolute}.card-title{max-width:26ch;font-size:var(--step-2);font-weight:600;line-height:var(--leading-tight)}.card-excerpt{max-width:58ch;color:var(--text-secondary);transition:color var(--dur-1) var(--ease-out)}.card-more{font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:.05em;text-transform:uppercase;margin-top:auto;font-weight:700}.card-link:hover{background:var(--surface-inverse);color:var(--text-inverse)}.card-link:hover .card-excerpt,.card-link:hover .meta-line{color:var(--text-inverse)}.card:hover .card-idx{color:var(--border-strong)}.card--feature .card-link{padding:0}.feature-cover{border-bottom:1px solid var(--border)}.feature-cover img{object-fit:cover;width:100%;height:100%}.feature-body{gap:var(--space-s);padding:var(--space-m);flex-direction:column;flex:auto;display:flex}.feature-body .card-title{font-size:var(--step-3);max-width:none}@media (width>=900px){.card--feature .card-link{grid-template-columns:minmax(0,7fr) minmax(0,5fr);display:grid}.feature-cover{border-right:1px solid var(--border);border-bottom:none}}.empty{color:var(--text-muted);padding-block:var(--space-l) var(--space-2xl)}.site-footer{margin-top:var(--space-2xl);background:var(--surface-inverse);color:var(--text-inverse)}.footer-grid{gap:var(--space-l) var(--space-m);padding-block:var(--space-xl);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}@media (width>=900px){.footer-grid{grid-template-columns:minmax(0,2fr) repeat(3,minmax(0,1fr))}}.footer-brand{align-items:center;gap:var(--space-2xs);text-decoration:none;display:flex}.footer-brand .brand-word{font-size:var(--step-2)}.footer-tagline{margin-top:var(--space-s);opacity:.75;max-width:30ch}.footer-col-title{margin-bottom:var(--space-s);font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:.08em;text-transform:uppercase;opacity:.7;font-weight:700}.footer-list li{border-bottom:1px solid var(--border-strong)}.footer-list a{padding-block:var(--space-2xs);transition:color var(--dur-1) var(--ease-out);text-decoration:none;display:block}.footer-list a:hover{color:var(--accent)}.footer-bottom{border-top:1px solid var(--border-strong)}.footer-bottom .container{justify-content:space-between;gap:var(--space-2xs) var(--space-m);padding-block:var(--space-s);font-family:var(--font-mono);font-size:var(--step--1);text-transform:uppercase;opacity:.75;flex-wrap:wrap;display:flex}
