@font-face{font-family:Montserrat;font-style:normal;font-display:swap;font-weight:300;src:url(/assets/montserrat-cyrillic-ext-300-normal-AjyHH-nA.woff2) format("woff2"),url(/assets/montserrat-cyrillic-ext-300-normal-Ctr4ZZfs.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Montserrat;font-style:normal;font-display:swap;font-weight:300;src:url(/assets/montserrat-cyrillic-300-normal-DyQnI4ta.woff2) format("woff2"),url(/assets/montserrat-cyrillic-300-normal-BVP0yxL_.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Montserrat;font-style:normal;font-display:swap;font-weight:300;src:url(/assets/montserrat-vietnamese-300-normal-BIrGnxdC.woff2) format("woff2"),url(/assets/montserrat-vietnamese-300-normal-F69v1y7v.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Montserrat;font-style:normal;font-display:swap;font-weight:300;src:url(/assets/montserrat-latin-ext-300-normal-DiDe5dVi.woff2) format("woff2"),url(/assets/montserrat-latin-ext-300-normal-BCbSOsYO.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Montserrat;font-style:normal;font-display:swap;font-weight:300;src:url(/assets/montserrat-latin-300-normal-BgP24wlQ.woff2) format("woff2"),url(/assets/montserrat-latin-300-normal-sTRdVzlf.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Montserrat;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/montserrat-cyrillic-ext-400-normal-Xqov12YL.woff2) format("woff2"),url(/assets/montserrat-cyrillic-ext-400-normal-DRPPeomZ.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Montserrat;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/montserrat-cyrillic-400-normal-BPq32Q8K.woff2) format("woff2"),url(/assets/montserrat-cyrillic-400-normal-jEs4Tk-Z.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Montserrat;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/montserrat-vietnamese-400-normal-D4oHqQTd.woff2) format("woff2"),url(/assets/montserrat-vietnamese-400-normal-BeEscFYY.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Montserrat;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/montserrat-latin-ext-400-normal-B8bwfy6Y.woff2) format("woff2"),url(/assets/montserrat-latin-ext-400-normal-BffdBkAA.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Montserrat;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/montserrat-latin-400-normal-BLhwKU8k.woff2) format("woff2"),url(/assets/montserrat-latin-400-normal-xItZbAXg.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Montserrat;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/montserrat-cyrillic-ext-500-normal-11xBT7e1.woff2) format("woff2"),url(/assets/montserrat-cyrillic-ext-500-normal-DOzfAZ45.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Montserrat;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/montserrat-cyrillic-500-normal-T0SG181k.woff2) format("woff2"),url(/assets/montserrat-cyrillic-500-normal-CyGtXmN9.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Montserrat;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/montserrat-vietnamese-500-normal-NT-t8RG1.woff2) format("woff2"),url(/assets/montserrat-vietnamese-500-normal-DpeZlV_K.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Montserrat;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/montserrat-latin-ext-500-normal-BKtbrd6n.woff2) format("woff2"),url(/assets/montserrat-latin-ext-500-normal-DWPqqZgs.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Montserrat;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/montserrat-latin-500-normal-DRFEGfly.woff2) format("woff2"),url(/assets/montserrat-latin-500-normal-Dok2oTci.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--text: #eef4ef;--text-dim: #a9c0b0;--accent: #9ed9a8;--status-detected: #e8c07a;--status-not-detected: #9ed9a8;--status-unavailable: #b8c2bb;--panel-bg: rgba(8, 32, 20, .55);--panel-bg-strong: rgba(8, 32, 20, .72);--panel-border: rgba(255, 255, 255, .12);--panel-radius: 20px;--panel-blur: 18px;--panel-shadow: 0 18px 48px rgba(0, 0, 0, .38);--field-bg: rgba(255, 255, 255, .06);--motion: .24s;--ease: cubic-bezier(.22, .61, .36, 1);--vh: 100vh;--chin: #021308;--bg-aspect: .562799;--logo-bottom-delta: .0185973;--logo-height-frac: .0712009}@supports (height: 100dvh){:root{--vh: 100dvh}}:root{--bg-vh: 100vh}@supports (height: 100lvh){:root{--bg-vh: 100lvh}}@media(orientation:portrait){:root{--bg-aspect: 1.7768332;--logo-bottom-delta: .0119617;--logo-height-frac: .0454545}}:root{--bg-display-height: max(calc(100vw * var(--bg-aspect)), var(--bg-vh));--logo-height: calc(var(--bg-display-height) * var(--logo-height-frac));--logo-bottom: calc(var(--bg-vh) * .5 + var(--bg-display-height) * var(--logo-bottom-delta));--logo-gap: clamp(20px, calc(var(--logo-height) * .62), 52px)}*{box-sizing:border-box}html{background-color:var(--chin)}html,body,#root{height:100%;margin:0;padding:0}body{font-family:Montserrat,system-ui,-apple-system,Segoe UI,sans-serif;font-weight:400;color:var(--text);background-color:var(--chin);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}button,input,select{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:6px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}.screen{position:relative;min-height:var(--vh);width:100%;overflow:hidden}.bg{position:fixed;top:0;left:0;right:0;height:var(--bg-vh);z-index:0;background-image:image-set(url(/bg-desktop.webp) type("image/webp"),url(/bg-desktop.jpg) type("image/jpeg"));background-image:-webkit-image-set(url(/bg-desktop.webp) type("image/webp"),url(/bg-desktop.jpg) type("image/jpeg"));background-size:cover;background-position:center;background-repeat:no-repeat}@media(orientation:portrait){.bg{background-image:image-set(url(/bg-mobile.webp) type("image/webp"),url(/bg-mobile.jpg) type("image/jpeg"));background-image:-webkit-image-set(url(/bg-mobile.webp) type("image/webp"),url(/bg-mobile.jpg) type("image/jpeg"))}}.landing{position:relative;z-index:1;min-height:var(--vh)}.landing__block{position:absolute;top:calc(var(--logo-bottom) + var(--logo-gap));left:50%;transform:translate(-50%);width:min(560px,86vw);text-align:center;animation:rise var(--motion) var(--ease) both}.landing__tagline{margin:0;font-size:clamp(16px,1.15vw + 13px,18px);font-weight:300;line-height:1.5;letter-spacing:.02em;color:var(--text);text-shadow:0 2px 14px rgba(0,0,0,.45)}.landing__actions{margin-top:26px}.footnote{position:fixed;z-index:1;left:50%;transform:translate(-50%);bottom:max(18px,env(safe-area-inset-bottom));margin:0;padding:0 16px;font-size:12px;font-weight:300;letter-spacing:.02em;color:var(--text-dim);text-align:center;text-shadow:0 1px 10px rgba(0,0,0,.5)}.pill{display:inline-flex;align-items:center;justify-content:center;height:44px;padding:0 30px;border-radius:22px;border:1px solid rgba(158,217,168,.55);background:#9ed9a80f;color:var(--text);font-size:15px;font-weight:400;letter-spacing:.02em;text-decoration:none;cursor:pointer;transition:background var(--motion) var(--ease),border-color var(--motion) var(--ease),transform var(--motion) var(--ease)}.pill:hover{background:#9ed9a82e;border-color:var(--accent)}.pill:active{transform:translateY(1px)}.pill--ghost{border-color:#ffffff38;background:transparent}.pill--ghost:hover{background:#ffffff14;border-color:#fff6}.pill:disabled{opacity:.5;cursor:default}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10;display:flex;align-items:center;justify-content:center;padding:24px;background:#020c078c;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);animation:fade var(--motion) var(--ease) both}.screen:has(.overlay) .landing__block,.screen:has(.overlay) .footnote{opacity:0;transition:opacity var(--motion) var(--ease)}.dialog{position:relative;width:min(560px,100%);max-height:calc(var(--vh) - 48px);overflow-y:auto;padding:26px 26px 24px;border-radius:var(--panel-radius);border:1px solid var(--panel-border);background:var(--panel-bg);backdrop-filter:blur(var(--panel-blur));-webkit-backdrop-filter:blur(var(--panel-blur));box-shadow:var(--panel-shadow);animation:rise var(--motion) var(--ease) both}.dialog__head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:18px}.dialog__title{margin:0;font-size:21px;font-weight:500;line-height:1.3;letter-spacing:.01em}.dialog__close{flex:none;width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;border:1px solid var(--panel-border);background:transparent;color:var(--text-dim);font-size:17px;line-height:1;cursor:pointer;transition:color var(--motion) var(--ease),border-color var(--motion) var(--ease),background var(--motion) var(--ease)}.dialog__close:hover{color:var(--text);border-color:#ffffff59;background:#ffffff12}.dialog__actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:22px}.drop{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;width:100%;min-height:132px;padding:20px;border-radius:16px;border:1px dashed rgba(158,217,168,.42);background:var(--field-bg);color:var(--text);font-size:15px;font-weight:400;text-align:center;cursor:pointer;transition:border-color var(--motion) var(--ease),background var(--motion) var(--ease)}.drop:hover,.drop--over{border-color:var(--accent);background:#9ed9a81f}.drop__hint{font-size:13px;font-weight:300;color:var(--text-dim)}.requirements{margin-top:20px}.requirements__title{margin:0 0 10px;font-size:14px;font-weight:500;letter-spacing:.01em;color:var(--text)}.requirements__list{margin:0;padding-left:18px;color:var(--text-dim);font-size:13px;font-weight:300;line-height:1.65}.field{display:block;margin-bottom:14px}.field__label{display:block;margin-bottom:6px;font-size:13px;font-weight:400;color:var(--text-dim);letter-spacing:.01em}.field__control{width:100%;height:42px;padding:0 12px;border-radius:12px;border:1px solid var(--panel-border);background:#04140c99;color:var(--text);font-size:14px;font-weight:400}.field__control:hover{border-color:#ffffff47}select.field__control{-moz-appearance:none;appearance:none;-webkit-appearance:none;padding-right:38px;text-overflow:ellipsis;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8' fill='none'%3E%3Cpath d='M1 1.5l5 5 5-5' stroke='%239ED9A8' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;background-size:12px 8px}select.field__control option{background:#0b2416;color:var(--text)}select.field__control option:disabled{color:#6f8577}.instrument{margin-bottom:16px}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.note{margin:4px 0 0;font-size:12.5px;font-weight:300;line-height:1.6;color:var(--text-dim)}.processing{padding:14px 0 4px}.processing__track{position:relative;height:2px;width:100%;border-radius:2px;background:#ffffff1a;overflow:hidden}.processing__track:after{content:"";position:absolute;top:0;left:0;height:100%;width:38%;border-radius:2px;background:linear-gradient(90deg,transparent,var(--accent),transparent);box-shadow:0 0 12px #9ed9a8a6;animation:sweep 1.4s var(--ease) infinite}.processing__label{margin:14px 0 0;font-size:14px;font-weight:300;color:var(--text-dim);letter-spacing:.02em}.result__status{display:inline-flex;align-items:center;gap:8px;margin-bottom:12px;font-size:13px;font-weight:400;letter-spacing:.04em;text-transform:uppercase;color:var(--status-unavailable)}.filename--top{margin:0 0 6px}.batch{margin-top:16px}.batch__group{margin:0 0 8px;font-size:13px;font-weight:500;color:var(--text);letter-spacing:.01em}.batch__list{margin:0;padding:0;list-style:none;border:1px solid var(--panel-border);border-radius:14px;overflow:hidden}.batch__list li+li{border-top:1px solid rgba(255,255,255,.07)}.batch__row{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;padding:11px 14px;border:none;background:transparent;color:var(--text);font-size:13.5px;font-weight:400;text-align:left;cursor:pointer;transition:background var(--motion) var(--ease)}.batch__row:hover:not(:disabled){background:#ffffff0f}.batch__row:disabled{cursor:default;opacity:.7}.batch__label{min-width:0}.chip{flex:none;padding:3px 10px;border-radius:999px;border:1px solid currentColor;font-size:11.5px;font-weight:400;letter-spacing:.02em;color:var(--status-unavailable);white-space:nowrap}.chip--detected{color:var(--status-detected)}.chip--not-detected{color:var(--status-not-detected)}.result__spectrum{margin:-4px 0 12px;font-size:12.5px;font-weight:300;color:var(--text-dim)}.result__status:before{content:"";width:8px;height:8px;border-radius:50%;background:currentColor;box-shadow:0 0 10px currentColor}.result__status--detected{color:var(--status-detected)}.result__status--not-detected{color:var(--status-not-detected)}.result__text{margin:0 0 12px;font-size:14.5px;font-weight:400;line-height:1.6;color:var(--text)}.result__text--secondary{color:var(--text-dim);font-weight:300}.details{margin-top:20px;padding-top:18px;border-top:1px solid var(--panel-border);animation:fade var(--motion) var(--ease) both}.details__title{margin:0 0 12px;font-size:15px;font-weight:500}.chart{width:100%;height:auto;display:block;border-radius:14px;background:#04140c80;border:1px solid var(--panel-border)}.chart__caption{margin:8px 0 0;font-size:12px;font-weight:300;color:var(--text-dim)}.table-wrap{margin-top:18px;max-height:260px;overflow-y:auto;border-radius:14px;border:1px solid var(--panel-border)}.table{width:100%;border-collapse:collapse;font-size:13px}.table th,.table td{padding:9px 12px;text-align:left;border-bottom:1px solid rgba(255,255,255,.07);vertical-align:top}.table th{position:sticky;top:0;background:#061a10f0;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);font-weight:500;color:var(--text-dim);font-size:12px;letter-spacing:.02em}.table td{font-weight:300;color:var(--text)}.table tr:last-child td{border-bottom:none}.table__value{font-variant-numeric:tabular-nums;white-space:nowrap}.table__na{color:var(--status-unavailable);font-weight:300}.error{margin:0 0 4px;padding:14px 16px;border-radius:14px;border:1px solid rgba(232,192,122,.35);background:#e8c07a14;color:var(--text);font-size:14px;font-weight:400;line-height:1.55}.filename{margin:14px 0 0;font-size:13px;font-weight:300;color:var(--text-dim);overflow-wrap:anywhere}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.landing__block{animation-name:rise-centered}@keyframes rise-centered{0%{opacity:0;transform:translate(-50%,10px)}to{opacity:1;transform:translate(-50%)}}@keyframes sweep{0%{transform:translate(-100%)}to{transform:translate(320%)}}@media(max-width:560px){.overlay{padding:max(16px,env(safe-area-inset-top)) max(28px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(28px,env(safe-area-inset-left))}.dialog{width:min(100%,320px);max-height:calc(var(--vh) - 32px - env(safe-area-inset-top) - env(safe-area-inset-bottom));padding:16px;border-radius:16px}.dialog__head{align-items:center;gap:10px;margin-bottom:12px}.dialog__title{font-size:16px}.dialog__close{width:26px;height:26px;font-size:13px}.instrument{margin-bottom:12px}.batch{margin-top:12px}.batch__group{font-size:12.5px;margin-bottom:6px}.batch__row{padding:8px 12px;font-size:12.5px;gap:10px}.chip{padding:2px 8px;font-size:10.5px}.drop{min-height:92px;padding:14px;gap:4px;border-radius:12px;font-size:13px}.drop__hint{font-size:11.5px}.requirements{margin-top:14px}.requirements__title{margin-bottom:6px;font-size:13px}.requirements__list{padding-left:16px;font-size:12px;line-height:1.5}.note,.filename{font-size:12px}.field{margin-bottom:10px}.field__label{font-size:12px}.field__control{height:38px;font-size:13px;border-radius:10px}.result__status{font-size:11.5px;margin-bottom:8px}.result__text{font-size:13px;margin-bottom:8px}.processing__label{font-size:13px}.dialog__actions{gap:8px;margin-top:14px}.dialog__actions .pill{flex:1 1 100%;height:38px;padding:0 14px;font-size:13.5px}.details__title{font-size:13.5px}.table{font-size:12px}}@media(hover:none)and (pointer:coarse){.bg{background-color:transparent;background-image:linear-gradient(to bottom,rgba(2,19,8,0) calc(100% - 280px),var(--chin) calc(100% - 120px)),image-set(url(/bg-desktop.webp) type("image/webp"),url(/bg-desktop.jpg) type("image/jpeg"));background-image:linear-gradient(to bottom,rgba(2,19,8,0) calc(100% - 280px),var(--chin) calc(100% - 120px)),-webkit-image-set(url(/bg-desktop.webp) type("image/webp"),url(/bg-desktop.jpg) type("image/jpeg"));background-size:100% 100%,cover;background-position:center,center;background-repeat:no-repeat,no-repeat}}@media(hover:none)and (pointer:coarse)and (orientation:portrait){.bg{background-image:linear-gradient(to bottom,rgba(2,19,8,0) calc(100% - 280px),var(--chin) calc(100% - 120px)),image-set(url(/bg-mobile.webp) type("image/webp"),url(/bg-mobile.jpg) type("image/jpeg"));background-image:linear-gradient(to bottom,rgba(2,19,8,0) calc(100% - 280px),var(--chin) calc(100% - 120px)),-webkit-image-set(url(/bg-mobile.webp) type("image/webp"),url(/bg-mobile.jpg) type("image/jpeg"))}}
