:root{--ink: #0a0a0a;--paper: #fafafa;--accent: #5f5f5f;--line: #0a0a0a;--ok: #0a0a0a;--err: #0a0a0a;--mono: "Hack", ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;--pixel: "Departure Mono", "Silkscreen", var(--mono)}*{box-sizing:border-box}html,body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--mono);font-size:15px;line-height:1.5;-webkit-font-smoothing:none;font-smooth:never}a{color:var(--ink);text-underline-offset:3px}.wrap{max-width:760px;margin:0 auto;padding:2rem 1.25rem 4rem}header.masthead{border:2px solid var(--line);box-shadow:6px 6px 0 var(--line);padding:1rem 1.25rem;margin-bottom:2rem;background:var(--paper)}header.masthead h1{font-family:var(--pixel);letter-spacing:1px;margin:0;font-size:1.4rem;text-transform:uppercase}header.masthead p{margin:.25rem 0 0;color:var(--accent)}.nav{margin-top:.9rem;display:flex;gap:.5rem;flex-wrap:wrap}.nav a{text-decoration:none;border:2px solid var(--line);padding:.3rem .7rem;text-transform:uppercase;font-size:.8rem;font-weight:700}.nav a:hover{background:var(--ink);color:var(--paper)}.card{border:2px solid var(--line);box-shadow:4px 4px 0 var(--line);padding:1.25rem;margin-bottom:1.5rem;background:var(--paper)}.card h2{margin-top:0;font-family:var(--pixel);font-size:1rem;text-transform:uppercase}.dropzone{border:2px dashed var(--line);padding:2rem 1rem;text-align:center;cursor:pointer;background:repeating-linear-gradient(45deg,transparent,transparent 6px,rgba(0,0,0,.04) 6px,rgba(0,0,0,.04) 7px)}.dropzone.drag{background:var(--ink);color:var(--paper)}button{font-family:var(--mono);font-weight:700;text-transform:uppercase;letter-spacing:.5px;background:var(--ink);color:var(--paper);border:2px solid var(--line);box-shadow:3px 3px 0 var(--line);padding:.6rem 1.1rem;cursor:pointer}button:hover{transform:translate(1px,1px);box-shadow:2px 2px 0 var(--line)}button:active{transform:translate(3px,3px);box-shadow:none}button:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}.msg{border:2px solid var(--line);padding:.6rem .9rem;margin:1rem 0}.msg.ok:before{content:"[ok] ";font-weight:700}.msg.err:before{content:"[erro] ";font-weight:700}table{width:100%;border-collapse:collapse}th,td{border-bottom:1px solid var(--line);padding:.4rem .5rem;text-align:left}th{text-transform:uppercase;font-size:.75rem;color:var(--accent)}.status{font-weight:700}.muted{color:var(--accent)}
