:root{--bg: #0a0a0a;--fg: #f4f4f5;--muted: #9ca3af;--accent: #e11d6b;--card: #161618;--ok: #34d399;color-scheme:dark}*{box-sizing:border-box}html,body,#app{margin:0;height:100%}body{background:var(--bg);color:var(--fg);font:16px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;-webkit-font-smoothing:antialiased}.radar{display:flex;flex-direction:column;min-height:100%;max-width:30rem;margin:0 auto;padding:max(1.25rem,env(safe-area-inset-top)) 1.25rem 1.25rem}.radar__head{display:flex;align-items:center;justify-content:space-between}.radar__head h1{font-size:1.25rem;letter-spacing:-.02em;margin:0}.dot{width:.6rem;height:.6rem;border-radius:50%;background:var(--muted)}.dot--starting{background:#fbbf24;animation:pulse 1s infinite}.dot--live{background:var(--ok)}.enter{margin-top:auto;margin-bottom:auto}.enter h2{margin:0 0 .25rem;font-size:1.5rem;letter-spacing:-.02em}.enter__hint{color:var(--muted);font-size:.95rem}.gate__error{margin:0;color:#f87171;font-size:.9rem}.builder{display:flex;flex-direction:column;gap:1rem;width:100%;max-width:30rem;margin:0 auto;padding:max(1.25rem,env(safe-area-inset-top)) 1.25rem 2rem}.field{display:flex;flex-direction:column;gap:.4rem}.field>span{font-size:.8rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.field>span small{text-transform:none;letter-spacing:0}.field__sub{margin-top:.4rem}.pills{display:flex;flex-wrap:wrap;gap:.4rem}.pill{padding:.45rem .8rem;border:1px solid #27272a;border-radius:999px;background:var(--card);color:var(--fg);font-size:.9rem;cursor:pointer;transition:border-color .12s,background .12s}.pill.is-on{border-color:var(--accent);background:#e11d6b2e}.input{width:100%;padding:.7rem .85rem;border:1px solid #27272a;border-radius:.6rem;background:var(--card);color:var(--fg);font:inherit;resize:vertical}.input::placeholder{color:#52525b}.rule{width:100%;border:none;border-top:1px solid #27272a;margin:.5rem 0}.primary{padding:.95rem;border:0;border-radius:.8rem;background:var(--accent);color:#fff;font-weight:700;font-size:1rem;cursor:pointer}.primary:disabled{opacity:.6;cursor:progress}.link{border:0;background:none;color:var(--muted);cursor:pointer;text-decoration:underline;padding:.5rem}.summary{display:flex;flex-direction:column;gap:.3rem;padding:1rem;border:1px solid #27272a;border-radius:.8rem;background:var(--card);margin:.5rem 0}.summary__row b{color:var(--muted);font-weight:600;margin-right:.4rem;font-size:.85rem}.enter__roles{display:grid;gap:.75rem}.role{display:flex;flex-direction:column;gap:.15rem;padding:1rem 1.25rem;border:1px solid #27272a;border-radius:.9rem;background:var(--card);color:var(--fg);text-align:left;cursor:pointer;transition:border-color .15s,transform .05s}.role:hover{border-color:var(--accent)}.role:active{transform:scale(.99)}.role strong{font-size:1.05rem}.role small{color:var(--muted)}.counts{margin:auto 0;display:grid;grid-template-columns:1fr 1fr;gap:1rem;text-align:center}.count{background:var(--card);border:1px solid #27272a;border-radius:1rem;padding:2rem 1rem}.count__n{display:block;font-size:2.25rem;font-weight:700;letter-spacing:-.03em}.count__l{color:var(--muted);text-transform:uppercase;font-size:.75rem;letter-spacing:.08em}.leave{grid-column:1 / -1;margin-top:.5rem;padding:.85rem;border:1px solid #27272a;border-radius:.9rem;background:transparent;color:var(--muted);cursor:pointer}.leave:hover{color:var(--fg);border-color:#3f3f46}.photo-grid{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.photo-gate{position:relative;aspect-ratio:1;border-radius:.75rem;overflow:hidden;background:var(--card)}.photo-gate__img{width:100%;height:100%;object-fit:cover;display:block;transition:filter .2s}.photo-gate__img.is-veiled{filter:blur(18px)}.photo-gate__veil{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.2rem;border:0;background:#0a0a0a66;color:#fff;cursor:pointer}.photo-gate__veil span{font-weight:600}.photo-gate__veil small{color:#fffc;text-transform:uppercase;letter-spacing:.06em;font-size:.7rem}.photo-gate__veil:disabled{cursor:progress}.reveal{display:flex;flex-direction:column;gap:1rem;width:100%;max-width:30rem;margin:0 auto;min-height:100%;padding:max(1.25rem,env(safe-area-inset-top)) 1.25rem 2rem}.muted{color:var(--muted)}.stages{display:flex;flex-direction:column;gap:1.25rem}.stage{display:flex;flex-direction:column;gap:.6rem;padding:1rem;border:1px solid #27272a;border-radius:.9rem;background:var(--card)}.stage h2{margin:0;font-size:1.1rem}.photo-cell{display:flex;flex-direction:column;gap:.3rem}.photo-cell img.photo-gate__img{aspect-ratio:1;border-radius:.75rem}.wallet{display:flex;flex-direction:column;align-items:center;gap:.1rem;padding:1.25rem;margin:.5rem 0 1rem;border:1px solid #27272a;border-radius:1rem;background:var(--card)}.wallet__sats{font-size:1.75rem;font-weight:700;color:var(--ok)}.wallet__l{color:var(--muted);font-size:.8rem}.offers{list-style:none;margin:1rem 0 0;padding:0;display:flex;flex-direction:column;gap:.75rem}.offer{padding:1rem;border:1px solid #27272a;border-radius:.9rem;background:var(--card)}.offer__head{display:flex;justify-content:space-between;align-items:baseline}.offer__note{margin:.5rem 0}.offer__actions{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.offer__actions .primary{padding:.6rem 1rem;font-size:.9rem}.offer__report{margin-left:auto;color:#f87171}.ok{color:var(--ok)}.offer--venue{border-color:#2f6b4a}.code{margin:0;padding:.7rem .85rem;border:1px solid #27272a;border-radius:.6rem;background:var(--card);color:var(--muted);font-size:.72rem;white-space:pre-wrap;word-break:break-all;-webkit-user-select:all;user-select:all;max-height:8rem;overflow:auto}.coldopen{margin-top:1.5rem;display:flex;flex-direction:column;gap:.6rem}.coldopen h2{margin:0;font-size:1.1rem}.coldopen__row{display:flex;align-items:center;gap:.6rem}.coldopen__row .input{width:6rem}.coldopen__row .primary{margin-left:auto;padding:.6rem 1rem;font-size:.9rem}.ble{max-width:44rem;gap:.85rem}.ble-panel{display:flex;flex-direction:column;gap:.85rem;padding:1rem;border:1px solid #27272a;border-radius:.8rem;background:var(--card)}.ble-panel__head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem}.ble-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem}.ble-grid span{min-width:0;padding:.65rem;border:1px solid #27272a;border-radius:.55rem;background:#101012;color:var(--fg);font-size:.9rem;overflow-wrap:anywhere}.ble-grid b{display:block;margin-bottom:.15rem;color:var(--muted);font-size:.72rem;letter-spacing:.06em;text-transform:uppercase}.ble-flags,.ble-actions{display:flex;flex-wrap:wrap;gap:.5rem}.ble-actions .primary,.ble-actions .leave{flex:1 1 10rem}.ble-pill{display:inline-flex;align-items:center;min-height:2rem;padding:.35rem .65rem;border:1px solid #27272a;border-radius:999px;color:var(--muted);font-size:.8rem}.ble-pill--ok{border-color:#2f6b4a;color:var(--ok);background:#34d39914}.ble-pill--idle{background:#101012}.ble-peers,.ble-log{list-style:none;margin:0;padding:0}.ble-peers{display:flex;flex-direction:column;gap:.6rem}.ble-peer{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.75rem;border:1px solid #27272a;border-radius:.65rem;background:#101012}.ble-peer div:first-child{min-width:0}.ble-peer strong,.ble-peer span{display:block;overflow-wrap:anywhere}.ble-peer span{color:var(--muted);font-size:.82rem}.ble-log{display:flex;flex-direction:column;max-height:18rem;overflow:auto}.ble-log li{display:grid;grid-template-columns:5.5rem minmax(0,1fr);gap:.65rem;padding:.45rem 0;border-top:1px solid #27272a;font-size:.85rem}.ble-log li:first-child{border-top:0}.ble-log time{color:var(--muted)}.ble-log span{overflow-wrap:anywhere}.match-banner{position:fixed;left:50%;bottom:max(1.5rem,env(safe-area-inset-bottom));transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:.1rem;padding:1rem 2rem;border-radius:1rem;background:var(--accent);color:#fff;font-weight:700;box-shadow:0 10px 40px #e11d6b73;animation:bloom .4s cubic-bezier(.2,.8,.2,1.2)}.match-banner small{font-weight:400;opacity:.85}@keyframes bloom{0%{opacity:0;transform:translate(-50%) translateY(.5rem) scale(.9)}to{opacity:1;transform:translate(-50%) translateY(0) scale(1)}}@keyframes pulse{50%{opacity:.3}}
