1<!doctype html> 2<html lang="en" data-i18n-ready="false"> 3 <head> 4 <meta charset="utf-8" /> 5 <meta name="viewport" content="width=device-width, initial-scale=1" /> 6 <meta name="color-scheme" content="light dark" /> 7
7<script> 8 (function () { 9 try { 10 const savedTheme = localStorage.getItem('spectrue_theme'); 11 const prefersDark = window.matchMedia( 12 '(prefers-color-scheme: dark)' 13 ).matches; 14 if (savedTheme === 'dark' || (!savedTheme && prefersDark)) { 15 document.documentElement.setAttribute('data-theme', 'dark'); 16 } 17 } catch (e) {} 18 19 try { 20 const supportedLangs = [ 21 'en', 22 'uk', 23 'de', 24 'es', 25 'fr', 26 'ja', 27 'zh', 28 'ru', 29 ]; 30 const params = new URLSearchParams(location.search); 31 const urlLang = params.get('lang'); 32 const savedLang = localStorage.getItem('spectrue_lang'); 33 let detectedLang = 'en'; 34 35 if (urlLang) { 36 const code = urlLang.split('-')[0]; 37 if (supportedLangs.includes(code)) detectedLang = code; 38 } else if (savedLang && supportedLangs.includes(savedLang)) { 39 detectedLang = savedLang; 40 } else { 41 const langs = navigator.languages || [navigator.language]; 42 for (const l of langs) { 43 const code = String(l).split('-')[0]; 44 if (supportedLangs.includes(code)) { 45 detectedLang = code; 46 break; 47 } 48 } 49 } 50 51 document.documentElement.lang = detectedLang; 52 window.currentLocale = window.currentLocale || detectedLang; 53 } catch (e) {} 54 })(); 55 </script>
55 56 <title data-i18n="nav.for_reviewers">For Reviewers â Spectrue</title> 57 <link rel="stylesheet" href="/css/variables.css?v=M42h_fix17" /> 58 <link rel="stylesheet" href="/css/style.css?v=M42h_fix17" /> 59 <link rel="icon" href="/favicon.ico" type="image/x-icon" /> 60
60<script type="module" src="/js/ui_theme.js?v=M42h_fix17"></script>
60 61
61<script> 62 window.SPECTRUE = window.SPECTRUE || {}; 63 window.SPECTRUE.cfg = { assetVersion: 'M42h_fix17', firebaseConfig: { apiKey: 'AIzaSyC9DL6NDtBiZFxsTU0H-t9mrprSUmzEm9A', authDomain: 'spectrue.net', projectId: 'spectrue-v2', storageBucket: 'spectrue-v2.firebasestorage.app', messagingSenderId: '147009414005', appId: '1:147009414005:web:4afbc01f7446e3e04ce93c', measurementId: 'G-WYSC3E6P9L' }, apiBase: (location.hostname === 'localhost' || location.hostname === '127.0.0.1') ? 'http://127.0.0.1:8000' : 'https://spectrue-api-v2-147009414005.europe-west1.run.app' }; 64 </script>
64 65
65<script type="module" src="/js/legal_app.js?v=M42h_fix17"></script>
65 66 <style> 67 .audience-note { 68 background: var(--bg-surface-subtle); 69 padding: 1rem; 70 border-radius: var(--radius-md); 71 margin-bottom: 1.5rem; 72 font-style: italic; 73 color: var(--fg-muted); 74 } 75 </style> 76 </head> 77 78 <body> 79 <select id="language-select" class="lang-select-fixed"> 80 <option value="en">ð¬ð§ English</option> 81 <option value="uk">ðºð¦ УкÑаÑнÑÑка</option> 82 <option value="de">ð©ðª Deutsch</option> 83 <option value="es">ðªð¸ Español</option> 84 <option value="fr">ð«ð· Français</option> 85 <option value="ja">ð¯ðµ æ¥æ¬èª</option> 86 <option value="zh">ð¨ð³ 䏿</option> 87 <option value="ru">ð·ðº Ð ÑÑÑкий</option> 88 </select> 89 <button 90 id="theme-toggle" 91 class="icon-button" 92 aria-label="Toggle Theme" 93 style="position: fixed; top: 20px; right: 20px; z-index: 1000" 94 > 95 <svg class="icon theme-sun"> 96 <use href="/assets/icons.svg#sun"></use> 97 </svg> 98 <svg class="icon theme-moon"> 99 <use href="/assets/icons.svg#moon"></use> 100 </svg> 101 </button> 102 <div class="container"> 103 <main 104 class="standalone-content" 105 style="max-width: 800px; margin: 40px auto" 106 > 107 <header 108 class="main-header" 109 style=" 110 justify-content: center; 111 text-align: center; 112 flex-direction: column; 113 " 114 > 115 <a href="/" class="logo-link"> 116 <img 117 src="/images/logo.svg" 118 alt="Spectrue Logo" 119 class="logo" 120 style="width: 150px; height: auto; margin-bottom: 10px" 121 /> 122 </a> 123 <h1 data-i18n="nav.for_reviewers"></h1> 124 </header> 125 126 <div class="card"> 127 <div 128 class="audience-note" 129 data-i18n="for_reviewers.audience_note" 130 ></div> 131 132 <h2 data-i18n="for_reviewers.what_is_title"></h2> 133 134 <p data-i18n="for_reviewers.what_is_intro"></p> 135 136 <p data-i18n="for_reviewers.not_title"></p> 137 <ul> 138 <li data-i18n="for_reviewers.not_list1"></li> 139 <li data-i18n="for_reviewers.not_list2"></li> 140 <li data-i18n="for_reviewers.not_list3"></li> 141 <li data-i18n="for_reviewers.not_list4"></li> 142 </ul> 143 144 <h2 data-i18n="for_reviewers.philosophy_title"></h2> 145 146 <p data-i18n="for_reviewers.philosophy_intro"></p> 147 148 <ul> 149 <li data-i18n="for_reviewers.philosophy_list1"></li> 150 <li data-i18n="for_reviewers.philosophy_list2"></li> 151 <li data-i18n="for_reviewers.philosophy_list3"></li> 152 <li data-i18n="for_reviewers.philosophy_list4"></li> 153 </ul> 154 155 <div 156 class="callout" 157 style=" 158 background: var(--bg-surface-subtle); 159 border-left: 4px solid var(--color-primary); 160 padding: 1rem; 161 margin: 1rem 0; 162 border-radius: 0 var(--radius-md) var(--radius-md) 0; 163 " 164 data-i18n="for_reviewers.core_principle" 165 ></div> 166 167 <h2 data-i18n="for_reviewers.arch_title"></h2> 168 169 <h3 data-i18n="for_reviewers.pipeline_overview"></h3> 170 <ol> 171 <li data-i18n="for_reviewers.pipeline_step1"></li> 172 <li data-i18n="for_reviewers.pipeline_step2"></li> 173 <li data-i18n="for_reviewers.pipeline_step3"></li> 174 <li data-i18n="for_reviewers.pipeline_step4"></li> 175 <li data-i18n="for_reviewers.pipeline_step5"></li> 176 <li data-i18n="for_reviewers.pipeline_step6"></li> 177 </ol> 178 179 <h3 data-i18n="for_reviewers.rgba_framework"></h3> 180 <p data-i18n="for_reviewers.rgba_intro"></p> 181 <ul> 182 <li data-i18n="for_reviewers.rgba_r"></li> 183 <li data-i18n="for_reviewers.rgba_g"></li> 184 <li data-i18n="for_reviewers.rgba_b"></li> 185 <li data-i18n="for_reviewers.rgba_a"></li> 186 </ul> 187 188 <h2 data-i18n="for_reviewers.outputs_title"></h2> 189 190 <h3 data-i18n="for_reviewers.normal_behavior"></h3> 191 <ul> 192 <li data-i18n="for_reviewers.normal_list1"></li> 193 <li data-i18n="for_reviewers.normal_list2"></li> 194 <li data-i18n="for_reviewers.normal_list3"></li> 195 <li data-i18n="for_reviewers.normal_list4"></li> 196 </ul> 197 198 <h3 data-i18n="for_reviewers.limitations"></h3> 199 <ul> 200 <li data-i18n="for_reviewers.limitations_list1"></li> 201 <li data-i18n="for_reviewers.limitations_list2"></li> 202 <li data-i18n="for_reviewers.limitations_list3"></li> 203 <li data-i18n="for_reviewers.limitations_list4"></li> 204 </ul> 205 206 <h2 data-i18n="for_reviewers.opensource_title"></h2> 207 208 <p data-i18n="for_reviewers.opensource_desc"></p> 209 <ul> 210 <li data-i18n="for_reviewers.opensource_list1"></li> 211 <li data-i18n="for_reviewers.opensource_list2"></li> 212 <li data-i18n="for_reviewers.opensource_list3"></li> 213 <li data-i18n="for_reviewers.opensource_list4"></li> 214 </ul> 215 216 <div 217 class="callout" 218 style=" 219 background: var(--bg-surface-subtle); 220 border-left: 4px solid var(--color-info, var(--color-primary)); 221 padding: 1rem; 222 margin: 1rem 0; 223 border-radius: 0 var(--radius-md) var(--radius-md) 0; 224 " 225 data-i18n="for_reviewers.opensource_note" 226 ></div> 227 228 <h2 data-i18n="for_reviewers.eval_criteria_title"></h2> 229 230 <p data-i18n="for_reviewers.eval_intro"></p> 231 <ul> 232 <li data-i18n="for_reviewers.eval_list1"></li> 233 <li data-i18n="for_reviewers.eval_list2"></li> 234 <li data-i18n="for_reviewers.eval_list3"></li> 235 <li data-i18n="for_reviewers.eval_list4"></li> 236 <li data-i18n="for_reviewers.eval_list5"></li> 237 </ul> 238 239 <h2 data-i18n="for_reviewers.contact_title"></h2> 240 241 <p data-i18n="for_reviewers.contact_text"></p> 242 </div> 243 244 <footer class="main-footer"> 245 <a href="/" data-i18n="legal.back_link"></a>
246 <span>·</span> 247 <a href="/docs" data-i18n="nav.docs"></a> 248 <span>·</span> 249 <a href="/how-to-read" data-i18n="nav.how_to_read"></a> 250 <span>·</span> 251 <a href="/how-it-works" data-i18n="nav.how_it_works"></a> 252 <span>·</span> 253 <a href="/for-reviewers" data-i18n="nav.for_reviewers"></a> 254 <span>·</span> 255 <a href="/terms.html" data-i18n="legal.terms_link_short"></a> 256 <span>·</span> 257 <a href="/privacy.html" data-i18n="legal.privacy_link_short"></a> 258 <span class="copyright">© 2025 Ivan Bondarenko</span> 259 </footer> 260 </main> 261 </div> 262
262<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"dcaea4398a5d4ef7a2efcfeb089093d3","r":1,"spa":2}' crossorigin="anonymous"></script>
262 263</body> 264</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.