:root{--bg: #0d0221;--bg-2: #190a3b;--panel: #1a0b3a;--panel-2: #250e57;--border: #3a1e6e;--pink: #ff2a6d;--purple: #d300c5;--cyan: #05d9e8;--yellow: #f9f871;--text: #f5e9ff;--text-dim: #b9a7d9;--text-mute: #7a6a99;--ok: #2ee59d;--bad: #ff4757;--radius: 16px;--radius-sm: 10px;--shadow-neon: 0 0 24px rgba(255, 42, 109, .35), 0 0 48px rgba(211, 0, 197, .25);--shadow-card: 0 8px 32px rgba(0, 0, 0, .45);--tap: 52px;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}html,body{height:100%}body{background:radial-gradient(ellipse at 20% 0%,rgba(211,0,197,.18),transparent 55%),radial-gradient(ellipse at 80% 100%,rgba(5,217,232,.15),transparent 55%),var(--bg);color:var(--text);font-size:16px;line-height:1.5;min-height:100vh;overflow-x:hidden}#root{min-height:100vh;display:flex;flex-direction:column}.app{max-width:640px;margin:0 auto;width:100%;padding:0 16px 96px;flex:1;display:flex;flex-direction:column}.header{display:flex;align-items:center;gap:12px;padding:20px 0 8px}.logo{width:44px;height:44px;border-radius:12px;background:linear-gradient(135deg,var(--pink),var(--purple));display:grid;place-items:center;font-size:24px;box-shadow:var(--shadow-neon);flex-shrink:0}.header h1{font-size:26px;font-weight:800;letter-spacing:-.5px;background:linear-gradient(90deg,var(--pink),var(--purple),var(--cyan));-webkit-background-clip:text;background-clip:text;color:transparent}.header .tag{font-size:12px;color:var(--text-mute);margin-top:2px}.tabs{position:sticky;top:0;z-index:10;display:grid;grid-template-columns:repeat(4,1fr);gap:6px;background:linear-gradient(var(--bg),var(--bg) 60%,transparent);margin:0 -16px;padding:10px 16px 12px}.tab{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border);background:var(--panel);color:var(--text-dim);border-radius:var(--radius-sm);min-height:var(--tap);font-size:13px;font-weight:600;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;cursor:pointer;transition:all .15s ease}.tab .tab-icon{font-size:18px}.tab:hover{border-color:var(--purple);color:var(--text)}.tab.active{background:linear-gradient(135deg,var(--pink),var(--purple));border-color:transparent;color:#fff;box-shadow:0 0 18px #ff2a6d80}.card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow-card)}.card+.card{margin-top:12px}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;cursor:pointer;font-weight:700;font-size:15px;border-radius:var(--radius-sm);min-height:var(--tap);padding:0 20px;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:transform .08s ease,box-shadow .15s ease;color:#fff;background:linear-gradient(135deg,var(--pink),var(--purple));box-shadow:0 4px 16px #ff2a6d59;text-decoration:none;width:100%}.btn:hover{transform:translateY(-1px);box-shadow:0 6px 22px #ff2a6d80}.btn:active{transform:translateY(0)}.btn:disabled{opacity:.55;cursor:not-allowed;transform:none}.btn.secondary{background:var(--panel-2);border:1px solid var(--border);box-shadow:none}.btn.ghost{background:transparent;border:1px solid var(--border);color:var(--text-dim);box-shadow:none}.btn.cyan{background:linear-gradient(135deg,var(--cyan),#0090b5);box-shadow:0 4px 16px #05d9e859}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.field label{font-size:13px;font-weight:600;color:var(--text-dim)}.input,.select,textarea{width:100%;background:var(--bg-2);border:1px solid var(--border);color:var(--text);border-radius:var(--radius-sm);padding:14px;font-size:16px;min-height:var(--tap);font-family:inherit}.input:focus,.select:focus,textarea:focus{outline:none;border-color:var(--cyan);box-shadow:0 0 0 3px #05d9e833}textarea{min-height:72px;resize:vertical}.chips{display:flex;flex-wrap:wrap;gap:8px}.chip{border:1px solid var(--border);background:var(--bg-2);color:var(--text-dim);border-radius:999px;padding:10px 16px;font-size:14px;font-weight:600;cursor:pointer;min-height:44px;display:inline-flex;align-items:center;gap:6px;transition:all .15s ease}.chip:hover{border-color:var(--purple);color:var(--text)}.chip.active{background:linear-gradient(135deg,var(--pink),var(--purple));border-color:transparent;color:#fff;box-shadow:0 0 14px #ff2a6d73}.venue{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow-card)}.venue+.venue{margin-top:12px}.venue-tap{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border);color:inherit;font:inherit;display:block;transition:border-color .15s ease,transform .08s ease,box-shadow .15s ease}.venue-tap:hover{border-color:var(--purple);transform:translateY(-1px);box-shadow:var(--shadow-card),0 0 16px #d300c52e}.venue-tap:active{transform:translateY(0);border-color:var(--pink)}.venue-tap-hint{margin-top:10px;font-size:12px;color:var(--text-mute);font-weight:600}.venue-detail{margin-top:12px}.kj-card{display:flex;align-items:center;gap:12px;margin-top:16px;padding:12px;background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius-sm)}.kj-avatar{width:48px;height:48px;border-radius:50%;background:linear-gradient(135deg,var(--purple),var(--pink));display:grid;place-items:center;font-size:24px;flex-shrink:0;box-shadow:0 0 14px #d300c559}.kj-info{display:flex;flex-direction:column;gap:2px}.kj-label{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-mute);font-weight:700}.kj-name{font-size:16px;font-weight:800;color:var(--text)}.meta-pill.kj-pill{color:var(--pink);border-color:#ff2a6d66;background:#ff2a6d14}.premium-blurb{margin-top:12px;font-size:13px;color:var(--text-dim);line-height:1.45;padding:10px 12px;background:#f9f8710f;border:1px solid rgba(249,248,113,.2);border-radius:var(--radius-sm)}.venue-contact{margin-top:12px;display:flex;gap:12px;font-size:12px;color:var(--text-mute);flex-wrap:wrap}.back-btn{margin-bottom:10px;width:auto;align-self:flex-start}.form-blurb{font-size:13px;color:var(--text-dim);margin-bottom:14px;margin-top:-4px}.confirm-text{font-size:14px;color:var(--text-dim);line-height:1.5;margin-bottom:14px}.reserve-info{margin:4px 0 14px}.reserve-blurb{font-size:13px;color:var(--text-dim);line-height:1.5}.reserve-blurb strong{color:var(--yellow);font-weight:700}.venue-header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.venue-name{font-size:18px;font-weight:800;color:var(--text);line-height:1.25}.venue-city{font-size:13px;color:var(--cyan);font-weight:600;margin-top:2px}.venue-dist{background:#05d9e81f;color:var(--cyan);border:1px solid rgba(5,217,232,.3);border-radius:999px;padding:6px 12px;font-size:13px;font-weight:700;white-space:nowrap;flex-shrink:0}.venue-meta{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.meta-pill{background:var(--bg-2);border:1px solid var(--border);color:var(--text-dim);border-radius:8px;padding:5px 10px;font-size:12px;font-weight:600}.meta-pill.nights{color:var(--yellow);border-color:#f9f87159;background:#f9f87114}.venue-vibe{margin-top:10px;font-size:14px;color:var(--text-dim);line-height:1.4}.venue-actions{margin-top:14px;display:flex;gap:8px}.venue-actions .btn{flex:1}.song{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;box-shadow:var(--shadow-card)}.song+.song{margin-top:10px}.song-top{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.song-title{font-size:16px;font-weight:700;color:var(--text);line-height:1.3}.song-artist{font-size:13px;color:var(--pink);font-weight:600;margin-top:1px}.song-score{background:linear-gradient(135deg,var(--cyan),#0090b5);color:#02101a;border-radius:10px;padding:6px 10px;font-size:13px;font-weight:800;white-space:nowrap;flex-shrink:0}.song-reason{margin-top:8px;font-size:13px;color:var(--cyan);font-weight:500}.song-meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.song-notes{margin-top:8px;font-size:12px;color:var(--text-mute);font-style:italic;line-height:1.4}.song-actions{margin-top:10px;display:flex;gap:8px}.song-actions .btn{flex:1}.banner{border-radius:var(--radius-sm);padding:12px 14px;font-size:14px;font-weight:600;margin-bottom:12px;display:flex;align-items:center;gap:8px}.banner.info{background:#05d9e81a;border:1px solid rgba(5,217,232,.35);color:var(--cyan)}.banner.warn{background:#ff47571a;border:1px solid rgba(255,71,87,.35);color:var(--bad)}.banner.ok{background:#2ee59d1a;border:1px solid rgba(46,229,157,.35);color:var(--ok)}.section-title{font-size:13px;font-weight:700;color:var(--text-mute);text-transform:uppercase;letter-spacing:.5px;margin:18px 0 10px}.empty{text-align:center;padding:40px 20px;color:var(--text-mute);font-size:15px}.empty .big{font-size:40px;display:block;margin-bottom:8px}.loading{display:flex;align-items:center;justify-content:center;gap:10px;padding:32px;color:var(--text-dim);font-weight:600}.spinner{width:22px;height:22px;border:3px solid var(--border);border-top-color:var(--pink);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.search-bar{display:flex;gap:8px;margin-bottom:12px}.search-bar .input{flex:1}.footer{text-align:center;font-size:12px;color:var(--text-mute);padding:24px 0}.footer a{color:var(--cyan);text-decoration:none}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:flex-end;justify-content:center;z-index:100;padding:16px}.modal{background:var(--panel);border:1px solid var(--border);border-radius:20px 20px var(--radius) var(--radius);padding:20px;width:100%;max-width:560px;box-shadow:var(--shadow-card),var(--shadow-neon);animation:slideUp .2s ease}@keyframes slideUp{0%{transform:translateY(40px);opacity:0}to{transform:translateY(0);opacity:1}}.modal h3{font-size:20px;font-weight:800;margin-bottom:4px}.modal .modal-sub{font-size:13px;color:var(--text-dim);margin-bottom:16px}.modal-close{float:right;background:transparent;border:none;color:var(--text-dim);font-size:24px;cursor:pointer;width:40px;height:40px;border-radius:50%;display:grid;place-items:center}.modal-close:hover{background:var(--bg-2);color:var(--text)}.price-display{font-size:32px;font-weight:800;color:var(--cyan);margin:8px 0 16px}.price-display small{font-size:14px;color:var(--text-dim);font-weight:600}.star{background:transparent;border:none;font-size:22px;cursor:pointer;padding:4px;filter:grayscale(.6);opacity:.6}.star.active{opacity:1;filter:none}.chat-header{display:flex;justify-content:space-between;align-items:center;padding:14px 16px 10px;border-bottom:1px solid var(--border)}.chat-status{display:inline-block;margin-left:6px;font-size:10px;vertical-align:middle}.chat-status.on{color:var(--ok)}.chat-status.off{color:var(--text-mute)}.chat-messages{height:300px;overflow-y:auto;padding:10px 16px;display:flex;flex-direction:column;gap:10px;scroll-behavior:smooth}.chat-empty{text-align:center;color:var(--text-mute);padding:40px 0;font-size:14px}.chat-msg{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px}.chat-nick{font-weight:700;font-size:13px}.chat-time{font-size:11px;color:var(--text-mute)}.chat-body{flex-basis:100%;font-size:14px;color:var(--text);line-height:1.4;margin-top:1px}.chat-input-row{display:flex;gap:8px;padding:12px 16px;border-top:1px solid var(--border);align-items:center}.chat-nick-input{width:110px;flex-shrink:0}.chat-msg-input{flex:1}.chat-send-btn{width:auto;flex-shrink:0;padding:0 18px}@media (min-width: 640px){.app{padding-bottom:64px}}@media (max-width: 360px){.tab{font-size:11px}.tab .tab-icon{font-size:16px}.header h1{font-size:22px}}
