:root{--accent:#1f3a5f;--accent-2:#2c5282;--bg:#f5f6f8;--surface:#fff;--text:#1a202c;--muted:#5a6474;--border:#d9dee6;--ok:#1d6b3a;--ok-bg:#e3f4e8;--bad:#a3221c;--bad-bg:#fbe5e3;--warn:#8a5300;--warn-bg:#fff3d6;--info:#1f4f8a;--info-bg:#e5eefb;--mutedc:#4a5361;--muted-bg:#eceff3;--sim:#6b2fa3;--radius:6px;--shadow:0 1px 2px #1018280f;color:var(--text);background:var(--bg);font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:15px;line-height:1.45}*{box-sizing:border-box}body{margin:0}h1{margin:0 0 .25rem;font-size:1.5rem}h2{margin:.25rem 0 .75rem;font-size:1.15rem}h3{margin:.75rem 0 .5rem;font-size:1rem}h4{margin:.75rem 0 .35rem;font-size:.92rem}a{color:var(--accent-2)}code,pre{font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:.86em}.muted{color:var(--muted)}.small{font-size:.85rem}.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.sr-only{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.skip-link{z-index:100;background:#fff;padding:8px;position:absolute;top:0;left:-999px}.skip-link:focus{left:8px}:focus-visible{outline-offset:2px;outline:3px solid #4c8bf5}.row{align-items:center;gap:.5rem;display:flex}.row.wrap{flex-wrap:wrap}.row.space{flex-wrap:wrap;justify-content:space-between}.plain{margin:0;padding:0;list-style:none}.plain li{padding:2px 0}.shell{flex-direction:column;min-height:100vh;display:flex}.topbar{z-index:20;background:var(--accent);color:#fff;align-items:center;gap:1rem;padding:.5rem 1rem;display:flex;position:sticky;top:0}.brand{letter-spacing:.01em;white-space:nowrap;font-weight:650}.topbar-mid{flex:1;align-items:center;gap:.75rem;min-width:0;display:flex}.ws-switch select{color:#fff;border-radius:var(--radius);background:#ffffff1f;border:1px solid #ffffff59;max-width:22rem;padding:.3rem .5rem}.ws-switch option{color:var(--text)}.role-tag{color:#d6e2f3}.user-menu{position:relative}.user-menu .btn-ghost{color:#fff;border-color:#ffffff59}.dropdown{color:var(--text);border:1px solid var(--border);border-radius:var(--radius);z-index:30;background:#fff;min-width:220px;position:absolute;top:110%;right:0;box-shadow:0 8px 24px #00000026}.dropdown-head{border-bottom:1px solid var(--border);padding:.6rem .8rem}.dropdown button{text-align:left;cursor:pointer;width:100%;font:inherit;background:0 0;border:0;padding:.55rem .8rem;display:block}.dropdown button:hover{background:var(--bg)}.menu-btn{color:#fff;display:none}.shell-body{flex:1;display:flex}.sidebar{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;width:220px;padding:.75rem 0;display:flex}.sidebar ul{margin:0;padding:0;list-style:none}.sidebar a{color:var(--text);border-left:3px solid #0000;padding:.45rem 1.1rem;text-decoration:none;display:block}.sidebar a:hover{background:var(--bg)}.sidebar a.active{border-left-color:var(--accent);color:var(--accent);background:#eef2f8;font-weight:600}.sidebar-foot{margin-top:auto;padding:1rem 1.1rem;font-size:.85rem}.main{flex:1;min-width:0;max-width:1400px;padding:1.25rem 1.5rem 3rem}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1rem;display:flex}.page-header p{max-width:60rem;margin:.2rem 0 0}.page-header .actions{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}@media (width<=900px){.menu-btn{min-width:44px;min-height:44px;display:inline-block}.tap-link{align-items:center;min-height:44px;margin:-.85rem -.6rem;padding:0 .6rem;display:inline-flex}.check input[type=checkbox]{flex:none;width:1.25rem;height:1.25rem}.sidebar{z-index:15;transition:transform .2s;position:fixed;top:48px;bottom:0;left:0;transform:translate(-100%);box-shadow:4px 0 16px #0000001a}.sidebar.open{transform:none}.main{padding:1rem}.brand{display:none}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:1rem;padding:1rem 1.1rem}.cards{grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:1rem;display:grid}.cards .card{margin-bottom:0}.grid-2{grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:1rem;display:grid}.empty{text-align:center;color:var(--muted);background:var(--surface);border:1px dashed var(--border);border-radius:var(--radius);margin:.5rem 0 1rem;padding:1.5rem}.center-page{place-items:center;min-height:60vh;display:grid}.metrics{grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:.75rem;margin:1rem 0;display:grid}.metric{background:var(--surface);border:1px solid var(--border);border-left:4px solid var(--border);border-radius:var(--radius);padding:.75rem}.metric-ok{border-left-color:var(--ok)}.metric-bad{border-left-color:var(--bad)}.metric-warn{border-left-color:#d08a00}.metric-info{border-left-color:var(--info)}.metric-muted{border-left-color:#8a94a3}.metric-label{color:var(--muted);font-size:.85rem}.metric-value{font-variant-numeric:tabular-nums;font-size:1.7rem;font-weight:650}.metric-sub{min-height:1.4rem}.table-wrap{overflow-x:auto}.table{border-collapse:collapse;background:var(--surface);width:100%;margin-bottom:.75rem}.table th,.table td{border-bottom:1px solid var(--border);vertical-align:top;text-align:left;padding:.45rem .6rem}.table th{text-transform:uppercase;letter-spacing:.03em;color:var(--muted);background:#fafbfc;font-size:.8rem;font-weight:600}.table.small td,.table.small th{padding:.3rem .45rem}.table tr.revoked td{color:var(--muted);text-decoration:line-through}.table tr.warn-row td{background:var(--warn-bg)}.table code{word-break:break-all}.kv{grid-template-columns:max-content 1fr;gap:.3rem 1rem;margin:0 0 .5rem;display:grid}.kv dt{color:var(--muted)}.kv dd{margin:0}.kv .kv-row{display:contents}.badge{white-space:nowrap;text-transform:lowercase;border:1px solid #0000;border-radius:999px;padding:.08rem .5rem;font-size:.76rem;font-weight:600;display:inline-block}.badge-ok{background:var(--ok-bg);color:var(--ok)}.badge-bad{background:var(--bad-bg);color:var(--bad)}.badge-warn{background:var(--warn-bg);color:var(--warn)}.badge-info{background:var(--info-bg);color:var(--info)}.badge-muted{background:var(--muted-bg);color:var(--mutedc)}.badge-sim{color:var(--sim);border-color:var(--sim);text-transform:uppercase;letter-spacing:.04em;background:#fff}.badge.env-mock{color:var(--sim);background:#f3ecfb}.badge.env-sandbox{background:var(--info-bg);color:var(--info)}.badge.env-production{color:#fff;background:#1a202c}.sub-chip{align-items:center;gap:.25rem;margin:0 .4rem .2rem 0;font-size:.82rem;display:inline-flex}.alert{border-radius:var(--radius);border:1px solid;margin:.5rem 0 .9rem;padding:.65rem .85rem}.alert-info{background:var(--info-bg);border-color:#bcd2f0}.alert-warn{background:var(--warn-bg);border-color:#f0d38f}.alert-success{background:var(--ok-bg);border-color:#b5dfc3}.alert-error{background:var(--bad-bg);border-color:#efb9b4}.alert p{margin:.3rem 0}.error-list{margin:.3rem 0;padding-left:1.2rem}.error-list li{margin:.1rem 0}.btn{background:var(--accent);color:#fff;border:1px solid var(--accent);border-radius:var(--radius);font:inherit;cursor:pointer;white-space:nowrap;justify-content:center;align-items:center;gap:.3rem;padding:.45rem .9rem;font-weight:550;text-decoration:none;display:inline-flex}.btn:hover{background:var(--accent-2)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-secondary{color:var(--accent);background:#fff}.btn-danger{background:var(--bad);border-color:var(--bad);color:#fff}.btn-danger:hover{background:#82170f}.confirm-inline{flex-wrap:wrap;align-items:center;gap:.3rem;display:inline-flex}.btn-secondary:hover{background:#eef2f8}.btn-ghost{color:var(--accent);border-color:var(--border);background:0 0}.btn-ghost:hover{background:var(--bg)}.btn-link{color:var(--accent-2);cursor:pointer;font:inherit;background:0 0;border:0;padding:.3rem 0;text-decoration:underline}.btn-small{padding:.22rem .55rem;font-size:.84rem}.btn-block{width:100%}.btn-icon{cursor:pointer;color:inherit;background:0 0;border:0;padding:.2rem .45rem;font-size:1.25rem;line-height:1}.field{flex-direction:column;gap:.2rem;min-width:0;margin-bottom:.75rem;display:flex}.field label{font-size:.88rem;font-weight:600}.field .help{color:var(--muted);font-size:.8rem}.field-error{color:var(--bad);font-size:.82rem}.field.has-error input,.field.has-error select{border-color:var(--bad)}input,select,textarea{font:inherit;border-radius:var(--radius);color:var(--text);background:#fff;border:1px solid #b9c1cd;width:100%;min-width:0;padding:.4rem .55rem}input[type=checkbox],input[type=radio]{width:auto}input[type=color]{height:2.2rem;padding:.1rem}select[multiple]{min-height:7rem}textarea.code{font-family:ui-monospace,Consolas,monospace;font-size:.85rem}.form-grid{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:0 1rem;display:grid}.form-actions{background:var(--bg);border-top:1px solid var(--border);gap:.6rem;padding:.75rem 0;display:flex;position:sticky;bottom:0}.filters{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-wrap:wrap;align-items:flex-end;gap:.75rem;margin-bottom:1rem;padding:.75rem;display:flex}.filters label{color:var(--muted);flex-direction:column;gap:.2rem;font-size:.82rem;display:flex}.filters input,.filters select{width:auto;min-width:9rem}label.inline{align-items:center;gap:.4rem;display:inline-flex}label.inline select{width:auto}.check{align-items:flex-start;gap:.5rem;margin:.4rem 0 .8rem;font-size:.9rem;display:flex}.checks{border:1px solid var(--border);border-radius:var(--radius);margin:0 0 .75rem;padding:.5rem .75rem}.checks .check{margin:.2rem 0}.radio-row{border:0;flex-direction:column;gap:.3rem;margin:0 0 .6rem;padding:0;display:flex}.input-group{gap:.3rem;display:flex}.input-group select{flex-shrink:0;width:5rem}.line{border:1px solid var(--border);border-radius:var(--radius);margin:0 0 .9rem;padding:.6rem .8rem}.line legend{padding:0 .3rem;font-weight:600}.taxes{border-radius:var(--radius);background:#fafbfc;margin-bottom:.5rem;padding:.5rem .6rem}.taxes-head{margin-bottom:.3rem;font-weight:600}.tax-row{flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:.35rem;display:flex}.tax-row select{width:auto;max-width:28rem}.line-foot{flex-wrap:wrap;align-items:center;gap:1.25rem;font-size:.9rem;display:flex}.totals-card .kv{max-width:28rem}.submission{border:1px solid var(--border);border-radius:var(--radius);border-left:4px solid #8a94a3;margin-bottom:.75rem;padding:.6rem .8rem}.submission.state-accepted{border-left-color:var(--ok)}.submission.state-rejected{border-left-color:var(--bad)}.submission.state-unknown_outcome,.submission.state-reconciliation_required{border-left-color:#d08a00}.submission.state-queued,.submission.state-submitting{border-left-color:var(--info)}.submission header{margin-bottom:.25rem}.submission-detail{border-top:1px solid var(--border);margin-top:.5rem;padding-top:.4rem}code.ref{background:var(--bg);border-radius:4px;padding:.1rem .35rem;font-size:.95rem}.resolve{border-radius:var(--radius);background:#fffaf0;border:1px solid #f0d38f;margin:.5rem 0;padding:.75rem}.validation-authority{border-top:1px solid var(--border);padding-top:.4rem}.sim-select{border:1px dashed var(--sim);border-radius:var(--radius);padding:.25rem .5rem}.pdf-frame{border:1px solid var(--border);border-radius:var(--radius);background:#e9ecef;width:100%;height:720px}.details{margin:.4rem 0}.details summary{cursor:pointer;color:var(--accent-2);font-weight:550}.details-body{padding-top:.4rem}.json{color:#e2e8f0;border-radius:var(--radius);white-space:pre-wrap;word-break:break-word;background:#0f172a;max-height:420px;padding:.75rem;overflow:auto}pre.json.small{font-size:.78rem}.secret{border:1px solid var(--border);border-radius:var(--radius);-webkit-user-select:all;user-select:all;background:#fff;padding:.5rem;overflow-x:auto}.secret.wrap{white-space:pre-wrap;word-break:break-all}.qr{border:1px solid var(--border);border-radius:var(--radius);width:200px;height:200px;margin:.5rem 0;display:block}.columns{word-break:break-all;background:var(--bg);border-radius:var(--radius);padding:.5rem;display:block}.tabs{border-bottom:1px solid var(--border);gap:.25rem;margin-bottom:1rem;display:flex;overflow-x:auto}.tab{font:inherit;cursor:pointer;color:var(--muted);white-space:nowrap;background:0 0;border:0;border-bottom:3px solid #0000;padding:.5rem .8rem}.tab.active{color:var(--accent);border-bottom-color:var(--accent);font-weight:600}.tab .count{background:var(--muted-bg);color:var(--mutedc);border-radius:999px;margin-left:.35rem;padding:0 .4rem;font-size:.75rem}.modal-backdrop{z-index:50;background:#0f172a73;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.modal{color:var(--text);background:#fff;border-radius:8px;width:min(720px,100%);max-height:90vh;overflow:auto;box-shadow:0 20px 50px #00000040}.modal-head{border-bottom:1px solid var(--border);background:#fff;justify-content:space-between;align-items:center;padding:.75rem 1rem;display:flex;position:sticky;top:0}.modal-head h2{margin:0}.modal-body{padding:1rem}.auth-page{background:linear-gradient(180deg, #eef2f8, var(--bg));flex-direction:column;justify-content:center;align-items:center;min-height:100vh;padding:1.5rem;display:flex}.auth-card{border:1px solid var(--border);background:#fff;border-radius:10px;width:min(440px,100%);padding:1.75rem;box-shadow:0 10px 30px #10182814}.auth-brand{color:var(--accent);margin-bottom:.75rem;font-weight:700}.auth-foot{text-align:center;max-width:440px;margin-top:1rem}.steps{padding-left:1.2rem}.steps li{margin-bottom:.6rem}.ws-list{flex-direction:column;gap:.5rem;margin:0 0 1rem;padding:0;list-style:none;display:flex}.ws-item{text-align:left;border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;width:100%;font:inherit;background:#fff;flex-direction:column;gap:.15rem;padding:.7rem .9rem;display:flex}.ws-item:hover{border-color:var(--accent);background:#f7f9fc}.spinner{border:2px solid var(--border);border-top-color:var(--accent);vertical-align:-2px;border-radius:50%;width:.9em;height:.9em;animation:.8s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.suggestions{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);max-height:14rem;margin:.25rem 0 0;padding:.25rem;list-style:none;overflow-y:auto}.suggestions li .btn{text-align:left;white-space:normal;width:100%}.input-qty{text-align:right;width:5.5rem}.total-line{text-align:right;margin-top:.75rem;font-size:1.25rem}.stack{gap:.5rem;margin-top:.75rem;display:grid}.receipt-preview{border:1px solid var(--border,#ddd);border-radius:6px;width:100%;height:520px}
