:root{--background:#f7f8f5;--foreground:#18201c;--muted:#667168;--panel:#fff;--panel-strong:#eef2ed;--border:#d7ded6;--accent:#205f4b;--accent-strong:#133d31;--danger:#a83232;--danger-bg:#fff0ed;--success:#23714e;--success-bg:#edf8f1;--warning:#8a5a00;--warning-bg:#fff8e5}*{box-sizing:border-box}html,body{background:var(--background);min-height:100%;color:var(--foreground);margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}a{color:inherit}button,input,select{font:inherit}.page{min-height:100vh;padding:32px}.shell{width:min(1120px,100%);margin:0 auto}.topbar{justify-content:space-between;align-items:center;gap:24px;margin-bottom:28px;display:flex}.brand{gap:4px;display:grid}.brand h1{letter-spacing:0;margin:0;font-size:clamp(2rem,5vw,4.25rem);line-height:.95}.brand p,.muted{color:var(--muted);margin:0}.demo-banner{border:1px solid var(--border);max-width:420px;color:var(--muted);background:#fff;border-radius:8px;margin:0;padding:10px 14px;font-size:.9rem}.grid{grid-template-columns:minmax(320px,.9fr) minmax(360px,1.1fr);align-items:start;gap:20px;display:grid}.workflow{gap:20px;display:grid}.template-status{border:1px solid var(--border);background:var(--success-bg);width:fit-content;color:var(--success);border-color:#b8dec8;border-radius:999px;grid-template-columns:auto auto;align-items:center;gap:8px;padding:8px 12px;font-size:.9rem;display:grid}.template-status span{color:var(--muted);font-weight:700}.panel{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:22px}.panel h2,.panel h3{margin:0 0 12px}.panel-heading{gap:5px;margin-bottom:18px;display:grid}.panel-heading h2,.panel-heading p{margin:0}.step-kicker{color:var(--accent);letter-spacing:.08em;text-transform:uppercase;font-size:.78rem;font-weight:900}.upload-form{gap:16px;display:grid}.advanced-options{border-top:1px solid var(--border);padding-top:12px}.advanced-options summary{cursor:pointer;color:var(--muted);font-weight:800}.advanced-options[open] summary{margin-bottom:12px}.generate-block{border-top:1px solid var(--border);gap:6px;padding-top:16px;display:grid}.generate-block h3{margin:0}.run-status{color:var(--muted);margin:6px 0 0;padding-left:18px}.progress-panel{gap:16px;display:grid}.progress-meta{color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:8px 14px;font-size:.9rem;font-weight:700;display:flex}.progress-meta span:first-child{color:var(--accent)}.progress-track{background:var(--panel-strong);border-radius:999px;height:10px;overflow:hidden}.progress-bar{border-radius:inherit;background:var(--accent);height:100%;transition:width .6s}.progress-steps{gap:8px;margin:0;padding-left:22px;display:grid}.progress-steps li{color:var(--muted)}.progress-steps li.done{color:var(--success)}.progress-steps li.active{color:var(--foreground);font-weight:800}.proof-tools{border-top:1px solid var(--border);margin-top:18px;padding-top:14px}.proof-tools summary{cursor:pointer;color:var(--muted);font-weight:800}.proof-tools[open] summary{margin-bottom:12px}.field{gap:8px;display:grid}.field label{font-size:.9rem;font-weight:700}.field-hint{color:var(--muted);margin:0;font-size:.86rem;line-height:1.35}.file-input,.select{border:1px solid var(--border);background:#fff;border-radius:6px;width:100%;padding:11px 12px}.test-fixture{border:1px solid var(--border);background:var(--panel-strong);border-radius:8px;grid-template-columns:1fr auto;align-items:center;gap:12px;padding:12px;display:grid}.test-fixture.available{background:var(--success-bg);border-color:#b8dec8}.test-fixture.missing{color:var(--muted)}.test-fixture div{gap:3px;display:grid}.test-fixture span{color:var(--muted);overflow-wrap:anywhere;font-size:.86rem}.proof-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.button{background:var(--accent);color:#fff;cursor:pointer;border:0;border-radius:6px;justify-content:center;align-items:center;padding:12px 14px;font-weight:800;display:inline-flex}.secondary-button{border:1px solid var(--border);min-height:40px;color:var(--foreground);cursor:pointer;background:#fff;border-radius:6px;padding:9px 12px;font-weight:800}.button:disabled{cursor:not-allowed;opacity:.6}.secondary-button:disabled{cursor:not-allowed;opacity:.55}.receipt{gap:18px;display:grid}.status{border:1px solid var(--border);border-radius:8px;padding:16px}.status.success{background:var(--success-bg);color:var(--success)}.status.warning{background:var(--warning-bg);color:var(--warning)}.status.danger{background:var(--danger-bg);color:var(--danger)}.status.neutral{background:var(--panel-strong)}.marker-grid{grid-template-columns:1fr 1fr;gap:12px;display:grid}.marker-list{margin:8px 0 0;padding-left:18px}.review-note{border:1px solid var(--border);background:#fff;border-radius:8px;padding:14px}.review-note h3{margin:0 0 8px}.review-note ul{margin:0;padding-left:18px}.technical-details{border-top:1px solid var(--border);gap:14px;padding-top:14px;display:grid}.technical-details summary{cursor:pointer;color:var(--muted);font-weight:800}.technical-details[open]{gap:16px}.technical-details[open] summary{margin-bottom:4px}.meta{color:#3d4942;overflow-wrap:anywhere;gap:8px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:.82rem;display:grid}.download-row{flex-wrap:wrap;gap:10px;display:flex}.primary-download{display:grid}.download-button{min-height:48px;text-decoration:none}.ready-filename{background:var(--success-bg);color:var(--success);overflow-wrap:anywhere;border-radius:8px;margin:0;padding:12px 14px;font-weight:700}.link-button{border:1px solid var(--border);background:#fff;border-radius:6px;justify-content:center;align-items:center;min-height:40px;padding:9px 12px;font-weight:800;text-decoration:none;display:inline-flex}.error{color:var(--danger);font-weight:700}@media (max-width:860px){.page{padding:18px}.grid,.marker-grid,.test-fixture{grid-template-columns:1fr}.template-status{border-radius:8px;grid-template-columns:1fr;width:100%}.proof-actions{justify-content:stretch}.proof-actions .secondary-button{flex:160px}.topbar{flex-direction:column;align-items:flex-start}}
