:root{--bg: #121212;--surface: #1e1e1e;--border: #333;--text: #f2f2f2;--muted: #9a9a9a;--accent: #ff6a00;--accent-text: #111;--danger: #ff6b6b;--ok: #5ecb7d;color-scheme:dark}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.45}.screen{max-width:560px;margin:0 auto;padding:16px 16px 88px}.screen.narrow{padding-top:48px;padding-bottom:32px}h1,h2{margin:0 0 8px}h2{font-size:1.15rem;margin-top:8px}.brand{font-weight:800;letter-spacing:.02em;color:var(--accent);font-size:1.4rem}.muted{color:var(--muted)}.small{font-size:.85rem}.stack{display:flex;flex-direction:column;gap:12px}label{display:flex;flex-direction:column;gap:4px;font-size:.9rem;color:var(--muted)}input{font:inherit;padding:12px;border-radius:10px;border:1px solid var(--border);background:var(--surface);color:var(--text)}input:focus{outline:2px solid var(--accent);outline-offset:1px}button{font:inherit;padding:12px 16px;border-radius:10px;border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer}button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text);font-weight:700}button:disabled{opacity:.6;cursor:default}button.link{background:none;border:none;color:var(--accent);padding:4px 0;text-align:left}.error{color:var(--danger);margin:0}.notice{color:var(--ok);margin:0}.tabs{display:flex;gap:8px;margin:16px 0}.tab{flex:1}.tab.active{border-color:var(--accent);color:var(--accent)}.topbar{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:16px}.bottom-nav{position:fixed;left:0;right:0;bottom:0;display:flex;gap:8px;padding:8px 16px calc(8px + env(safe-area-inset-bottom));background:var(--bg);border-top:1px solid var(--border);max-width:560px;margin:0 auto}.cards{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:10px}.card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:14px;display:flex;flex-direction:column;gap:4px}.badge{align-self:flex-start;margin-top:6px;padding:3px 10px;border-radius:999px;background:#2a2a2a;font-size:.85rem}.badge.soldout{background:#4a1f1f;color:var(--danger)}.qr-box{background:#fff;border-radius:12px;padding:12px;align-self:center;min-width:304px;min-height:304px;display:grid;place-items:center;color:#333}a{color:var(--accent)}a.brand{text-decoration:none}a.card{text-decoration:none;color:inherit}a.card:active,a.card:hover{border-color:var(--accent)}textarea{font:inherit;padding:12px;border-radius:10px;border:1px solid var(--border);background:var(--surface);color:var(--text);resize:vertical}textarea:focus{outline:2px solid var(--accent);outline-offset:1px}h3{margin:8px 0 0;font-size:1rem}.row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.pre{white-space:pre-wrap;margin:0}label.check{flex-direction:row;align-items:center;gap:10px;color:var(--text)}label.check input{width:20px;height:20px;padding:0}.badge.ok{background:#1f3d2a;color:var(--ok)}.badge.warn{background:#4a3a1a;color:#ffc15e}button.danger{border-color:var(--danger);color:var(--danger)}a.button,a.tab{display:block;padding:12px 16px;border-radius:10px;border:1px solid var(--border);background:var(--surface);color:var(--text);text-decoration:none;text-align:center}a.tab{flex:1}a.tab.active{border-color:var(--accent);color:var(--accent)}.people{margin:0;padding-left:22px;display:flex;flex-direction:column;gap:4px}video.scanner{width:100%;max-height:300px;border-radius:10px;background:#000;object-fit:cover}code.pre{display:block;word-break:break-all;margin-top:6px;-webkit-user-select:all;user-select:all}select{font:inherit;padding:12px;border-radius:10px;border:1px solid var(--border);background:var(--surface);color:var(--text)}.progress{height:4px;background:var(--border);border-radius:4px;overflow:hidden}.progress>div{height:100%;background:var(--accent);transition:width .2s}.options{display:flex;flex-direction:column;gap:8px}label.option{flex-direction:row;align-items:center;gap:10px;padding:12px;border-radius:10px;border:1px solid var(--border);background:var(--surface);color:var(--text)}label.option.selected{border-color:var(--accent)}label.option input{width:18px;height:18px;padding:0;flex:none}input[type=range]{padding:0;accent-color:var(--accent)}.steps{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:6px}.badge.draft{background:#2a2a3a;color:#9db4ff}.badge.pending{background:#4a3a1a;color:#ffc15e}
