:root{--bg-primary:#0a0a0f;--bg-secondary:#14141f;--bg-card:#1a1a2e;--bg-elevated:#222240;--text-primary:#e8e8ef;--text-secondary:#9898a8;--text-muted:#5a5a6e;--accent-gold:#d4a853;--accent-red:#c44040;--accent-blue:#4a6fa5;--accent-green:#4a9a6e;--border:#2a2a40;--shadow:#0009;--transition-fast:.15s ease;--transition-normal:.3s ease;--transition-slow:.5s ease}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg-primary);color:var(--text-primary);-webkit-font-smoothing:antialiased;min-height:100vh;font-family:Noto Sans JP,Hiragino Sans,Segoe UI,sans-serif}#root{min-height:100vh}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:var(--bg-primary)}::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}.btn{cursor:pointer;transition:all var(--transition-fast);border:none;border-radius:8px;justify-content:center;align-items:center;gap:6px;padding:10px 20px;font-size:14px;font-weight:600;text-decoration:none;display:inline-flex}.btn-primary{background:var(--accent-gold);color:var(--bg-primary)}.btn-primary:hover{filter:brightness(1.1);transform:translateY(-1px)}.btn-secondary{background:var(--bg-elevated);color:var(--text-primary);border:1px solid var(--border)}.btn-secondary:hover{border-color:var(--accent-gold)}.btn-danger{background:var(--accent-red);color:#fff}.btn-ghost{color:var(--text-secondary);background:0 0}.btn-ghost:hover{color:var(--accent-gold)}.card{background:var(--bg-card);border:1px solid var(--border);transition:border-color var(--transition-fast);border-radius:12px;padding:16px}.card:hover{border-color:var(--accent-gold)}.text-gold{color:var(--accent-gold)}.text-red{color:var(--accent-red)}.text-muted{color:var(--text-muted)}.text-secondary{color:var(--text-secondary)}.pulse{animation:2s cubic-bezier(.4,0,.6,1) infinite pulse}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.ripple{position:relative;overflow:hidden}.ripple:after{content:"";background:radial-gradient(circle, var(--accent-gold) 10%, transparent 10%);opacity:0;transition:transform .5s,opacity .5s;position:absolute;inset:0;transform:scale(10)}.ripple:active:after{opacity:.3;transition:all;transform:scale(0)}@media (width<=480px){.btn{padding:8px 16px;font-size:13px}.card{border-radius:10px;padding:12px}}
