@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/assets/ibm-plex-sans-cyrillic-ext-wght-normal-d45eAU9y.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/assets/ibm-plex-sans-cyrillic-wght-normal-BAAhND-U.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/assets/ibm-plex-sans-greek-wght-normal-CmyJS8uq.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/assets/ibm-plex-sans-vietnamese-wght-normal-Dg1JeJN0.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/assets/ibm-plex-sans-latin-ext-wght-normal-CIII54If.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/assets/ibm-plex-sans-latin-wght-normal-IvpUvPa2.woff2)format("woff2-variations");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 Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff)format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff)format("woff")}:root{--ink:#0e1320;--ink-2:#4a5160;--ink-3:#6b7280;--line:#e5e7eb;--line-2:#d1d5db;--bg:#f7f7f8;--surface:#fff;--hover:#f3f4f6;--ok:#1f7a4d;--ok-bg:#ecf6f0;--warn:#8a5a00;--warn-bg:#fbf4e4;--miss:#5f6670;--miss-bg:#f1f2f4;--bad:#b42318;--bad-bg:#fef3f2;--sans:"IBM Plex Sans Variable","IBM Plex Sans",system-ui,sans-serif;--mono:"IBM Plex Mono",ui-monospace,Consolas,monospace;--ease:cubic-bezier(.16,1,.3,1);--snap:cubic-bezier(.77,0,.175,1);font-family:var(--sans);color:var(--ink);background:var(--bg);font-synthesis:none;-webkit-font-smoothing:antialiased;font-size:16px;line-height:1.55}*{box-sizing:border-box}body{margin:0}button,input{font:inherit}h1,h2,p{margin:0}::selection{background:var(--ink);color:#fff}:focus-visible{outline:2px solid var(--ink);outline-offset:3px}.app{flex-direction:column;min-height:100svh;display:flex}.progress{background:var(--ink);transform-origin:0;z-index:20;height:2px;position:fixed;inset:0 0 auto;transform:scaleX(0)}.app:not(.has-result) .progress{display:none}.topbar{background:var(--surface);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:16px;padding:14px max(20px,50vw - 600px);display:flex}.logo{width:auto;height:64px;display:block}.session{color:var(--ink-3);align-items:center;gap:8px;font-size:13px;display:flex}.session:before{content:"";background:var(--line-2);border-radius:50%;width:7px;height:7px}.session.on{color:var(--ink-2)}.session.on:before{background:var(--ok)}.account{align-items:center;gap:14px;display:flex}.logout{border:1px solid var(--line-2);background:var(--surface);min-height:44px;color:var(--ink);transition:background-color .3s var(--ease);border-radius:8px;align-items:center;padding:8px 14px;font-size:14px;font-weight:600;text-decoration:none;display:inline-flex}.logout:hover{background:var(--hover)}.page{flex:1;width:100%;max-width:1240px;margin:0 auto;padding:clamp(32px,5vw,64px) 20px 48px}.kicker{letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);font-size:12px;font-weight:600}h1{letter-spacing:-.035em;margin:10px 0 12px;font-size:clamp(2.25rem,4.2vw,3.4rem);font-weight:600;line-height:1.02}.word{vertical-align:top;padding-bottom:.08em;display:inline-block;overflow:hidden}.word>span{display:inline-block}.lead{max-width:52ch;color:var(--ink-2);font-size:17px}.uploader{background:var(--surface);border:1px solid var(--line);border-radius:12px;grid-template-columns:minmax(0,1fr) 300px;gap:20px;margin-top:32px;padding:20px;display:grid;position:relative;overflow:hidden}.uploader.working:before{content:"";background:var(--ink);transform-origin:0;height:2px;position:absolute;inset:0 0 auto}.dropzone{border:1px dashed var(--line-2);min-height:148px;transition:border-color .25s var(--ease),background-color .25s var(--ease);background:#fafafb;border-radius:8px;align-items:center;gap:20px;padding:24px;display:flex;position:relative}.dropzone input{z-index:1;opacity:0;cursor:pointer;width:100%;height:100%;position:absolute;inset:0}.dropzone input:disabled{cursor:progress}.dropzone:hover{border-color:var(--ink-3)}.dropzone.ready{border-style:solid;border-color:var(--line-2);background:var(--surface)}.dropzone.dragging{border-style:solid;border-color:var(--ink);background:var(--hover)}.dropzone:focus-within{outline:2px solid var(--ink);outline-offset:3px}.glyph{border:1.5px solid var(--ink);width:42px;height:54px;font-family:var(--mono);letter-spacing:.06em;color:var(--ink);transition:transform .35s var(--ease);background:linear-gradient(225deg,#fafafb 9px,#0000 9px);border-radius:3px;flex:none;place-items:end center;padding-bottom:7px;font-size:9px;font-weight:500;display:grid}.dropzone.ready .glyph{color:#fff;background:linear-gradient(225deg,var(--surface) 9px,var(--ink) 9px)}.dropzone.dragging .glyph{transform:translateY(-4px)}.drop-text{min-width:0}.drop-text label{font-size:16px;font-weight:600;display:block}.drop-hint{color:var(--ink-2);font-size:14px}.file-name{font-family:var(--mono);overflow-wrap:anywhere;font-size:13px}.file-name span{font-family:var(--sans);color:var(--ink-3);font-size:13px;display:block}.help{color:var(--ink-3);margin-top:10px;font-size:12.5px}.actions{align-content:center;gap:14px;display:grid}.mode p{color:var(--ink-3);margin-top:6px;font-size:12.5px}button{cursor:pointer;isolation:isolate;min-height:46px;transition:color .3s var(--ease),border-color .3s var(--ease),background-color .3s var(--ease),transform .15s var(--ease);border:1px solid #0000;border-radius:8px;padding:11px 18px;font-size:15px;font-weight:600;position:relative;overflow:hidden}button:before{content:"";z-index:-1;transform-origin:0;transition:transform .45s var(--snap);position:absolute;inset:0;transform:scaleX(0)}button:hover:not(:disabled):before{transform:scaleX(1)}button:active:not(:disabled){transform:translateY(1px)}.mode button{width:100%}.primary{background:var(--ink);color:#fff}.primary:before{background:#2a3142}.secondary{background:var(--surface);color:var(--ink);border-color:var(--line-2)}.secondary:before{background:var(--hover)}button:disabled{cursor:default;background:var(--hover);border-color:var(--line);color:#9ca3af}.error,.busy{border-radius:8px;grid-column:1/-1;padding:11px 14px;font-size:14px}.intro .error{max-width:640px;margin-top:20px}.error{color:var(--bad);background:var(--bad-bg);border:1px solid #fecdca}.busy{color:var(--ink-2);background:var(--hover);align-items:center;gap:10px;display:flex}.busy:before{content:"";border:2px solid var(--line-2);border-top-color:var(--ink);border-radius:50%;flex:none;width:14px;height:14px}.results{background:var(--surface);border:1px solid var(--line);border-radius:12px;margin-top:28px;scroll-margin-top:20px;overflow:hidden}.result-heading{justify-content:space-between;align-items:flex-end;gap:20px;padding:28px clamp(20px,3vw,32px) 24px;display:flex}.result-heading h2{letter-spacing:-.03em;font-variant-numeric:tabular-nums;margin:6px 0 4px;font-size:clamp(1.9rem,3vw,2.5rem);font-weight:600;line-height:1.05}.result-heading h2:focus{outline:none}.meta{color:var(--ink-3);font-size:14px}.summary{border-top:1px solid var(--line)}.summary dl{grid-template-columns:repeat(3,minmax(0,1fr));margin:0;display:grid}.tally{border-right:1px solid var(--line);padding:18px clamp(20px,3vw,32px) 14px}.tally:last-child{border-right:0}.tally dt{color:var(--ink-3);align-items:center;gap:8px;font-size:13px;display:flex}.tally dt:before{content:"";border-radius:50%;width:8px;height:8px}.tally.ok dt:before,.ratio .ok{background:var(--ink)}.tally.flag dt:before,.ratio .flag{background:#9ca3af}.tally.miss dt:before,.ratio .miss{background:var(--line-2)}.tally dd{letter-spacing:-.02em;font-variant-numeric:tabular-nums;margin:4px 0 0;font-size:clamp(1.5rem,2.4vw,2rem);font-weight:600}.ratio{border-radius:2px;gap:2px;height:4px;margin:0 clamp(20px,3vw,32px) 20px;display:flex;overflow:hidden}.ratio span{min-width:2px}.warnings{border-top:1px solid var(--line);padding:12px clamp(20px,3vw,32px)}.warnings summary{cursor:pointer;color:var(--warn);font-size:14px;font-weight:600}.warnings ul{max-height:220px;color:var(--ink-2);margin:10px 0 4px;padding-left:0;font-size:14px;list-style:none;overflow-y:auto}.warnings li{padding:3px 0}.warnings .mono{min-width:72px;color:var(--ink-3);display:inline-block}.screen-results{border-top:1px solid var(--line);overflow-x:auto}.screen-results:focus-visible{outline-offset:-2px}.screen-results table{min-width:900px}table{border-collapse:collapse;text-align:left;width:100%;font-size:14px}caption{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}th{border-bottom:1px solid var(--line);color:var(--ink-3);white-space:nowrap;background:#fafafb;padding:10px 16px;font-size:12.5px;font-weight:600}td{border-bottom:1px solid var(--line);vertical-align:top;overflow-wrap:anywhere;padding:12px 16px;transition:background-color .15s}tbody tr:last-child td{border-bottom:0}tbody tr:hover td{background:#fafafb}.mono{font-family:var(--mono);font-size:13px}td.mono{white-space:nowrap;overflow-wrap:normal}.num{font-family:var(--mono);color:var(--ink-3);text-align:right;white-space:nowrap;width:1%;font-size:12px}.muted{color:var(--ink-3)}.age{font-variant-numeric:tabular-nums;font-weight:600}.status{white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:2px 8px;font-size:12px;font-weight:500;display:inline-flex}.status.active{color:var(--ok);background:var(--ok-bg)}.status.inactive{color:var(--warn);background:var(--warn-bg)}.status.missing{color:var(--miss);background:var(--miss-bg)}.status.active:before,.status.inactive:before{content:"";background:currentColor;border-radius:50%;width:5px;height:5px}.pagination{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;padding:14px clamp(20px,3vw,32px);display:flex}.pagination span{color:var(--ink-3);font-variant-numeric:tabular-nums;font-size:13px}.pagination button{min-height:44px;padding:7px 14px;font-size:14px}.print-results{display:none}footer{color:var(--ink-3);background:var(--surface);border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;gap:8px 24px;padding:18px max(20px,50vw - 600px);font-size:13px;display:flex}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}.word>span{animation:rise .9s var(--ease) both}.word:nth-child(2)>span{animation-delay:60ms}.word:nth-child(3)>span{animation-delay:.12s}.kicker,.lead{animation:appear .7s var(--ease) both}.lead{animation-delay:.2s}.uploader{animation:appear .7s var(--ease) .3s both}.glyph{animation:land .6s var(--ease) both}.busy:before{animation:.8s linear infinite spin}.uploader.working:before{animation:load 1.2s var(--snap) infinite}.results{animation:appear .6s var(--ease) both}.ratio{animation:wipe 1s var(--snap) .2s both}.screen-results tbody tr{animation:appear .4s var(--ease) both}.screen-results tbody tr:nth-child(2){animation-delay:20ms}.screen-results tbody tr:nth-child(3){animation-delay:40ms}.screen-results tbody tr:nth-child(4){animation-delay:60ms}.screen-results tbody tr:nth-child(5){animation-delay:80ms}.screen-results tbody tr:nth-child(6){animation-delay:.1s}.screen-results tbody tr:nth-child(7){animation-delay:.12s}.screen-results tbody tr:nth-child(n+8){animation-delay:.14s}@supports (animation-timeline:scroll()){.progress{animation:linear both grow;animation-timeline:scroll(root)}}}@keyframes rise{0%{transform:translateY(105%)}to{transform:none}}@keyframes appear{0%{opacity:0}to{opacity:1}}@keyframes land{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:none}}@keyframes spin{to{transform:rotate(1turn)}}@keyframes load{0%{transform:scaleX(0)}70%{opacity:1;transform:scaleX(1)}to{opacity:0;transform:scaleX(1)}}@keyframes wipe{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0)}}@keyframes grow{to{transform:scaleX(1)}}@media (width<=860px){.uploader{grid-template-columns:1fr}}@media (width<=600px){.logo{height:44px}.page{padding-top:28px}.dropzone{min-height:0;padding:18px}.result-heading{flex-direction:column;align-items:stretch}.print-button{width:100%}.tally{padding:14px 12px 10px}.tally dt{font-size:12px}.pagination{gap:8px;padding:12px}.pagination span{text-align:center;font-size:12px}.account{flex-direction:column;align-items:flex-end;gap:4px}footer{flex-direction:column}}@media print{@page{size:landscape;margin:12mm}:root{color:#000;background:#fff;font-size:10pt}.progress,.account,.intro,.uploader,.screen-results,.pagination,.warnings,.print-button,.ratio,footer{display:none!important}.topbar{border-color:#000;padding:0 0 8px}.logo{height:40px}.page{max-width:none;padding:10px 0}.results{border:0;border-radius:0;margin:0;animation:none}.result-heading{padding:0 0 8px}.result-heading h2{font-size:18pt}.summary dl{border:1px solid #888}.tally{border-color:#888;padding:4px 8px}.tally dd{font-size:12pt}.print-results{display:block!important}table{font-size:9pt}th,td{color:#000;border:1px solid #888;padding:4px 6px;background:0 0!important}thead{display:table-header-group}tr{break-inside:avoid}.status{color:#000;padding:0;background:0 0!important}.status:before{display:none}.inactive td{font-weight:700}}
