:root{--bg: #0f172a;--surface: #1e293b;--surface-2: #334155;--border: #475569;--text: #f1f5f9;--muted: #94a3b8;--primary: #2563eb;--primary-hover: #1d4ed8;--success: #16a34a;--success-hover: #15803d;--danger: #dc2626;--warning: #d97706;--radius: 12px}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{margin:0;height:100%}body{background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:16px;overscroll-behavior:none}.app{max-width:720px;margin:0 auto;padding:0 12px env(safe-area-inset-bottom) 12px;min-height:100%}header.topbar{position:sticky;top:0;z-index:10;background:var(--bg);display:flex;align-items:center;gap:8px;padding:12px 0;border-bottom:1px solid var(--border)}header.topbar h1{font-size:18px;margin:0;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.back-link{color:var(--muted);text-decoration:none;font-size:24px;line-height:1;padding:4px 8px}a{color:#93c5fd}h2{font-size:16px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:20px 0 8px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px;margin-bottom:10px}.row{display:flex;gap:8px;align-items:center}.row.wrap{flex-wrap:wrap}.spread{justify-content:space-between}.grow{flex:1;min-width:0}label{display:block;font-size:13px;color:var(--muted);margin-bottom:4px}input,select,textarea{width:100%;background:var(--surface-2);border:1px solid var(--border);color:var(--text);border-radius:8px;padding:12px;font-size:16px;font-family:inherit}input:focus,select:focus,textarea:focus{outline:2px solid var(--primary);border-color:var(--primary)}.field{margin-bottom:12px}button{font-family:inherit;font-size:16px;border:none;border-radius:8px;padding:12px 16px;background:var(--surface-2);color:var(--text);cursor:pointer;min-height:48px}button:active{transform:translateY(1px)}button.primary{background:var(--primary)}button.primary:active{background:var(--primary-hover)}button.success{background:var(--success)}button.danger{background:var(--danger)}button.ghost{background:transparent;border:1px solid var(--border)}button.small{min-height:36px;padding:6px 12px;font-size:14px}button:disabled{opacity:.5}.muted{color:var(--muted)}.tiny{font-size:12px}.big{font-size:20px;font-weight:600}.mono{font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}.list-item{display:flex;align-items:center;gap:10px;padding:12px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);margin-bottom:8px}.pill{display:inline-block;background:var(--surface-2);border-radius:999px;padding:2px 10px;font-size:12px;color:var(--muted)}.empty{text-align:center;color:var(--muted);padding:32px 16px}.queue-item{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:14px;margin-bottom:8px;background:var(--surface);border:2px solid var(--border);border-radius:var(--radius)}.queue-item .bib{font-size:28px;font-weight:700;min-width:64px;text-align:center;font-variant-numeric:tabular-nums}.queue-item .who{flex:1;min-width:0}.queue-item .who .name{font-size:18px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.finish-btn{background:var(--success);min-width:96px;min-height:64px;font-size:18px;font-weight:700}.bib-entry{font-size:32px;text-align:center;font-variant-numeric:tabular-nums;letter-spacing:.08em}.toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%);background:var(--surface-2);border:1px solid var(--border);padding:12px 18px;border-radius:999px;z-index:50;box-shadow:0 6px 24px #0006}.fab-row{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:12px 0}table{width:100%;border-collapse:collapse;font-size:14px}th,td{text-align:left;padding:8px 6px;border-bottom:1px solid var(--border)}th{color:var(--muted);font-weight:600}td.num{font-variant-numeric:tabular-nums;text-align:right}.tabs{display:flex;gap:6px;overflow-x:auto;padding-bottom:4px}.tabs button{white-space:nowrap}.tabs button.active{background:var(--primary)}.offline-badge{font-size:11px;color:var(--success)}
