:root{--primary:#006d2f;--primary-container:#25d366;--on-primary-container:#005523;--surface:#f9f9f9;--card:#fff;--line:#bbcbb9;--text:#1a1c1c;--text-dim:#3c4a3d;--error:#ba1a1a;--radius:12px}*{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--surface);color:var(--text);line-height:1.5}.wrap{max-width:640px;margin:0 auto;padding:24px 16px 64px}h1{color:var(--primary);font-size:1.6rem;margin-bottom:4px}h2{font-size:1.1rem;margin-bottom:8px}.dim{color:var(--text-dim);font-size:.9rem}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px;margin-top:16px}.statgrid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:12px;gap:12px;margin-top:16px}.stat{background:var(--card);border:1px solid var(--line);border-top:3px solid var(--primary-container);border-radius:var(--radius);padding:12px;text-align:center}.stat b{display:block;font-size:1.4rem;color:var(--primary)}.stat span{font-size:.75rem;color:var(--text-dim)}.codecard{background:var(--card);border:2px dashed var(--primary);border-radius:var(--radius);padding:20px;margin-top:16px;text-align:center}.codecard .code{font-family:ui-monospace,monospace;font-size:2rem;font-weight:700;letter-spacing:.3em;color:var(--primary)}input,select{width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:8px;font-size:1rem;margin-top:6px}label{font-size:.85rem;color:var(--text-dim);display:block;margin-top:12px}button{background:var(--primary);color:#fff;border:0;border-radius:8px;padding:10px 18px;font-size:1rem;cursor:pointer;margin-top:16px}button:disabled{opacity:.5;cursor:default}button.secondary{background:transparent;color:var(--primary);border:1px solid var(--primary)}button.small{padding:6px 12px;font-size:.85rem;margin-top:0}table{width:100%;border-collapse:collapse;margin-top:8px;font-size:.9rem}td,th{text-align:left;padding:8px 6px;border-bottom:1px solid var(--line)}th{color:var(--text-dim);font-weight:600;font-size:.8rem}.msg{margin-top:12px;padding:10px 12px;border-radius:8px;font-size:.9rem}.msg.ok{background:#e7f6ec;color:var(--on-primary-container)}.msg.err{background:#ffdad6;color:var(--error)}.badge{display:inline-block;padding:2px 8px;border-radius:10px;font-size:.75rem;font-weight:600}.badge.requested{background:#ffe9c9;color:#78511b}.badge.paid{background:#e7f6ec;color:var(--on-primary-container)}.badge.rejected{background:#ffdad6;color:var(--error)}