:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;color:#193044;background:#f5f5f0;font-synthesis:none;--navy:#142c3e;--muted:#637180;--line:#dde2df;--accent:#e8b364}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a,input,select,summary,.drop{touch-action:manipulation}button{cursor:pointer}button:disabled{cursor:default;opacity:.45}a{color:inherit}header{height:82px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding:0 max(28px,calc((100vw - 1480px)/2));background:#fff}.brand{text-decoration:none;display:flex;align-items:center;gap:12px;font-size:17px;font-weight:700;letter-spacing:-.4px}.mark{display:grid;place-items:center;background:var(--navy);color:#f0c67d;width:38px;height:38px;font-size:30px;border-radius:10px}.privacy{font-size:12px;color:#426653;display:flex;align-items:center;gap:8px}.privacy>span{width:7px;height:7px;border-radius:50%;background:#6e9977}main{max-width:1480px;margin:auto;padding:42px 28px}.intro{display:flex;align-items:end;justify-content:space-between;margin-bottom:30px;gap:20px}.eyebrow{font-size:10px;font-weight:700;letter-spacing:2px;color:#718276;margin:0 0 12px}h1{font-size:clamp(27px,3.1vw,43px);line-height:1.15;letter-spacing:-1.5px;margin:0}p{line-height:1.55}.subtitle{color:var(--muted);font-size:15px;margin:13px 0 0}.tag{font-size:9px;letter-spacing:1.1px;border:1px solid #d9dfd6;border-radius:5px;padding:9px;white-space:nowrap;color:#697866}.workspace{display:grid;grid-template-columns:316px minmax(0,1fr);gap:24px;align-items:start}.panel{background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 3px 12px #19304403}.controls{padding:23px}h2{font-size:14px;font-weight:650;margin:0;letter-spacing:-.2px}.step{font-size:10px;color:#6c7a86;margin-right:8px}.drop{display:flex;align-items:center;flex-direction:column;text-align:center;gap:6px;background:#f6f8f7;border:1px dashed #b8c9be;border-radius:9px;padding:20px 10px;cursor:pointer;margin-top:18px;font-size:12px}.drop:hover,.drop.drag{border-color:#5a8064;background:#eff5ee}.drop .upload-icon{font-size:27px;color:#5d7968;line-height:1;padding-bottom:7px}.drop strong{font-size:12px;font-weight:600}.drop small{font-size:9px;margin-top:7px}.drop span:not(.upload-icon),small{color:var(--muted)}.file-info{font-size:10px;color:var(--muted);overflow-wrap:anywhere;margin:10px 0 25px}fieldset{border:0;padding:0;margin:0;min-width:0}fieldset h2{margin-bottom:20px}.two{display:grid;grid-template-columns:1fr 1fr;gap:13px}label:not(.drop):not(.check){display:flex;flex-direction:column;font-size:11px;font-weight:550;gap:8px;margin-bottom:18px}input[type=number],select{padding:11px;border:1px solid #d7dfdf;border-radius:6px;color:var(--navy);background:#fff;min-width:0;width:100%;font-size:12px}input:focus-visible,select:focus-visible,button:focus-visible,summary:focus-visible,a:focus-visible,.drop:focus-visible{outline:3px solid #d3a44c;outline-offset:3px}.check{display:flex;align-items:center;gap:7px;font-size:11px;font-weight:450;cursor:pointer}.check input{accent-color:#294d43}.controls .check{margin:0 0 20px}.advanced{border-top:1px solid #e9edeb;padding-top:13px;margin:6px 0 17px;font-size:11px;color:var(--muted)}summary{cursor:pointer}.advanced label{margin-top:15px}.advanced p{font-size:10px}.primary{width:100%;background:var(--navy);color:#fff;padding:14px;border:0;border-radius:7px;font-size:12px;font-weight:550;display:flex;justify-content:space-between}.primary:hover:not(:disabled){background:#26495d}.primary span{color:#efc77f}.secondary{width:100%;margin-top:10px;border:1px solid #dce2dd;border-radius:7px;padding:10px;background:#fff;color:#43594b;font-size:10px}.local-note{font-size:10px;color:var(--muted);text-align:center;margin:18px 0 0}.results{min-width:0}.viewer{padding:21px}.viewer-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:22px}.images{display:grid;grid-template-columns:1fr 1fr;gap:12px}figure{margin:0;min-width:0}figcaption{display:flex;justify-content:space-between;font-size:8px;font-weight:650;letter-spacing:1.1px;color:#737f87;margin:0 0 10px}.image-stage{aspect-ratio:4/3;background:#14283a;border-radius:6px;position:relative;display:grid;place-items:center;overflow:hidden}.image-stage canvas{width:100%;height:100%;object-fit:contain;position:absolute;inset:0}.empty{color:#a8b6bd;text-align:center;font-size:12px}.empty>span{font-size:43px;font-weight:200;opacity:.45}.empty p{margin:10px 0;line-height:1.7}.grid-empty{background:linear-gradient(#9cafbb0c 1px,transparent 1px),linear-gradient(90deg,#9cafbb0c 1px,transparent 1px);background-size:24px 24px;width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center}.legend{display:flex;align-items:center;gap:9px;font-size:9px;color:#76818a;margin:18px 0 17px}.legend b{font-weight:500;color:#344d5c}.ramp{height:5px;flex:1;max-width:160px;border-radius:4px;background:linear-gradient(90deg,#ffeb73,#f49135,#bf3a5d,#682c7d,#23143f)}.unknown-key{display:flex;align-items:center;gap:5px;margin-left:auto}.unknown-key:before{content:"";width:7px;height:7px;background:#5e6771;border-radius:2px}.inspect{border-top:1px solid #e9eeeb;padding-top:13px;color:#627583;font-size:11px;min-height:31px;line-height:1.5}.status-box{display:flex;align-items:center;gap:10px;font-size:11px;color:#536858;margin:17px 3px;min-height:20px}.status-dot{width:7px;height:7px;border-radius:50%;background:#809d87;flex-shrink:0}.working .status-dot{background:#dbab55;animation:pulse 1s infinite}.error{color:#ae433f}.error .status-dot{background:#ae433f}.summary{display:grid;grid-template-columns:1fr 1.5fr 1fr;gap:10px;margin:14px 0}.summary>div{border:1px solid var(--line);border-radius:8px;background:#edeee8;padding:15px}.summary span{display:block;font-size:8px;letter-spacing:.7px;color:#6f7d79;margin-bottom:9px}.summary strong{font-size:17px;font-weight:600}.exports{padding:20px;margin:18px 0}.exports p{font-size:11px;color:var(--muted);margin:7px 0 15px}.export-buttons{display:flex;gap:7px;flex-wrap:wrap}.export-buttons button{border:1px solid #d7dfd9;background:#f7f9f6;padding:9px 12px;font-size:10px;border-radius:5px;color:#344d40}.export-buttons button:hover{background:#e9f0e8}.array-section{padding:18px;margin-top:16px;font-size:12px}.array-section summary{font-weight:600}.array-section summary span{font-weight:400;font-size:10px;margin-left:8px;color:var(--muted)}.array-section p{font-size:10px;color:var(--muted)}.table-scroll{max-height:320px;overflow:auto}table{font-size:10px;border-collapse:collapse;font-variant-numeric:tabular-nums}th,td{padding:8px;border:1px solid #e5e9e5;text-align:right;white-space:nowrap;min-width:58px}th{background:#eff3ef;position:sticky;top:0;font-weight:550}th:first-child{left:0}.caveat{padding:18px 4px 0;color:#7b837b;font-size:10px}.caveat strong{font-weight:600;color:#56675a}.caveat p{margin:7px 0;line-height:1.7}footer{max-width:1424px;margin:5px auto 25px;border-top:1px solid var(--line);padding:19px 0;display:flex;align-items:center;gap:23px;font-size:10px;color:#839087}footer span{margin-right:auto}footer a{text-decoration:none}footer a:hover{text-decoration:underline}[hidden]{display:none!important}@keyframes pulse{50%{opacity:.3}}@media(max-width:1050px){.workspace{grid-template-columns:275px minmax(0,1fr);gap:18px}.controls{padding:19px}.tag{display:none}.viewer{padding:16px}.images{gap:8px}.summary strong{font-size:14px}footer{margin-left:28px;margin-right:28px}}@media(max-width:760px){header{height:70px;padding:0 20px}.brand{font-size:14px}.privacy{font-size:9px}.privacy>span{display:none}main{padding:28px 18px}.workspace{grid-template-columns:1fr}.controls{padding:20px}.intro{margin-bottom:23px}h1{font-size:30px}.subtitle{font-size:13px}.controls .drop{padding:15px}.controls .file-info{margin-bottom:20px}.image-stage{aspect-ratio:3/4}.summary>div{padding:12px 9px}.summary strong{font-size:13px}footer{flex-wrap:wrap;gap:10px;margin:0 18px 20px}footer span{flex-basis:100%}.viewer-top h2{font-size:12px}.legend{gap:6px}.ramp{max-width:100px}}@media(prefers-reduced-motion:reduce){*{animation:none!important}}
