:root{--bg:#f6f6f3;--surface:#fff;--surface-2:#efefeb;--text:#16171a;--text-muted:#5d6068;--border:#dcdcd6;--accent:#1f5fd6;--accent-text:#fff;--accent-soft:#e4ecfb;--ok:#1d7f45;--error:#b42318;--error-soft:#fdecea;--radius:10px;--font:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, "Cascadia Code", "SF Mono", Consolas, monospace;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#121316;--surface:#1b1d21;--surface-2:#24272c;--text:#ececea;--text-muted:#9a9ea6;--border:#33363c;--accent:#6b9cf5;--accent-text:#0d1424;--accent-soft:#1e2a42;--ok:#4cc27f;--error:#f2786d;--error-soft:#3a1d1b;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--bg:#121316;--surface:#1b1d21;--surface-2:#24272c;--text:#ececea;--text-muted:#9a9ea6;--border:#33363c;--accent:#6b9cf5;--accent-text:#0d1424;--accent-soft:#1e2a42;--ok:#4cc27f;--error:#f2786d;--error-soft:#3a1d1b;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--text);font-family:var(--font);margin:0;font-size:15px;line-height:1.5}.wrap{max-width:1180px;margin:0 auto;padding:0 16px}.site-header{background:var(--surface);border-bottom:1px solid var(--border);z-index:10;position:sticky;top:0}.header-inner{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;min-height:56px;display:flex}.brand{color:var(--text);letter-spacing:-.01em;align-items:center;gap:10px;font-size:18px;font-weight:700;text-decoration:none;display:inline-flex}.brand-mark{fill:currentColor;width:22px;height:22px}.site-nav{flex-wrap:wrap;gap:4px;display:flex}.site-nav a{color:var(--text-muted);border-radius:8px;padding:6px 12px;font-weight:500;text-decoration:none}.site-nav a:hover,.site-nav a[aria-current=page]{color:var(--text);background:var(--surface-2)}.page{padding-top:28px;padding-bottom:48px}.page-title{letter-spacing:-.02em;margin:0 0 4px;font-size:26px;line-height:1.2}.page-lead{color:var(--text-muted);max-width:100%;margin:0 0 24px}.layout{grid-template-columns:minmax(280px,360px) minmax(0,1fr);align-items:start;gap:20px;display:grid}@media (width<=820px){.layout{grid-template-columns:minmax(0,1fr)}}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);min-width:0;padding:18px}.card+.card{margin-top:16px}.card h2{text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin:0 0 12px;font-size:13px;font-weight:600}.stack>*+*{margin-top:14px}.field label,.field .label{margin-bottom:6px;font-size:13px;font-weight:600;display:block}.hint{color:var(--text-muted);margin:4px 0 0;font-size:12.5px}.row{grid-template-columns:1fr 1fr;gap:10px;display:grid}input[type=number],select{width:100%;font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:8px;min-height:38px;padding:8px 10px}input[type=number]:focus,select:focus,button:focus-visible,.segmented input:focus-visible+span,.dropzone:focus-visible{outline:2px solid var(--accent);outline-offset:1px}input[type=number][aria-invalid=true]{border-color:var(--error)}.input-unit{position:relative}.input-unit input{padding-right:44px}.input-unit span{color:var(--text-muted);pointer-events:none;font-size:13px;position:absolute;top:50%;right:10px;transform:translateY(-50%)}.check{cursor:pointer;align-items:flex-start;gap:8px;display:flex}.check input{accent-color:var(--accent);margin-top:3px}.check small{color:var(--text-muted);display:block}.segmented{background:var(--surface-2);border-radius:9px;gap:3px;padding:3px;display:flex}.segmented label{cursor:pointer;flex:1;margin:0}.segmented input{opacity:0;pointer-events:none;position:absolute}.segmented span{text-align:center;color:var(--text-muted);border-radius:7px;padding:6px 8px;font-size:13.5px;font-weight:500;display:block}.segmented input:checked+span{background:var(--surface);color:var(--text);box-shadow:0 1px 2px #0000001f}.btn{font:inherit;border:1px solid var(--border);background:var(--surface);min-height:38px;color:var(--text);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;gap:6px;padding:8px 14px;font-size:14px;font-weight:600;text-decoration:none;display:inline-flex}.btn:hover:not(:disabled){background:var(--surface-2)}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.btn-primary:hover:not(:disabled){background:var(--accent);filter:brightness(1.08)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-row{flex-wrap:wrap;gap:8px;display:flex}.btn-row .btn{flex:auto}.facts{grid-template-columns:auto 1fr;gap:6px 16px;margin:0;font-size:14px;display:grid}.facts dt{color:var(--text-muted)}.facts dd{font-variant-numeric:tabular-nums;text-align:right;overflow-wrap:anywhere;margin:0}.mono{font-family:var(--mono);font-size:13px}.message{border-radius:8px;padding:10px 12px;font-size:14px}.message.error{background:var(--error-soft);color:var(--error)}.message.note{background:var(--accent-soft)}.preview{background:repeating-conic-gradient(var(--surface-2) 0 25%, var(--surface) 0 50%) 0 0 / 20px 20px;border-radius:8px;justify-content:center;align-items:center;min-height:320px;padding:16px;display:flex}.preview svg{width:auto;max-width:100%;height:auto;max-height:62vh;display:block;box-shadow:0 1px 4px #0000002e}.dropzone{border:1.5px dashed var(--border);border-radius:var(--radius);text-align:center;cursor:pointer;color:var(--text-muted);padding:28px 16px;transition:border-color .15s,background .15s}.dropzone strong{color:var(--text)}.dropzone.dragging,.dropzone:hover{border-color:var(--accent);background:var(--accent-soft)}.camera video{aspect-ratio:4/3;object-fit:contain;background:#000;border-radius:8px;width:100%;display:block}.status{color:var(--text-muted);align-items:center;gap:10px;font-size:14px;display:flex}.spinner{border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;flex:none;width:16px;height:16px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.results{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}@media (width<=1000px){.results{grid-template-columns:minmax(0,1fr)}}.figure{margin:0}.figure figcaption{color:var(--text-muted);justify-content:space-between;gap:8px;margin-bottom:8px;font-size:13px;display:flex}.image-box{background:var(--surface-2);border-radius:8px;position:relative;overflow:hidden}.image-box img{width:100%;height:auto;display:block}.image-box svg.overlay{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.log{font-family:var(--mono);background:var(--surface-2);white-space:pre-wrap;overflow-wrap:anywhere;border-radius:8px;margin:0;padding:10px 12px;font-size:12.5px}.empty{color:var(--text-muted);text-align:center;padding:48px 16px}[hidden]{display:none!important}.fieldset{border:0;min-width:0;margin:0;padding:0}.fieldset legend{padding:0}.error-text{color:var(--error)}
