:root{--bg: #0f1014;--card: #1a1c22;--fg: #f4f4f6;--muted: #9aa0ab;--accent: #6c5ce7;--accent-fg: #fff;--danger: #e74c3c}*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Noto Sans KR,sans-serif;background:var(--bg);color:var(--fg)}.header{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1.25rem;border-bottom:1px solid #262932;position:sticky;top:0;background:var(--bg);z-index:10}.brand{font-weight:700;font-size:1.1rem;color:var(--fg);text-decoration:none}.header-nav{display:flex;align-items:center;gap:.75rem}.header-nav a{color:var(--fg);text-decoration:none}.header-nav select,.header-nav button{background:var(--card);color:var(--fg);border:1px solid #2e323c;border-radius:6px;padding:.35rem .5rem}.container{max-width:960px;margin:0 auto;padding:1.25rem}.concert-grid{list-style:none;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1rem}.concert-card{background:var(--card);border-radius:10px;overflow:hidden}.concert-card a{color:var(--fg);text-decoration:none}.poster,.hero{width:100%;height:auto;display:block}.concert-card-body{padding:.75rem}.badge{display:inline-block;background:var(--accent);color:var(--accent-fg);border-radius:4px;padding:.15rem .5rem;font-size:.75rem}.artist{color:var(--muted);font-size:.9rem}.missing{color:var(--danger);font-size:.75rem}.picker-row{margin:1rem 0}.picker-label{display:block;color:var(--muted);margin-bottom:.5rem;font-size:.85rem}.chips{display:flex;flex-wrap:wrap;gap:.5rem}.chip{background:var(--card);color:var(--fg);border:1px solid #2e323c;border-radius:8px;padding:.5rem .75rem;cursor:pointer;display:flex;flex-direction:column;gap:.15rem}.chip.active{border-color:var(--accent);background:#221f3a}.chip:disabled{opacity:.4;cursor:not-allowed}.slot-remain{font-size:.75rem;color:var(--muted)}.cta{background:var(--accent);color:var(--accent-fg);border:none;border-radius:8px;padding:.85rem 1.25rem;font-size:1rem;cursor:pointer;width:100%}.cta:disabled{opacity:.5;cursor:not-allowed}.cta.sticky{position:sticky;bottom:1rem;margin-top:1.5rem}.dday{background:var(--card);border-radius:10px;padding:1.5rem;text-align:center}.dday-time{display:block;font-size:2rem;font-weight:700;color:var(--accent)}.hold-bar{background:#2a1f1f;color:#ffb4a8;padding:.75rem;border-radius:8px;text-align:center;margin-bottom:1rem}.qty-stepper{display:flex;align-items:center;gap:1rem;font-size:1.5rem}.qty-stepper button{width:2.5rem;height:2.5rem;border-radius:8px;border:1px solid #2e323c;background:var(--card);color:var(--fg)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;display:flex;align-items:center;justify-content:center}.modal{background:var(--card);border-radius:12px;padding:2rem;max-width:360px;text-align:center}.tabs,.chips{margin:1rem 0}.tab{background:none;border:none;color:var(--muted);padding:.5rem 1rem;cursor:pointer;border-bottom:2px solid transparent}.tab.active{color:var(--fg);border-bottom-color:var(--accent)}.ticket-list{list-style:none;padding:0}.ticket-card{background:var(--card);border-radius:10px;padding:1rem;margin-bottom:.75rem;display:flex;justify-content:space-between;align-items:center}.cancel-btn{background:none;border:1px solid var(--danger);color:var(--danger);border-radius:6px;padding:.4rem .75rem;cursor:pointer}.error{color:var(--danger)}.empty{color:var(--muted)}.login form{display:flex;flex-direction:column;gap:1rem;max-width:360px}.login input{padding:.75rem;border-radius:8px;border:1px solid #2e323c;background:var(--card);color:var(--fg)}
